向量引擎统计语法

向量引擎统计语法用于对指定表中的数据进行聚合查询和统计分析。通过配置统计函数、分组字段等参数,可以灵活地获取所需的数据统计结果。支持的统计操作包括但不限于最大值(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));
        }
    }
}