调用 QueryDataset 查询下钻数据集中的数据。

调试

您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。

描述

QueryDataSet 可用于查询 ARMS 下钻数据集中的数据。

说明 关于下钻数据集和通用数据集的区别,请参考通用维度与下钻维度
API 名称 Request Response
QueryDataSet QueryDataSetRequest QueryDataSetResponse

请求参数

请求参数包含公共参数和业务参数。

公共参数

公共请求参数参见公共参数

业务参数

阿里云将用户所有的请求参数封装在一个 Request 中,返回一个 Response。QueryDataSetRequest 包含以下字段:

字段名称 字段类型 设置方法 字段含义 是否必选 备注
datasetId Long setDatasetId 数据集 ID N/A
minTime Long setMinTime 查询数据的起始时间 N/A
maxTime Long setMaxTime 查询数据的截止时间 N/A
intervalInSec Integer setIntervalInSec 数据片的时间间隔 N/A
measures List[String] setMesures 查询指标列表 列表最长支持 3 个元素。如果为空,则返回所有指标数据。
dimensions List[Dimension] setDimensions 查询维度列表 下钻数据集字段,dimensions 为复合参数,列表最长支持 3 个元素。Dimension 的定义见下方表格。
orderByKey String setOrderByKey orderBy 指标 N/A
limit Integer setLimit 限制的返回个数 N/A
reduceTail Boolean setReduceTail 是否把 limit 之外的数据合并到一起 N/A
securityToken String setSecurityToken STS securityToken 采用 RAM 用户角色模式时需要设置该字段。详情参见借助 RAM 角色实现跨云账号访问资源

Dimensions 复合字段说明

字段名称 字段类型 设置方法 字段含义 备注
key String setKey 维度名称 如:区域
value String setValue 维度值 如:北京
type String setType 取值方式 分别为:STATICAllDISABLED
  • 当您想选择该维度下面的所有的维度值时,type 设置为 ALLvaluenull
  • 当您想选择该维度下面的其中某个维度值时,type 设置为 STATIC(静态值),value 为输入维度值。
  • 当您不想选择该维度时候,可以直接忽略,或者将 type 设置为 DISABLED

返回参数

返回值为 JSON 串形式返回,可通过 ARMSQueryDataSetResponse.getdata() 获取。

ARMSQueryDataSetResponse 主要字段有:

字段名称 字段含义 备注
dimensions 时序数据的维度值 当该维度选为 ALL 时,会有多个。
measures 数据点中的指标 N/A
resultSize 返回的所有数据点个数 N/A
dimData 多条时序数据 N/A

完整使用示例

  1. 在不选择维度情况下,查询所有数据的汇总信息。
    1. import java.util.ArrayList;
    2. import java.util.List;
    3. import com.aliyuncs.DefaultAcsClient;
    4. import com.aliyuncs.IAcsClient;
    5. import com.aliyuncs.arms.model.v20190808.QueryDataSetRequest;
    6. import com.aliyuncs.arms.model.v20190808.QueryDataSetResponse;
    7. import com.aliyuncs.exceptions.ClientException;
    8. import com.aliyuncs.profile.DefaultProfile;
    9. import com.aliyuncs.profile.IClientProfile;
    10. public class ARMSGeneralQuery {
    11. public static void main(String[] args) throws ClientException {
    12. // 用户主账号/RAM 子账号的 AK,或者 RAM 用户角色的临时安全令牌的 AK
    13. String accessKeyId = "xxx";
    14. // 用户主账号/RAM 子账号的 SK,或者 RAM 用户角色的临时安全令牌的 SK
    15. String accessKeySecret = "xxx";
    16. //Region 和 Endpoint 保持一致,具体内容和 ARMS 的 Region 绑定
    17. String endpoint = "xxx";//例如 cn-hangzhou
    18. String region = "xxx";//例如 cn-hangzhou
    19. //产品名请固定填"ARMS"
    20. String productName = "ARMS";
    21. //如果是非杭州区域,请改写,如 cn-beijing
    22. String domain = "arms.cn-hangzhou.aliyuncs.com";
    23. IClientProfile profile = DefaultProfile.getProfile(region, accessKeyId, accessKeySecret);
    24. DefaultProfile.addEndpoint(endpoint, region, productName, domain);
    25. //设置业务参数
    26. QueryDataSetRequest QueryDataSetRequest = new QueryDataSetRequest();
    27. //DatasetID 在数据集管理页面上可查询到
    28. QueryDataSetRequest.setDatasetId(1340l);
    29. //查询数据的返回间隔,请务必保证为 60 的倍数
    30. QueryDataSetRequest.setIntervalInSec(60);
    31. //设置查询的起始时间,该例子为查询最近十分钟数据,注意单位为毫秒
    32. QueryDataSetRequest.setMinTime(System.currentTimeMillis() - 600000);
    33. QueryDataSetRequest.setMaxTime(System.currentTimeMillis());
    34. // ****后续的 2、3、4 示例代码插入此处****
    35. IAcsClient client = new DefaultAcsClient(profile);
    36. try {
    37. //发送请求
    38. QueryDataSetResponse QueryDataSetResponse = client.getAcsResponse(QueryDataSetRequest);
    39. //获取并打印请求结果
    40. System.out.println(QueryDataSetResponse.getData());
    41. } catch (ClientException e) {
    42. e.printStackTrace();
    43. }
    44. }
    45. }
    1. #!/usr/bin/env python
    2. #encoding: utf-8
    3. from aliyunsdkcore import client
    4. from aliyunsdkarms.request.v20190808 import QueryDataSetRequest
    5. import time
    6. def main():
    7. #关于阿里云公共参数和地域的详细信息请参见本文末尾的公共参数文档链接
    8. region = 'cn-hangzhou'
    9. #用户主账号/RAM 子账号的 SK,或者 RAM 用户角色的临时安全令牌的 SK
    10. accessKeyID = 'xxx'
    11. accessKeySecret = 'xxx'
    12. #构造client
    13. clt = client.AcsClient(accessKeyID, accessKeySecret, region)
    14. #构造业务参数
    15. QueryDataSetRequest = QueryDataSetRequest.QueryDataSetRequest()
    16. #填写正确的数据集 ID,在 ARMS 数据集管理页面确定
    17. QueryDataSetRequest.set_DatasetId(12221L)
    18. #设置查询间隔时间,在本例中为 60 秒
    19. QueryDataSetRequest.set_IntervalInSec(60)
    20. #设置查询时间的间隔,本例中为最近一个小时,注意单位为毫秒,必须为整型
    21. QueryDataSetRequest.set_MinTime(int(time.time()*1000)-3600000)
    22. QueryDataSetRequest.set_MaxTime(int(time.time()*1000))
    23. // ****后续的 2、3、4 示例代码插入此处****
    24. #发送请求
    25. QueryDataSetResponse = clt.do_action(QueryDataSetRequest)
    26. #打印请求结果
    27. print QueryDataSetResponse
    28. if __name__ == '__main__':
    29. main()
    1. include_once 'aliyun-php-sdk-core/Config.php';
    2. include_once 'aliyun-php-sdk-arms/ARMS/Request/V20190808/QueryDataSetRequest.php';
    3. include_once 'aliyun-php-sdk-arms/ARMS/Request/V20190808/WhereInDimQueryRequest.php';
    4. use ARMS\Request\V20190808\QueryDataSetRequest as QueryDataSetRequest;
    5. //设置连接参数,其中 Endpoint 为"cn-hangzhou""cn-beijing"等,AK、SK 请根据您的实际情况填写
    6. $iClientProfile = DefaultProfile::getProfile("cn-hangzhou", "your_ak", "your_sk");
    7. $client = new DefaultAcsClient($iClientProfile);
    8. $request = new QueryDataSetRequest();
    9. //填写正确的数据集 ID
    10. $request->setDatasetId(12221);
    11. //时间粒度,例如为 60 秒
    12. $request->setIntervalInSec(60);
    13. //最小时间,本例为当前时间的一小时前
    14. $request->setMinTime((int)time()*1000 - 3600000);
    15. //最大时间,可设置为当前时间
    16. $request->setMaxTime((int)time()*1000);
    17. // ****后续的 2、3、4 示例代码插入此处****
    18. //发送请求
    19. $response = $client->doAction($request);
    20. //打印请求
    21. print_r( $response->getBody());
  2. 选择第一个维度,将维度值设为空字符串(“”),类型为 ALL(全部)。结果返回按第一维度分组的数据。
    1. Dimensions dimensions = new Dimensions();
    2. dimensions.setKey("区域");
    3. dimensions.setValue("");
    4. dimensions.setType("ALL");
    5. List<Dimensions> dimensionss = new ArrayList<Dimensions>();
    6. dimensionss.add(dimensions);
    7. QueryDataSetRequest.setDimensionss(dimensionss);
    1. dimensions = [{"Key":"区域","Value":"", "Type":"ALL"}]
    2. QueryDataSetRequest.set_Dimensionss(dimensions)
    1. $dims = array (array("Key"=>"类目", "Value" => "", "Type" => "ALL"));
    2. $request->setDimensionss($dims);
  3. 选择第一个维度,将维度值设为固定值,如 hangzhou,类型为 STATIC(固定值)。结果返回按第一维度的 hangzhou 数据。
    1. Dimensions dimensions = new Dimensions();
    2. dimensions.setKey("区域");
    3. dimensions.setValue("hangzhou");
    4. dimensions.setType("STATIC");
    5. List<Dimensions> dimensionss = new ArrayList<Dimensions>();
    6. dimensionss.add(dimensions);
    7. QueryDataSetRequest.setDimensionss(dimensionss);
    1. dimensions = [{"Key":"区域","Value":"hangzhou", "Type":"STATIC"}]
    2. QueryDataSetRequest.set_Dimensionss(dimensions)
    1. $dims = array (array("Key"=>"类目", "Value" => "nanzhuang", "Type" => "STATIC"));
    2. $request->setDimensionss($dims);
  4. 选择要查询的指标列表,返回结果只返回您指定的指标。
    1. List<String> measuress = new ArrayList<String>();
    2. measuress.add("价格");
    3. measuress.add("数量");
    4. QueryDataSetRequest.setMeasuress(measuress);
    1. measures = ["COUNT__line"]
    2. QueryDataSetRequest.set_Measuress(measures)
    1. $measures = array ("COUNT__line");
    2. $request->setMeasuress($measures);