時系列テーブルを作成したら、PutTimeseriesData 操作を呼び出して、複数行の時系列データを一度に時系列テーブルに書き込むことができます。
前提条件
-
時系列テーブルが作成済みです。詳細については、「時系列テーブルの作成」をご参照ください。
-
TimeseriesClient インスタンスが初期化済みです。詳細については、「OTSClient インスタンスの初期化」をご参照ください。
パラメーター
時系列データの各行 (timeseriesRow) は、時系列識別子 (timeseriesKey) とデータ本体で構成されます。データにはタイムスタンプ (timeInUs) と 1 つ以上のフィールド値 (fields) が含まれます。
timeseriesKey は、メトリクスタイプ (CPU や NETWORK など)、データソースホスト、およびキーと値のペア形式のラベルを識別します。fields は各データポイントの測定値を保持します。
|
パラメーター |
必須 |
説明 |
|
timeseriesKey |
はい |
時系列識別子。以下の情報を含みます。
|
|
timeInUs |
はい |
データポイントのタイムスタンプ(マイクロ秒単位)。 |
|
fields |
はい |
1 つ以上の |
例
以下の例では、PutTimeseriesData を使用して、CPU メトリックとネットワークメトリックの 2 行の時系列データを時系列テーブルに書き込みます。
timeseriesKey は関連するデータポイントをグループ化する ID を定義します。timeseriesRow はその ID にタイムスタンプとフィールド値をアタッチします。
func PutTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
fmt.Println("[Info]: Begin to PutTimeseriesDataSample !")
// 時系列行 timeseriesRow を構築します。
// timeseriesKey は時系列(メジャー名、ソースホスト、タグ)を識別します。
timeseriesKey := tablestore.NewTimeseriesKey()
timeseriesKey.SetMeasurementName("CPU")
timeseriesKey.SetDataSource("127.0.0.1")
timeseriesKey.AddTag("City" , "Hangzhou")
timeseriesKey.AddTag("Region" , "Xihu")
// timeseriesRow はキーにタイムスタンプとフィールド値をアタッチします。
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"))
// 時系列行 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)))
// 時系列データを書き込むリクエストを構築します。
putTimeseriesDataRequest := tablestore.NewPutTimeseriesDataRequest(timeseriesTableName)
putTimeseriesDataRequest.AddTimeseriesRows(timeseriesRow , timeseriesRow1)
// 時系列クライアントを呼び出して、時系列データを書き込みます。
putTimeseriesDataResponse , err := client.PutTimeseriesData(putTimeseriesDataRequest)
if err != nil {
fmt.Println("[Error]: Failed to put time series data. Error: " , err)
return
}
// バッチ書き込みは部分的に成功する場合があります。失敗した行はインデックスと
// エラーメッセージとともに返され、正常に書き込まれた行は即座にコミットされます。
if len(putTimeseriesDataResponse.GetFailedRowResults()) > 0 {
fmt.Println("[Warning]: Put time series data finished. Some rows failed to be written: ")
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)
}
}
よくある質問
参照
API オペレーションの詳細については、「PutTimeseriesData」をご参照ください。
データを書き込んだ後は、時系列テーブルからデータをクエリできます。詳細については、「時系列データのクエリ」をご参照ください。
特定の条件を満たす時系列を取得する方法については、「時系列の取得」をご参照ください。
Kafka データソースから Tablestore の時系列テーブルへデータを移行するには、Tablestore Sink Connector を使用します。詳細については、「Kafka データの時系列テーブルへの同期」をご参照ください。