多值查詢最新數據點
多值模型最新數據點查詢(新建mlast)
請求路徑和方法
請求路徑 | 請求方法 | 描述 |
---|---|---|
/api/query/mlast | POST | 獲得多值模型指標數據中fields 最新寫入的數據點。 |
請求內容
名稱 | 類型 | 是否必選 | 描述 | 默認值 | 舉例 |
---|---|---|---|---|---|
queries | Array | 是 | 子查詢數組。 | 無 | 見子查詢說明 |
timestamp | Long | 否 | unix 時間戳,單位為秒或者毫秒,指定該參數時表示查詢到該時間戳為止最新的數據點,否則表示查詢當前最新的數據點 Tags。這個是和 queries 相同級別參數,詳情見示例。 | 無 | 1539763573 |
tupleFormat | Boolean | 否 | 將查詢 fields 的最新數據點元組結構返回,詳情見示例。 | false | false |
tupleOffset | Long | 否 | 數據分頁時返回的tuple的偏移量。僅在tupleFormat為true時有效。 | 0 | 5 |
tupleLimit | Long | 否 | 數據分頁時返回的tuple最大數量。僅在tupleFormat為true時有效。 | 0 | 100 |
hint | Map | 否 | 查詢 Hint 化。 | 無 | 見查詢 Hint 化說明 |
limit | Map | 否 | 多個最新點查詢。 | 無 | 見查詢 Limit 化說明 |
/api/query/mlast 只能用于多值模型數據,單值模型數據的最新數據點,請使用 /api/query/last 接口。
子查詢JSON格式
名稱 | 類型 | 是否必選 | 描述 | 默認值 | 舉例 |
---|---|---|---|---|---|
metric | String | 是 | 待查詢最新數據點的 Metric。 | 無 | wind |
fields | List | 是 | 需要查詢最新數據點的域,“*”代表查詢 metric 下所有域。 | 無 | {speed, level, description} |
tags | String | 否 | 待查詢最新數據點的 Tags。 | 無 | sensor = IOTE_1988_0001 |
hint|Map |否|查詢 Hint 化|無 |見查詢 Hint 化說明
請求 JSON 示例
任務:查詢 “cpu” 指標下,標簽為 “host_name=host1” 的 “usage_system” 和 “usage_idle” 域最新寫入數據點。請求:POST/api/query/mlast
請求體:
{
"tupleFormat": true,
"tupleOffset":5,
"tupleLimit":100,
"timestamp" : 1551851846,
"queries": [
{
"metric": "cpu",
"fields": ["usage_system", "usage_idle"],
"tags": {
"host_name": "host1"
}
}
]
}
響應說明
查詢成功的 HTTP 響應碼為 200,返回符合條件的時間線最新數據點,內容為JSON 格式數據;如果沒有時間線滿足條件,則返還空集。JSON說明如下:
名稱 | 描述 |
---|---|
metric | 指標名 |
columns | 返回結果集中的列名稱,包括時間戳和查詢的域名稱 |
tags | 數據點對應的tag鍵值集合 |
values | 查詢指標域的值,值的順序和 columns 的順序對應 |
如果將 tupleFormat 設置成 false,增返回結果格式跟單值模型一致。這種場景下的詳細響應內容可以參考/api/query/last 接口的介紹。
返回結果JSON示例
[
{
"metric": "wind",
"columns": [
"timestamp",
"level",
"speed"
],
"tags": {
"city": "hangzhou",
"country": "china",
"province": "zhejiang",
"sensor": "IOTE_8859_0001"
},
"values": [
[1346846405000, 5.1, 45.1]
]
}
]
查詢Hint化說明
場景說明
該特性主要是提高查詢速度。假設某一個 tags A 命中的時間線明顯大于其他的 tags B 命中的時間線,則需要舍棄,避免撈取 tags A 的大量時間線之后,被 tags B 小規模時間線交集后,結果集等于 tags B。
格式說明
當前版本只支持 tagk 級別的查詢索引限制(hint 下的 tagk 是固定寫法)
其中,
0
表示不使用對應 tagk 的索引,反之1
表示使用對應 tagk 的索引
版本說明
從 v2.6.1 版本開始支持 hint 特性
查詢示例
子查詢級別
{
"queries": [
{
"metric": "demo.mf",
"tags": {
"sensor": "IOTE_8859_0001",
"city": "hangzhou",
"province": "zhejiang",
"country": "china"
},
"fields": [
"speed"
],
"hint": {
"tagk": {
"dc": 1
}
}
}
]
}
整體查詢級別
{
"queries": [
{
"metric": "demo.mf",
"tags": {
"sensor": "IOTE_8859_0001",
"city": "hangzhou",
"province": "zhejiang",
"country": "china"
},
"fields": [
"speed"
]
}
],
"hint": {
"tagk": {
"dc": 1
}
}
}
異常情況
不可同時指定 0 和 1
{
"start": 1346846400,
"end": 1346846400,
"queries": [
{
"aggregator": "none",
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web01"
}
}
],
"hint": {
"tagk": {
"dc": 1,
"host": 0
}
}
}
會返回如下報錯信息:
{
"error": {
"code": 400,
"message": "The value of hint should only be 0 or 1, and there should not be both 0 and 1",
"details": "TSQuery(start_time=1346846400, end_time=1346846400, subQueries[TSSubQuery(metric=sys.cpu.nice, filters=[filter_name=literal_or, tagk=dc, literals=[lga], group_by=true, filter_name=literal_or, tagk=host, literals=[web01], group_by=true], tsuids=[], agg=none, downsample=null, ds_interval=0, rate=false, rate_options=null, delta=false, delta_options=null, top=0, granularity=null, granularityDownsample=null, explicit_tags=explicit_tags, index=0, realTimeSeconds=-1, useData=auto, limit=0, offset=0, dpValue=null, preDpValue=null, startTime=1346846400000, endTime=1346846400000, Query_ID=null)] padding=false, no_annotations=false, with_global_annotations=false, show_tsuids=false, ms_resolution=false, options=[])"
}
}
不可指定除了 0 和 1 之外的值
{
"start": 1346846400,
"end": 1346846400,
"queries": [
{
"aggregator": "none",
"metric": "sys.cpu.nice",
"tags": {
"dc": "lga",
"host": "web01"
}
}
],
"hint": {
"tagk": {
"dc": 100
}
}
}
會返回如下報錯信息:
{
"error": {
"code": 400,
"message": "The value of hint can only be 0 or 1, and it is detected that '100' is passed in",
"details": "TSQuery(start_time=1346846400, end_time=1346846400, subQueries[TSSubQuery(metric=sys.cpu.nice, filters=[filter_name=literal_or, tagk=dc, literals=[lga], group_by=true, filter_name=literal_or, tagk=host, literals=[web01], group_by=true], tsuids=[], agg=none, downsample=null, ds_interval=0, rate=false, rate_options=null, delta=false, delta_options=null, top=0, granularity=null, granularityDownsample=null, explicit_tags=explicit_tags, index=0, realTimeSeconds=-1, useData=auto, limit=0, offset=0, dpValue=null, preDpValue=null, startTime=1346846400000, endTime=1346846400000, Query_ID=null)] padding=false, no_annotations=false, with_global_annotations=false, show_tsuids=false, ms_resolution=false, options=[])"
}
}
查詢Limit說明
Limit: 通過指定Limit可以查詢多個最新數據點。當請求中沒有指定Limit時,每條時間序列只返回一個最新的數據點。
JSON格式說明
名稱 | 類型 | 是否必選 | 描述 | 默認值 | 舉例 |
---|---|---|---|---|---|
size | Integer | 是 | 每個時間線最新數據點的最大數量。 | 無 | 5 |
from | Long | 是 | 查詢范圍開始時間。 | 無 | 1346846400 |
示例
返回從時間戳1551850000到1551851846之間滿足查詢條件的最新300個數據點
{
"tupleFormat":true,
"limit":{
"size":300,
"from":1551850000
},
"timestamp":1551851846,
"queries":[
{
"metric":"cpu",
"fields":["usage_system","usage_idle"],
"tags":{
"host_name":"host1"
}
}
]
}
詳細示例說明可參考單值時間線最新數據點查詢Limit說明。