多値データモデルが使用されている時系列から最新のデータポイントをクエリする
リクエストパスとメソッド
リクエストパス | リクエストメソッド | 説明 |
|---|---|---|
/api/query/mlast | POST | 多値モデル時系列から最新のデータポイントをクエリします。返される各データポイントには、指定されたメトリックの指定されたフィールドの最新値が含まれています。 |
リクエストパラメータ
パラメータ | タイプ | 必須 | 説明 | デフォルト値 | 例 |
|---|---|---|---|---|---|
queries | 配列 | はい | サブクエリ配列。 | 該当なし | 詳細については、「JSON 形式のサブクエリのパラメータ」セクションをご参照ください。 |
timestamp | Long | いいえ | UNIX タイムスタンプ。単位:秒またはミリ秒。タイムスタンプを指定すると、API 操作は、指定されたタイムスタンプ以前のタイムスタンプに関連付けられた最新のデータポイントを返します。このパラメータを空のままにすると、API 操作は、現在のタイムスタンプ以前のタイムスタンプに関連付けられた最新のデータポイントを返します。このパラメータは、リクエストの queries パラメータと同じレベルです。詳細については、以下のサンプルリクエストをご参照ください。 | 該当なし | 1539763573 |
tupleFormat | Boolean | いいえ | クエリ対象フィールドの最新データポイントのタプル構造を返すかどうかを指定します。詳細については、以下のサンプルリクエストとレスポンスをご参照ください。 | false | false |
tupleOffset | Long | いいえ | タプルのオフセット。このパラメータは、tupleFormat パラメータが true に設定されている場合にのみ有効になります。 | 0 | 5 |
tupleLimit | Long | いいえ | タプルの最大数。このパラメータは、tupleFormat パラメータが true に設定されている場合にのみ有効になります。 | 0 | 100 |
hint | マップ | いいえ | クエリヒント。 | 該当なし | 詳細については、「クエリヒントの説明」セクションをご参照ください。 |
limit | マップ | いいえ | クエリする最新のデータポイントの制限。 | 該当なし | 詳細については、「クエリ制限の説明」セクションをご参照ください。 |
/api/query/mlast を使用して、多値データモデルが使用されている時系列から最新のデータポイントのみをクエリできます。単一値データモデルが使用されている時系列から最新のデータポイントをクエリする場合は、/api/query/last を使用します。
JSON 形式のサブクエリのパラメータ
パラメータ | タイプ | 必須 | 説明 | デフォルト値 | 例 |
|---|---|---|---|---|---|
metric | String | はい | クエリする最新のデータポイントに関連付けられたメトリック。 | 該当なし | wind |
fields | リスト | はい | クエリするメトリックフィールド。このパラメータをアスタリスク (*) に設定すると、指定されたメトリックのすべてのフィールドの値が返されます。 | 該当なし | {speed, level, description} |
tags | String | いいえ | クエリする最新のデータポイントに関連付けられたタグ。 | 該当なし | sensor = IOTE_1988_0001 |
hint | マップ | いいえ | クエリヒント。 | なし | 詳細については、「クエリヒントの説明」セクションをご参照ください。
JSON 形式のサンプルリクエスト
目的: 時系列の usage_system フィールドと usage_idle フィールドに書き込まれた最新のデータポイントをクエリします。これら 2 つのフィールドは cpu メトリックを記述するために使用され、関連付けられたタグのキーと値のペアは "host_name": "host1" です。リクエスト行: 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 形式で返されます。クエリ条件を満たす時系列がない場合は、空のセットが返されます。次の表は、レスポンスパラメータについて説明しています。
パラメータ | 説明 |
|---|---|
metric | メトリックの名前。 |
columns | 返された結果セットの列の名前。このパラメータの値には、timestamp フィールド名とクエリするメトリックフィールドの名前が含まれます。 |
tags | データポイントに関連付けられたタグのキーと値のペアのセット。 |
values | メトリックフィールドの値。値の順序は、列の順序と同じです。 |
リクエストで 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]
]
}
]クエリヒントの説明
シナリオ
ほとんどの場合、クエリヒントはクエリのレスポンスタイムを短縮するために使用されます。たとえば、タグ A とタグ B が指定されており、タグ B にヒットする時系列が明らかにタグ A にヒットする時系列に含まれているとします。この場合、タグ A にヒットする時系列からはデータは読み取られません。タグ A にヒットする時系列のセットとタグ B にヒットする時系列のセットの共通部分は、タグ B にヒットする時系列のセットと等しくなります。
形式の説明
現在の TSDB バージョンでは、ヒントで tagk パラメータのみを使用してクエリインデックスを制限できます。
tagk パラメータで指定されたタグのキーと値のペアでは、タグキーのタグ値は同じである必要があります。有効な値:0 と 1。タグ値が
0の場合、タグキーに対応するインデックスは使用されません。タグ値が1の場合、タグキーに対応するインデックスが使用されます。
バージョンの説明
クエリヒント機能は、TSDB V2.6.1 以降でサポートされています。
サンプルリクエスト
サブクエリに適用されるヒント
{
"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
}
}
}例外
tagk パラメータで指定されたキーと値のペアのタグ値に 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": "ヒントの値は 0 または 1 のみである必要があり、0 と 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=[])"
}
}tagk パラメータで指定されたキーと値のペアのタグ値が 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": "ヒントの値は 0 または 1 のみ可能です。'100' が渡されました。", // 翻訳修正
"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=[])"
}
}クエリ制限の説明
制限:クエリする最新のデータポイントに制限を設定できます。制限を指定しない場合、クエリ結果には各時系列の最新のデータポイントのみが含まれます。
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"
}
}
]
}詳細については、「単一値モデルを使用する時系列の最新のデータポイントをクエリする」トピックの「クエリ制限の説明」セクションをご参照ください。