すべてのプロダクト
Search
ドキュメントセンター

Tablestore:時系列データのクエリ

最終更新日:Dec 28, 2024

GetTimeseriesData オペレーションを呼び出して、時系列テーブル内の指定された条件を満たす時系列データをクエリできます。

前提条件

パラメーター

パラメーター

必須

説明

timeseriesKey

はい

クエリする時系列の識別子。次のパラメーターを使用して識別子を指定できます。

  • measurementName: 時系列のメトリック名。

  • dataSource: 時系列のデータソース。このパラメーターは空のままにすることができます。

  • tags: 時系列のタグ。このパラメーターの値は、STRING 型のキーと値のペアです。

重要

クエリする時系列の情報(メトリック名やデータソースなど)が不明な場合は、QueryTimeseriesMeta オペレーションを呼び出して、さまざまな条件に基づいて時系列を取得できます。詳細については、時系列の取得を参照してください。

timeRange

はい

クエリの時間範囲。時間範囲は左閉区間、右開区間です。次のパラメーターを使用して時間範囲を指定できます。

  • beginTimeInUs: 開始時刻。

  • endTimeInUs: 終了時刻。

backward

いいえ

クエリ結果を逆時系列順にソートするかどうかを指定します。これにより、時系列の最新データを取得できます。有効な値:

  • true: クエリ結果を逆時系列順にソートします。

  • false: クエリ結果を時系列順にソートします。これはデフォルト値です。

fieldsToGet

いいえ

返すデータ列の名前。このパラメーターを指定しない場合は、すべての列が返されます。

重要

fieldsToGet パラメーターを指定する場合は、返す各列の名前とデータ型を指定する必要があります。列のデータ型が列の名前と一致しない場合、その列は返されません。

limit

いいえ

返す最大行数。

説明

limit パラメーターは、1回の呼び出しで返すことができる最大行数を指定します。クエリ条件を満たす行数が limit パラメーターの値を超える場合、またはスキャンされたデータ量の制限により返される行数が limit パラメーターの値よりも少ない場合は、nextToken パラメーターを使用してクエリ条件を満たす残りのデータを返すことができます。

nextToken

いいえ

さらに結果を取得するために使用されるトークン。指定された条件を満たす行の一部のみがクエリで返された場合、レスポンスには nextToken パラメーターが含まれます。次のリクエストで nextToken パラメーターを指定して、残りの行を取得できます。

次のサンプルコードは、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)
}

FAQ

参照