Tablestore SDK for Go を使用して、指定したタイムラインの時系列データを時間範囲でクエリします。この機能は、時間順のソート、列の選択、ページ分割読み取りをサポートしています。
前提条件
-
時系列データが時系列テーブルに書き込まれていること。詳細については、「時系列データの書き込み」をご参照ください。
-
TimeseriesClient インスタンスが初期化されていること。詳細については、「Tablestore クライアントの初期化」をご参照ください。
パラメーター
|
パラメーター |
必須 |
説明 |
|
timeseriesKey |
はい |
クエリ対象の時系列の識別子。以下のサブパラメーターを使用して識別子を指定します。
重要
メトリクス名やデータソースなど、時系列の識別子が不明な場合は、QueryTimeseriesMeta API を呼び出して、フィルター条件に基づいて時系列を取得します。詳細については、「時系列の取得」をご参照ください。 |
|
timeRange |
はい |
クエリの時間範囲。範囲は左閉右開区間です。以下のサブパラメーターを使用します。
|
|
backward |
いいえ |
結果を逆時系列順で返すかどうかを指定します。このオプションを使用すると、最新のデータポイントを最初に取得できます。有効な値は次のとおりです:
|
|
fieldsToGet |
いいえ |
返すデータ列。指定しない場合、すべての列が返されます。 重要
fieldsToGet を指定する場合、各列の名前とデータ型の両方を指定する必要があります。データ型が列名と一致しない場合、その列は返されません。 |
|
limit |
いいえ |
1 回の呼び出しで返す最大行数。 説明
結果セットが limit を超えた場合、またはスキャンデータ量の制約によって返される行が少なくなった場合は、nextToken パラメーターを使用して残りの行を取得します。 |
|
nextToken |
いいえ |
追加の結果を取得するためのページネーショントークン。クエリが結果セットの一部のみを返す場合、レスポンスには nextToken が含まれます。次のリクエストでこのトークンを渡して、残りの行を取得します。 重要
nextToken を永続化したり、フロントエンドページに転送したりするには、Base64 を使用してエンコードします。トークンの変換に |
例
次の例では、timeseriesKey を指定して時系列のデータをクエリします。
func GetTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
fmt.Println("[Info]: Begin to get timeseries data !")
// データをクエリする時系列の timeseriesKey を構築します。
timeseriesKey := tablestore.NewTimeseriesKey()
timeseriesKey.SetMeasurementName("NETWORK")
timeseriesKey.SetDataSource("127.0.0.1")
timeseriesKey.AddTag("City" , "Hangzhou")
timeseriesKey.AddTag("Region" , "Xihu")
// クエリリクエストを構築します。
getTimeseriesDataRequest := tablestore.NewGetTimeseriesDataRequest(timeseriesTableName)
getTimeseriesDataRequest.SetTimeseriesKey(timeseriesKey)
getTimeseriesDataRequest.SetTimeRange(0 , time.Now().UnixNano() / 1000) // クエリの時間範囲を指定します。
getTimeseriesDataRequest.SetLimit(-1)
// 時系列クライアントの API を呼び出して、時系列データをクエリします。
getTimeseriesResp , err := client.GetTimeseriesData(getTimeseriesDataRequest)
if err != nil {
fmt.Println("[Error]: Get timeseries data Failed with error: " , err)
return
}
fmt.Println("[Info]: Get timeseries data succeed ! TimeseriesRows: ")
for i := 0; i < len(getTimeseriesResp.GetRows()); i++ {
fmt.Println("[Info]: Row" , i , ": [" , getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetMeasurementName(),
getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetDataSource(),
getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetTags(), "]",
getTimeseriesResp.GetRows()[i].GetTimeInus())
rows := getTimeseriesResp.GetRows()[i].GetFieldsMap()
for key, value := range rows {
fmt.Println(key, value.Value)
}
}
fmt.Println("[Info]: GetTimeseriesDataSample finished! RequestId: " , getTimeseriesResp.RequestId)
}
よくある質問
関連ドキュメント
-
API の詳細については、「GetTimeseriesData」をご参照ください。
-
SQL で時系列データをクエリすることもできます。詳細については、「SQL を使用した時系列データのクエリ」をご参照ください。
-
時系列データを可視化するには、Tablestore を Grafana に接続できます。詳細については、「Grafana への接続」をご参照ください。