向量引擎统计语法用于对指定表中的数据进行聚合查询和统计分析。通过配置统计函数、分组字段等参数,可以灵活地获取所需的数据统计结果。支持的统计操作包括但不限于最大值(max)、最小值(min)、平均值(avg)等,并且可以通过设置不同的分组字段实现多维度的数据分析。
Java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import com.aliyun.ha3engine.vector.Client;
import com.aliyun.ha3engine.vector.models.AggFuncDesc;
import com.aliyun.ha3engine.vector.models.AggregateRequest;
import com.aliyun.ha3engine.vector.models.Config;
import com.aliyun.ha3engine.vector.models.SearchResponse;
import com.aliyun.tea.TeaException;
import org.junit.Before;
import org.junit.Test;
public class AggregateService {
/**
* 问天引擎client
*/
private Client client;
@Before
public void clientInit() throws Exception {
/*
初始化问天引擎client
*/
Config config = new Config();
// 实例名称,可在实例详情页左上角查看,例:ha-cn-i7*****605
config.setInstanceId("ha-cn-i7*****605");
// 用户名,可在实例详情页>API入口 查看
config.setAccessUserName("username");
// 密码,可在实例详情页>API入口 修改
config.setAccessPassWord("password");
// API域名,可在实例详情页>API入口 查看
config.setEndpoint("ha-cn-i7*****605.public.ha.aliyuncs.com");
client = new Client(config);
}
@Test
public void aggregate() throws Exception {
try {
AggregateRequest request = new AggregateRequest();
request.setTableName("test1");// 需要统计的表名
request.setGroupKeys(Arrays.asList("count"));// 分组统计的字段列表
List<AggFuncDesc> aggFuncDescList = new ArrayList<>();// 统计函数列表
AggFuncDesc aggFuncDesc = new AggFuncDesc();
aggFuncDesc.setFunc("max");// 统计函数名
aggFuncDesc.setArgs(Arrays.asList("count"));// 统计函数的参数
aggFuncDescList.add(aggFuncDesc);
request.setAggFuncs(aggFuncDescList);
SearchResponse searchResponse = client.aggregate(request);
System.out.println("搜索结果:\n" + searchResponse.getBody());
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map<String, Object> exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}
Python
from alibabacloud_ha3engine_vector.client import Client
from alibabacloud_ha3engine_vector.models import Config, AggregateRequest, AggFuncDesc
config = Config(
# API域名,可在实例详情页>API入口 查看
endpoint="http://ha-cn-i7*****605.public.ha.aliyuncs.com",
# 用户名,可在实例详情页>API入口 查看
access_user_name="username",
# 密码,可在实例详情页>API入口 修改
access_pass_word="password",
runtime_options=runtime_options)
client = Client(config)
def aggregate():
agg_func = AggFuncDesc(func="max",
args=["count"])
agg_funcs = [agg_func]
request = AggregateRequest(table_name="test1",
group_keys=["count"],
agg_funcs=agg_funcs)
result = client.aggregate(request)
print(result.body)
if __name__ == "__main__":
aggregate()
Go
package main
import (
"fmt"
"github.com/alibabacloud-go/tea-utils/v2/service"
"github.com/alibabacloud-go/tea/tea"
ha3engine "github.com/aliyun/alibabacloud-ha3-go-sdk/client"
"sync"
)
func main() {
// 创建请求客户端实例
config := &ha3engine.Config{
// API域名,可在实例详情页>API入口 查看
Endpoint: tea.String("ha-cn-i7*****605.public.ha.aliyuncs.com"),
// 用户名,可在实例详情页>API入口 查看
AccessUserName: tea.String("username"),
// 密码,可在实例详情页>API入口 修改
AccessPassWord: tea.String("password"),
RuntimeOptions: &service.RuntimeOptions{
KeepAlive: tea.Bool(true),
MaxIdleConns: tea.Int(1000),
ReadTimeout: tea.Int(1000),
},
}
// 初始化一个client, 用以发送请求.
client, _clientErr := ha3engine.NewClient(config)
// 如果 NewClient 过程中出现异常. 则 返回 _clientErr 且输出 错误信息.
if _clientErr != nil {
fmt.Println(_clientErr)
return
}
aggregate(client)
}
func aggregate(client *ha3engine.Client) {
request := &ha3engine.AggregateRequest{}
request.SetTableName("test1")
groupKeys := make([]*string, 1)
groupKeys[0] = tea.String("count")
request.SetGroupKeys(groupKeys)
aggFuncDescs := make([]*ha3engine.AggFuncDesc, 1)
args := make([]*string, 1)
args[0] = tea.String("count")
aggFuncDescs[0] = &ha3engine.AggFuncDesc{
Func: tea.String("max"),
Args: args,
}
request.SetAggFuncs(aggFuncDescs)
response, _requestErr := client.Aggregate(request)
// 如果 发送请求 过程中出现异常. 则 返回 _requestErr 且输出 错误信息.
if _requestErr != nil {
fmt.Println(_requestErr)
return
}
// 输出正常返回的 response 内容.
fmt.Println(response)
}
Java异步
import com.aliyun.ha3engine.async.AsyncClient;
import com.aliyun.ha3engine.async.models.AggFuncDesc;
import com.aliyun.ha3engine.async.models.AggregateRequest;
import com.aliyun.ha3engine.async.models.OrderByDesc;
import com.aliyun.ha3engine.async.models.SearchResponse;
import com.aliyun.sdk.ha3engine.async.core.AsyncConfigInfoProvider;
import com.aliyun.tea.TeaException;
import darabonba.core.client.ClientOverrideConfiguration;
import org.junit.Before;
import org.junit.Test;
import java.util.Arrays;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
public class AggregateService {
/**
* 问天引擎client
*/
private AsyncClient client;
@Before
public void clientInit() {
// 配置实例的用户名密码, 可在实例详情页>API入口 查看
AsyncConfigInfoProvider provider = AsyncConfigInfoProvider.create("username", "password");
// 初始化异步客户端
client = AsyncClient.builder()
.credentialsProvider(provider)
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setEndpointOverride("ha-cn-i7*****605.public.ha.aliyuncs.com")
.setProtocol("http")
).build();
}
@Test
public void aggregate() {
try {
AggregateRequest request = AggregateRequest.builder()
.tableName("test1")// 查询的表名
.aggFuncs(Arrays.asList(
AggFuncDesc.builder()
.func("max")// 统计函数
.args(Arrays.asList("age"))// 统计字段
.build()
))// 统计函数
.groupKeys(Arrays.asList("age"))// 分组字段
.orderBy(Arrays.asList(
OrderByDesc.builder()
.field("age")// 排序字段
.direction("desc")// 排序方式
.build()
))// 排序字段
.build();
CompletableFuture<SearchResponse> responseCompletableFuture = client.aggregate(request);
String responseBody = responseCompletableFuture.get().getBody();
System.out.println("aggregate result:" + responseBody);
} catch (ExecutionException | InterruptedException e) {
System.out.println(e.getMessage());
} catch (TeaException e) {
System.out.println(e.getCode());
System.out.println(e.getMessage());
Map<String, Object> exceptionData = e.getData();
System.out.println(com.aliyun.teautil.Common.toJSONString(exceptionData));
}
}
}
该文章对您有帮助吗?