XL-LightHouse
新一代实时计算底座

Http数据查询API

作者:admin
最后编辑:2024-12-12 21:11:10

本篇文章介绍如何使用Http版本API查询各数据指标的统计结果,在调用API之前请首先确保与部署服务器的4061端口和18101端口网络互通。

创建调用方

在使用本功能前,请您首先参考 调用方管理 创建调用方,调用方管理提供API接口的访问授权校验、调用量监控等相关功能!

在已创建完成调用方并已申请相应元素访问授权的前提下,再进行以下操作!

数据查询API说明

以下使用lighthouse-ips代指您的LightHouse部署节点IP。如果为集群模式,可使用集群的所有节点IP,推荐使用轮询请求方式避免热点问题,如果为单机模式则为当前部署节点IP。

按照批次时间查询单个维度的统计结果

1、接口地址

2、Header参数

Caller-Name:调用方名称
Caller-Key:调用方秘钥
  • callerName: 调用方名称;
  • callerKey: 调用方秘钥,在“调用方列表 - 选择相应调用方 - 管理 - 秘钥”栏目中获取;

3、包体参数格式

{"batchList":[1725498000000,1725494400000,1725490800000,1725487200000,1725483600000],"dimensValue":"山东省","statId":"1100607"}
  • statId: 统计项ID,所需要查询统计结果的数据指标的ID;
  • dimensValue,单个维度信息,没有维度的统计指标请传null;
  • batchList,批次时间(数组结构),请使用13位时间戳;

按照时间范围查询单个维度的统计结果

1、接口地址

2、Header参数

Caller-Name:调用方名称
Caller-Key:调用方秘钥
  • callerName: 调用方名称;
  • callerKey: 调用方秘钥,在“调用方列表 - 选择相应调用方 - 管理 - 秘钥”栏目中获取;

3、包体参数格式

{"dimensValue":"山东省","endTime":1729439999999,"startTime":1729353600000,"statId":"1100607"}
  • statId: 统计项ID,所需要查询统计结果的数据指标的ID;
  • dimensValue,单个维度信息,没有维度的统计指标请传null;
  • startTime: 查询开始时间,请使用13位时间戳;
  • endTime: 查询结束时间,请使用13位时间戳;

按照批次时间批量查询多个维度的统计结果

1、接口地址

2、Header参数

Caller-Name:调用方名称
Caller-Key:调用方秘钥
  • callerName: 调用方名称;
  • callerKey: 调用方秘钥,在“调用方列表 - 选择相应调用方 - 管理 - 秘钥”栏目中获取;

3、包体参数

{"batchList":[1725498000000,1725494400000,1725490800000,1725487200000,1725483600000],"dimensValueList":["21","72","36"],"statId":"1100613"}
  • statId: 统计项ID,所需要查询统计结果的数据指标的ID;
  • dimensValueList,维度信息列表;
  • batchList,批次时间(数组结构),请使用13位时间戳;

按照时间范围批量查询多个维度的统计结果

1、接口地址

2、Header参数

Caller-Name:调用方名称
Caller-Key:调用方秘钥
  • callerName: 调用方名称;
  • callerKey: 调用方秘钥,在“调用方列表 - 选择相应调用方 - 管理 - 秘钥”栏目中获取;

3、包体参数格式如下

{"dimensValueList":["21","72","36"],"endTime":1729439999999,"startTime":1729353600000,"statId":"1100613"}
  • statId: 统计项ID,所需要查询统计结果的数据指标的ID;
  • dimensValueList,维度信息列表;
  • startTime: 查询开始时间,请使用13位时间戳;
  • endTime: 查询结束时间,请使用13位时间戳;

按照批次时间查询Limit统计结果

1、接口地址

2、Header参数

Caller-Name:调用方名称
Caller-Key:调用方秘钥
  • callerName: 调用方名称;
  • callerKey: 调用方秘钥,在“调用方列表 - 选择相应调用方 - 管理 - 秘钥”栏目中获取;

3、包体参数格式

{"batchTime":1729415100000,"statId":"1100617"}
  • statId: 统计项ID,所需要查询统计结果的数据指标的ID;
  • batchTime,批次时间;

部分参数说明

startTime、endTime参数

  • 查询统计结果的起止时间,系统自动计算起止时间范围内的所有批次数据并返回,请使用13位时间戳。

batchTime、batchList参数

系统按照统计项TimeParam参数划分统计周期,使用每个统计周期时间窗口的开始时间作为统计周期的批次时间,在传递batchTime、batchList相关参数时,请使用13位时间戳。 batchTime为一个批次时间,batchList为数组结构,可传入多个批次时间。

示例如下:

  • 比如统计某业务每分钟访问PV,则2024-05-02 13:15:00代表2024-05-02 13:15:00 至 2024-05-02 13:16:00的统计数据对应的批次时间。

  • 统计业务每2小时访问UV,则2024-05-02 14:00:00代表2024-05-02 14:00:00 至 2024-05-02 16:00:00的统计数据对应的批次时间。

  • 统计业务每天的订单量,则2024-05-02 00:00:00代表2024-05-02 00:00:00 至 2024-05-02 23:59:59的统计数据对应的批次时间。

dimensValue、dimensValueList参数

dimensValue为字符串类型,传递单个纬度值,dimensValueList为数组结构,传递一个或多个纬度值。

示例如下:

  • 查询业务每天订单金额,
<stat-item title="每天_订单金额" stat="sum(amount)" />

该统计项没有统计维度,则dimensValue传值null。

  • 查询每个各省份订单金额。
<stat-item title="每天_各省份_订单金额" stat="sum(amount)" dimens="provinceId"/>

该示例维度参数为省份,请传省份参数信息,格式示例:10101 或 10102。

  • 查询每个省份各个业务线的订单金额,该示例为维度查询,请按照
<stat-item title="每天_各省份_各业务线_订单金额" stat="sum(amount)" dimens="province;biz"/>

该示例维度参数为省份和业务线,请按照province;biz的格式拼接维度参数,格式示例:山东省;手机业务 或 河北省;外卖业务,务必按照dimens中的各维度字段的顺序进行排列并使用分号分割。

调用示例

使用JavaAPI调用dataDurationQueryWithDimensList接口

    @Test
    public void testDataDurationQueryWithDimensList() throws Exception {
        String apiUrl = "http://10.206.6.31:18101/api/rpc/v1/dataDurationQueryWithDimensList";
        Map<String,Object> requestMap = new HashMap<>();
        requestMap.put("statId","1100613");
        List<String> list = List.of("21","72","36");
        requestMap.put("dimensValueList",list);
        requestMap.put("startTime", DateUtil.getDayStartTime(System.currentTimeMillis()));
        requestMap.put("endTime", DateUtil.getDayEndTime(System.currentTimeMillis()));
        String requestParams = JsonUtil.toJSONString(requestMap);
        System.out.println("requestParams:" + JsonUtil.toJSONString(requestParams));
        RequestBody body = RequestBody.create(MediaType.parse("application/json"),requestParams);
        Request request = new Request.Builder()
                .header("Caller-Name",callerName)
                .header("Caller-Key",callerKey)
                .url(apiUrl)
                .post(body)
                .build();
        try (Response response = client.newCall(request).execute()) {
            if (!response.isSuccessful()) {
                throw new IOException("Unexpected code " + response);
            }
            System.out.println(response.body().string()) ;
        }
    }

使用Postman模拟调用

  • 设置Header参数 XL-LightHouse

  • 设置包体参数,使用Post请求方式 XL-LightHouse

补充说明

  • 本SDK提供基础验签机制,如果您对SDK使用安全性方面有更高要求,可以在本SDK的基础上额外增加数据加密或签名验证等处理流程。
  • 本文的范例代码请参考单元测试:com.dtstep.lighthouse.core.test.api.HttpDataQueryTest