查询操作
更新时间:2019-06-18
获取度量(Metric)
如下代码可以获取metric列表:
Plain Text
1# 获取metric列表
2result = tsdb_client.get_metrics()
3print result.metrics
返回结果:
Plain Text
1[u'wind']
获取域(Field)
如下代码可以获取field对象:
Plain Text
1metric = 'wind' # 要获取field所属的metric
2result = tsdb_client.get_fields(metric) # 获取指定metric下的所有field
3print result.fields
返回结果:
Plain Text
1{direction:{type:u'Number'},speed:{type:u'Number'}}
获取标签(Tag)
如下代码可以获取tag对象:
Plain Text
1metric = 'wind' # 要获取tag所属的metric
2result = tsdb_client.get_tags(metric)
3print result.tags
返回结果:
Plain Text
1{city:[u'ShangHai']}
查询数据点
查询单域数据点
如下代码可以查询单域数据点:
Plain Text
1#构建查询对象
2query_list = [{
3 "metric": "wind",
4 "field": "direction",
5 "filters": {
6 "start": 1531985370000,
7 "end": 1531985400000,
8 "tags": {
9 "city": ["ShangHai"]
10 },
11 "value": ">= 0"
12 },
13 "groupBy": [{
14 "name": "Tag",
15 "tags": ["city"]
16 }],
17 "limit": 1000,
18 "aggregators": [{
19 "name": "Sum",
20 "sampling": "10 minutes"
21 }]
22}]
23result = tsdb_client.get_datapoints(query_list)
24print result.results
返回结果:
Plain Text
1[{field:u'direction',metric:u'wind',groups:[{group_infos:[{name:u'Tag',tags:{city:u'ShangHai'}}],values:[[1531985379000, 2]]}],rawcount:2}]
查询多域数据点
如下代码可以查询多域数据点:
Plain Text
1#构建查询对象
2query_list = [{
3 "metric": "wind",
4 "fields": ["direction", "speed"], #查询多个域
5 "filters": {
6 "start": 1531985370000,
7 "end": 1531985400000,
8 "tags": {
9 "city": ["ShangHai"]
10 },
11 "value": ">= 0"
12 },
13 "groupBy": [{
14 "name": "Tag",
15 "tags": ["city"]
16 }],
17 "limit": 1000,
18 "aggregators": [{
19 "name": "Sum",
20 "sampling": "10 minutes"
21 }]
22}]
23result = tsdb_client.get_datapoints(query_list)
24print result.results
返回结果:
Plain Text
1[{fields:[u'direction', u'speed'],metric:u'wind',groups:[{group_infos:[{name:u'Tag',tags:{city:u'ShangHai'}}],values:[[1531985380000, 1, 4.5]]}],rawcount:1}]
使用插值方式查询数据
使用如下代码进行插值查询:
Plain Text
1# 构建查询对象
2query_list = [{
3 "metric": "wind",
4 "fields": ["direction", "speed"],
5 "filters": {
6 "start": 1531985370000,
7 "end": 1532985370000,
8 "tags": {
9 "city": ["ShangHai"]
10 },
11 "value": ">= 0"
12 },
13 "fill": { #配置插值参数
14 "type": "Linear", #插值类型
15 "interval": "1 day", #插值间隔
16 "maxWriteInterval": "30 minutes" #最大写入间隔
17 },
18 "groupBy": [{
19 "name": "Tag",
20 "tags": ["city"]
21 }],
22 "limit": 1000,
23 "aggregators": [{
24 "name": "Sum",
25 "sampling": "10 minutes"
26 }]
27}]
28
29result = tsdb_client.get_datapoints(query_list)
30print result.results
返回结果:
Plain Text
1[{fields:[u'direction', u'speed'],metric:u'wind',groups:[{group_infos:[{name:u'Tag',tags:{city:u'ShangHai'}}],values:[[1531985380000, 1, 4.5], [1532071780000, 1, 4.5], [1532158180000, 1, 4.5], [1532244580000, 1, 4.5], [1532330980000, 1, 4.5], [1532417380000, 1, 4.5], [1532503780000, 1, 4.5], [1532590180000, 1, 4.5], [1532676580000, 1, 4.5], [1532762980000, 1, 4.5], [1532849380000, 1, 4.5], [1532935780000, 1, 4.5]]}],rawcount:12}]
分页查询数据点
如果查询到的原始数据点过大,会分多次返回,使用marker参数来进行分页查询。
Plain Text
1# 通过循环来多次查询数据
2
3query_list = [{
4 "metric": "wind",
5 "field": "direction",
6 "filters": {
7 "start": 1531985300000,
8 "end": 1531985400000,
9 "tags": {
10 "city": ["ShangHai"]
11 }
12 },
13 "limit": 1
14}]
15count = 0
16while True:
17 count += 1
18 if len(query_list) >0:
19 result = tsdb_client.get_datapoints(query_list)
20 print count, result.results
21 else:
22 print 'end query'
23 break
24 next_query = []
25 for i in range(len(query_list)):
26 if result.results[i].truncated:
27 query_list[i]['marker'] = result.results[i].next_marker
28 next_query.append(query_list[i])
29 query_list = next_query
返回结果:
Plain Text
11 [{field:u'direction',next_marker:u'AAABZLFxwqBjaXR5PVNoYW5nSGFp',groups:[{group_infos:[],values:[[1531985379000, 1]]}],truncated:True,metric:u'wind',rawcount:1}]
22 [{field:u'direction',metric:u'wind',groups:[{group_infos:[],values:[[1531985380000, 1]]}],rawcount:1}]
3end query
使用SQL查询数据点
TSDB支持使用SQL进行数据查询,示例代码如下:
Plain Text
1sql = "select * from wind"
2result = tsdb_client.get_rows_with_sql(sql)
3print result
返回结果:
Plain Text
1{rows:[[1531985379000, 1.0, None, u'ShangHai'], [1531985380000, 1.0, 4.5, u'ShangHai']],columns:[{name:u'timestamp'}, {name:u'direction'}, {name:u'speed'}, {name:u'city'}],metadata:{content_length:'168',content_type:'application/json; charset=UTF-8',keep_alive:'timeout=10',server:'BWS',connection:'keep-alive',pragma:'no-cache',date:'Thu, 02 Aug 2018 00:35:28 GMT',bce_request_id:'46f5d19e-58de-4654-bc35-91bb67b58e76',cache_control:'no-cache'}}