查询操作
所有文档
menu

时序时空数据库 TSDB

查询操作

产品详情立即使用

获取度量(Metric)

基本流程

  1. 创建TsdbDataClient。
  2. 执行getMetrics()方法。

如下代码可以获取metric列表:

// 获取并打印Metric
client.getMetrics()
    .then(response => console.log(response.body))        // 获取成功
    .catch(error => console.error(error));               // 获取失败,并返回错误类型

执行结果:

//  终端返回结果 
{
	metrics: [ 
		'cpu_idle',
		'cpu_idle1' 
	] 
}

获取Field

基本流程

  1. 创建TsdbDataClient。
  2. 执行getFields()方法,您需要提供查询的metricName。

如下代码可以获取Field列表:

var metricName = <metricName>;
// 获取并打印Field
client.getFields(<metricName>)
    .then(response => console.log(response.body))        // 获取成功
    .catch(error => console.error(error));               // 获取失败,并返回错误类型

执行结果:

//  终端返回结果 
{ 
	"fields": [
		 "field1",
		 "field2"
	]
 }

获取标签(Tag)

基本流程

  1. 创建TsdbDataClient。
  2. 执行getTags()方法,您需要提供查询的metricName。

如下代码可以获取标签(Tag)列表:

var metricName = <metricName>;
// 获取并打印Tag
client.getTags(<metricName>)
    .then(response => console.log(response.body))        // 获取成功
    .catch(error => console.error(error));               // 获取失败,并返回错误类型

执行结果:

//  终端返回结果 
{ 
	tags: [ 
		'tags1',
		'tags2' 
	] 
}

查询数据点

单域查询数据点

基本流程

  1. 创建TsdbDataClient。
  2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。

如下代码可以查询数据点:

// 构建想要查询的queryList
var queryList = [
    {
	    "metric": "cpu_idle1",
	    "filters": {
	        "start": "1 hour ago",
	        "tags": {
	            "host": [
	                "server1",
	                "server2"
	            ]
	        },
	        "value": ">= 10"
	    },
	    "groupBy": [
	        {
	            "name": "Tag",
	            "tags": [
	                "rack"
	            ]
	        }
	    ]
	}
];

// 获取并打印查询结果
client.getDatapoints(<queryList>)
    .then(response => console.log(JSON.stringify(response.body)))            // 获取成功
    .catch(error => console.error(error));                   // 获取失败,并返回错误类型

执行结果:

//  终端返回类似结果
{ 
	results: [
		{ 
		   metric: 'humidity', 
		   field: 'value',
		   groups: [], 
		   rawCount: 0 
		} 
	] 
}

多域查询数据点

基本流程

  1. 创建TsdbDataClient。
  2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。

如下代码可以查询数据点:

// 构建想要查询的queryList
var queryList = [
    {
        "metric": "cpu_idle3",
        "fields": [
            "field1",
            "field2"
        ],
        "tags": [
            "rack",
            "host"
        ],
        "filters": {
            "start": "5 hour ago",
            "fields": [
                {
                    "field": "field1",
                    "value": ">= 10"
                },
                {
                    "field": "field2",
                    "value": "<= 10"
                }
            ],
            "tags": {
                "rack": [
                    "rack1"
                ],
                "host": [
                    "server1"
                ]
            },
            
        },
        "groupBy": [
            {
                "name": "Tag",
                "tags": [
                    "rack",
                    "host"
                ]
            }
        ],
        "limit": 1000
    }
];
// 获取并打印查询结果
client.getDatapoints(<queryList>)
    .then(response => console.log(JSON.stringify(response.body)))           // 获取成功
    .catch(error => console.error(error));                   // 获取失败,并返回错误类型
    

执行结果:

//  终端返回类似结果
{ 
	results: [ 
		{ 
			metric: 'humidity',
	 		field: 'value', 
			groups: [], 
			rawCount: 0
	   }
	]
}

使用插值方式查询数据点

基本流程

  1. 创建TsdbDataClient。
  2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。

如下代码可以对数据点进行插值:

// 构建想要查询的queryList
var queryList = [
    {
        "metric": "cpu_idle3",
        "field": "field1",
        "filters": {
           "start": "1 hour ago",
           "tags": {
              "host": [
                 "server1"
                 ]
              }
         },
         "fill": {
            "type": "Linear",
            "interval": "5 minutes",
            "maxWriteInterval": "30 minutes"
         }
     }
 ];
// 获取并打印查询结果
client.getDatapoints(<queryList>)
     .then(response => console.log(JSON.stringify(response.body)))             // 获取成功
     .catch(error => console.error(error));                   // 获取失败,并返回错误类型

执行结果:

//  终端返回类似结果
{ 
	results: [ 
		{ 
			metric: 'humidity', 
			field: 'value',
 			groups: [],
 			rawCount: 0 
  		} 
  	]
}

分页查询数据点

基本流程

  1. 创建TsdbDataClient。
  2. 执行getDatapoints()方法,您需要提供根据需求构建的查询列表。
  3. 根据返回结果的result.truncated判断是否还有下一页数据,有则执行2,否则结束。

示例代码:

// 构建想要查询的query
var query = {
    "metric": "cpu_idle1",
    "filters": {
        "start": "1 hour ago",
    }
};
var fetchNext = nextMarker => {
    query.marker = nextMarker;                             // 设置marker,以便获取后面的数据
    client.getDatapoints([query,])                         // 获取数据
        .then(deealWithResponse)                           // 设置处理结果的callback
        .catch(dealWithError);                             // 设置处理error的callback
};
var deealWithResponse = response => {                      // 处理结果
    console.log(JSON.stringify(response.body))             // 打印结果
    if (response.body.results[0].truncated) {              // 后面还有数据
        fetchNext(response.body.results[0].nextMarker);    // 获取下一页
    }
}
var dealWithError = error => console.error(error);         // 处理error

client.getDatapoints([query,])                             // 获取数据
    .then(deealWithResponse)                               // 设置处理结果的callback
    .catch(dealWithError);                                 // 设置处理error的callback

SQL查询接口

NodeSDK在0.3.1版本中支持了SQL查询接口,支持标准的ANSI SQL语义。

基本流程

  1. 创建TsdbDataClient。
  2. 执行getRowsWithSql(sql)方法

如下代码可以使用SQL查询数据点:

  var sql = 'select * from cpu_idle';
  client.getRowsWithSql(sql)
      .then(function (response) {
            console.log(response.body);
      });
上一篇
写入操作
下一篇
生成查询数据点的预签名URL