查询操作
所有文档

          时序时空数据库 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