调用QueryDataset查询通用数据集中的数据。
调试
您可以在OpenAPI Explorer中直接运行该接口,免去您计算签名的困扰。运行成功后,OpenAPI Explorer可以自动生成SDK代码示例。
描述
QueryDataSet
可用于查询ARMS通用数据集中的数据。
说明 关于下钻数据集和通用数据集的区别,请参见通用维度与下钻维度。
API名称 | Request | Response |
---|---|---|
QueryDataSet | QueryDataSetRequest | QueryDataSetResponse |
请求参数
请求参数包含公共参数和业务参数。
公共参数
公共请求参数参见公共参数。
业务参数
阿里云将用户所有的请求参数封装在一个Request中,返回一个Response。QueryDataSetRequest包含以下字段:
字段名称 | 字段类型 | 设置方法 | 字段含义 | 是否必选 | 备注 |
---|---|---|---|---|---|
datasetId | Long | setDatasetId | 数据集ID | 是 | 请参见如何获取datasetId。 |
minTime | Long | setMinTime | 查询数据的起始时间 | 是 |
|
maxTime | Long | setMaxTime | 查询数据的截止时间 | 是 |
|
intervalInSec | Integer | setIntervalInSec | 数据片的时间间隔 | 是 |
|
measures | List[String] | setMesures | 查询指标列表 | 否 | 列表最长支持3个元素。如果为空,则返回所有指标数据。 |
requiredDims | List[Dimension] | setRequiredDims | 通用数据集的必选维度 | 否 | 如果您配置了必选维度,则此项为必填项。 |
optionalDims | List[Dimension] | setOptionalDims | 通用数据集的可选维度 | 否 | N/A |
orderByKey | String | setOrderByKey | orderBy指标 | 否 | N/A |
limit | Integer | setLimit | 限制的返回个数 | 否 | N/A |
reduceTail | Boolean | setReduceTail | 是否把limit之外的数据合并到一起 | 否 | N/A |
securityToken | String | setSecurityToken | STS securityToken | 否 | 采用RAM用户角色模式时需要设置该字段,请参见借助RAM角色实现跨云账号访问资源。 |
RequiredDims(OptionalDims)
复合字段说明
字段名称 | 字段类型 | 设置方法 | 字段含义 | 备注 |
---|---|---|---|---|
key | String | setKey | 维度名称 | 如:区域 |
value | String | setValue | 维度值 | 如:北京 |
type | String | setType | 取值方式 | 分别为:STATIC、All和DISABLED |
- 当您想选择该维度下面的所有的维度值时,type设置为ALL,value为null。
- 当您想选择该维度下面的其中某个维度值时,type设置为STATIC(静态值),value为输入维度值。
- 当您不想选择该维度时候,可以直接忽略,或者将type设置为DISABLED。
如何获取datasetId
- 登录ARMS控制台。
- 在左侧导航栏选择实例列表页面顶部选择目标地域。 ,在
- 在数据集管理页签的数据集列表中,查看目标数据集名称对应的数据集ID,即可获取datasetId。
返回参数
返回值为JSON串形式返回,可通过QueryDataSetResponse.getdata()
获取。QueryDataSetResponse主要字段有:
字段名称 | 字段含义 |
---|---|
measures | 数据点中的指标 |
resultSize | 返回的所有数据点个数 |
dimData | 多条时序数据 |
完整使用示例
- 在不选择维度情况下,查询所有数据的汇总信息。
import java.util.ArrayList;
import java.util.List;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.arms.model.v20190808.QueryDataSetRequest;
import com.aliyuncs.arms.model.v20190808.QueryDataSetResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;
public class ARMSGeneralQuery {
public static void main(String[] args) throws ClientException {
// 用户主账号/RAM 子账号的 AK,或者 RAM 用户角色的临时安全令牌的 AK
String accessKeyId = "xxx";
// 用户主账号/RAM 子账号的 SK,或者 RAM 用户角色的临时安全令牌的 SK
String accessKeySecret = "xxx";
//Region 和 Endpoint 保持一致,具体内容和 ARMS 的 Region 绑定
String endpoint = "xxx";//例如 cn-hangzhou
String region = "xxx";//例如 cn-hangzhou
//产品名请固定填"ARMS"
String productName = "ARMS";
//如果是非杭州区域,请改写,如 cn-beijing
String domain = "arms.cn-hangzhou.aliyuncs.com";
IClientProfile profile = DefaultProfile.getProfile(region, accessKeyId, accessKeySecret);
DefaultProfile.addEndpoint(endpoint, region, productName, domain);
// 设置业务参数
QueryDataSetRequest QueryDataSetRequest = new QueryDataSetRequest();
//DatasetID在数据集管理页面上可查询到
QueryDataSetRequest.setDatasetId(1340l);
//查询数据的返回间隔,请务必保证为 60 的倍数
QueryDataSetRequest.setIntervalInSec(60);
//设置查询的起始时间,该例子为查询最近十分钟数据,注意单位为毫秒
QueryDataSetRequest.setMinTime(System.currentTimeMillis() - 600000);
QueryDataSetRequest.setMaxTime(System.currentTimeMillis());
// ****后续的 2、3 示例代码插入此处****
IAcsClient client = new DefaultAcsClient(profile);
try {
//发送请求
QueryDataSetResponse QueryDataSetResponse = client.getAcsResponse(QueryDataSetRequest);
//获取并打印请求结果
System.out.println(QueryDataSetResponse.getData());
} catch (ClientException e) {
e.printStackTrace();
}
}
}
#!/usr/bin/env python
#encoding: utf-8
from aliyunsdkcore import client
from aliyunsdkarms.request.v20190808 import QueryDataSetRequest
import time
def main():
#关于阿里云公共参数和地域的详细信息请参见本文末尾的公共参数文档链接
region = 'cn-hangzhou'
#用户主账号/RAM 子账号的 SK,或者 RAM 用户角色的临时安全令牌的 SK
accessKeyID = 'xxx'
accessKeySecret = 'xxx'
#构造client
clt = client.AcsClient(accessKeyID, accessKeySecret, region)
#构造业务参数
QueryDataSetRequest = QueryDataSetRequest.QueryDataSetRequest()
#填写正确的数据集ID,在在ARMS数据集管理页面确定
QueryDataSetRequest.set_DatasetId(12221L)
#设置查询间隔时间,在本例中为60秒
QueryDataSetRequest.set_IntervalInSec(60)
#设置查询时间的间隔,本例中为最近一个小时,注意单位为毫秒,必须为整型
QueryDataSetRequest.set_MinTime(int(time.time()*1000)-3600000)
QueryDataSetRequest.set_MaxTime(int(time.time()*1000))
// ****后续的2、3示例代码插入此处****
#发送请求
QueryDataSetResponse = clt.do_action(QueryDataSetRequest)
#打印请求结果
print QueryDataSetResponse
if __name__ == '__main__':
main()
include_once 'aliyun-php-sdk-core/Config.php';
include_once 'aliyun-php-sdk-arms/ARMS/Request/V20190808/QueryDataSetRequest.php';
include_once 'aliyun-php-sdk-arms/ARMS/Request/V20190808/WhereInDimQueryRequest.php';
use ARMSRequestV20190808QueryDataSetRequest as QueryDataSetRequest;
//设置连接参数,其中 Endpoint 为"cn-hangzhou"、"cn-beijing"等,AK、SK 请根据您的实际情况填写
$iClientProfile = DefaultProfile::getProfile("cn-hangzhou", "your_ak", "your_sk");
$client = new DefaultAcsClient($iClientProfile);
$request = new QueryDataSetRequest();
//填写正确的数据集ID
$request->setDatasetId(12221);
//时间粒度,比如为60秒
$request->setIntervalInSec(60);
//最小时间,本例为当前时间的一小时前
$request->setMinTime((int)time()*1000 - 3600000);
//最大时间,可设置为当前时间
$request->setMaxTime((int)time()*1000);
// ****后续的2、3示例代码插入此处****
//发送请求
$response = $client->doAction($request);
//打印请求
print_r( $response->getBody());
- 请检查您是否配置了必选维度。如果配置了,那么在查询时一定要设置必选维度相关配置,否则无法进行查询。
QueryDataSetRequest.RequiredDims dimensions = new QueryDataSetRequest.RequiredDims();
dimensions.setKey("code");//必选维度名称
dimensions.setValue("CODE");//必选维度值
dimensions.setType("STATIC");//统一填写STATIC
List<QueryDataSetRequest.RequiredDims> dimensionss = new ArrayList<QueryDataSetRequest.RequiredDims>();
dimensionss.add(dimensions);
QueryDataSetRequest.setRequiredDimss(dimensionss);
requireddims = [{"Key":"code","Value":"CODE", "Type":"STATIC"}]
QueryDataSetRequest.set_RequiredDims(requireddims)
$requireddims = array (array("Key"=>"类目", "Value" => "女装", "Type" => "STATIC"));
$request->setRequiredDims($requireddims);
- 选择要查询的指标列表,返回结果只返回指定的指标。
List<String> measuress = new ArrayList<String>();
measuress.add("价格");
measuress.add("数量");
QueryDataSetRequest.setMeasuress(measuress);
measures = ["COUNT__line"]
QueryDataSetRequest.set_Measuress(measures)
$measures = array ("COUNT__line");
$request->setMeasuress($measures);