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

Tablestore:時系列データの書き込み

最終更新日:Dec 28, 2024

時系列テーブルを作成した後、PutTimeseriesData オペレーションを呼び出して、複数の時系列データ行を一度に時系列テーブルに書き込むことができます。

前提条件

パラメーター

時系列データの行 (timeseriesRow) は、時系列識別子 (timeseriesKey) と時系列のデータで構成されます。時系列のデータは、データポイントが生成された時刻 (timeInUs) とデータポイント (fields) で構成されます。次の表にパラメーターを示します。

パラメーター

必須

説明

timeseriesKey

はい

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

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

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

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

timeInUs

はい

データポイントが生成された時刻。単位: マイクロ秒。

fields

はい

データポイント。各データポイントは、名前 (FieldKey) とデータ値 (FieldValue) で構成されます。

次のサンプルコードは、1 つ以上の時系列データ行を時系列テーブルに書き込む方法の例を示しています。

func PutTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
    fmt.Println("[Info]: Begin to PutTimeseriesDataSample !") // [情報]: PutTimeseriesDataSample を開始します!

    // Construct timeseriesRow.  // timeseriesRow を構築します。
    timeseriesKey := tablestore.NewTimeseriesKey()
    timeseriesKey.SetMeasurementName("CPU")
    timeseriesKey.SetDataSource("127.0.0.1")
    timeseriesKey.AddTag("City" , "Hangzhou")
    timeseriesKey.AddTag("Region" , "Xihu")

    timeseriesRow := tablestore.NewTimeseriesRow(timeseriesKey)
    timeseriesRow.SetTimeInus(time.Now().UnixNano() / 1000)
    timeseriesRow.AddField("temperature" , tablestore.NewColumnValue(tablestore.ColumnType_INTEGER , 98))
    timeseriesRow.AddField("status" , tablestore.NewColumnValue(tablestore.ColumnType_STRING , "ok"))

    // Construct timeseriesRow1. // timeseriesRow1 を構築します。
    timeseriesKey1 := tablestore.NewTimeseriesKey()
    timeseriesKey1.SetMeasurementName("NETWORK")
    timeseriesKey1.SetDataSource("127.0.0.1")
    timeseriesKey1.AddTag("City" , "Hangzhou")
    timeseriesKey1.AddTag("Region" , "Xihu")

    timeseriesRow1 := tablestore.NewTimeseriesRow(timeseriesKey1)
    timeseriesRow1.SetTimeInus(time.Now().UnixNano() / 1000)
    timeseriesRow1.AddField("in" , tablestore.NewColumnValue(tablestore.ColumnType_INTEGER , 1000))
    timeseriesRow1.AddField("data" , tablestore.NewColumnValue(tablestore.ColumnType_BINARY , []byte("tablestore")))
    timeseriesRow1.AddField("program" , tablestore.NewColumnValue(tablestore.ColumnType_STRING , "tablestore.d"))
    timeseriesRow1.AddField("status" , tablestore.NewColumnValue(tablestore.ColumnType_BOOLEAN, true))
    timeseriesRow1.AddField("lossrate" , tablestore.NewColumnValue(tablestore.ColumnType_DOUBLE , float64(1.9098)))

    // Construct the request to write the time series data. // 時系列データを書き込むリクエストを構築します。
    putTimeseriesDataRequest := tablestore.NewPutTimeseriesDataRequest(timeseriesTableName)
    putTimeseriesDataRequest.AddTimeseriesRows(timeseriesRow , timeseriesRow1)

    // Call the time series client-related API operation to write the time series data. // 時系列クライアント関連の API オペレーションを呼び出して、時系列データを書き込みます。
    putTimeseriesDataResponse , err := client.PutTimeseriesData(putTimeseriesDataRequest)
    if err != nil {
        fmt.Println("[Error]: Put timeseries data Failed with error: " , err) // [エラー]: 時系列データの書き込みがエラーで失敗しました:
        return
    }
    if len(putTimeseriesDataResponse.GetFailedRowResults()) > 0 {
        fmt.Println("[Warning]: Put timeseries data finished ! Some of timeseries row put Failed: ") // [警告]: 時系列データの書き込みが完了しました! 一部の時系列行の書き込みに失敗しました:
        for i := 0; i < len(putTimeseriesDataResponse.GetFailedRowResults()); i++ {
            FailedRow := putTimeseriesDataResponse.GetFailedRowResults()[i]
            fmt.Println("[Warning]: Failed Row: Index: " , FailedRow.Index , " Error: " , FailedRow.Error) // [警告]: 失敗した行: インデックス:  エラー:
        }
    } else {
        fmt.Println("[Info]: PutTimeseriesDataSample finished! RequestId: " , putTimeseriesDataResponse.RequestId) // [情報]: PutTimeseriesDataSample が完了しました! リクエスト ID:
    }
}

FAQ

参考資料

  • API オペレーションの詳細については、PutTimeseriesData を参照してください。

  • 時系列データを書き込んだ後、ビジネス要件に基づいて時系列テーブル内の時系列データを読み取ることができます。詳細については、時系列データのクエリを参照してください。

  • 特定の条件を満たす時系列を取得できます。詳細については、時系列の取得を参照してください。

  • 時系列のメタデータの属性がビジネス要件を満たしていない場合は、時系列メタデータを更新または削除できます。詳細については、時系列メタデータの更新時系列メタデータの削除を参照してください。

  • Apache Kafka から Tablestore の時系列テーブルにデータを移行する場合は、Tablestore Sink Connector を使用できます。詳細については、時系列テーブルへのデータ同期を参照してください。