時系列テーブルを作成した後、PutTimeseriesData オペレーションを呼び出して、複数の時系列データ行を一度に時系列テーブルに書き込むことができます。
前提条件
時系列テーブルが作成されていること。詳細については、時系列テーブルの作成を参照してください。
TimeseriesClient インスタンスが初期化されていること。詳細については、OTSClient インスタンスの初期化を参照してください。
パラメーター
時系列データの行 (timeseriesRow) は、時系列識別子 (timeseriesKey) と時系列のデータで構成されます。時系列のデータは、データポイントが生成された時刻 (timeInUs) とデータポイント (fields) で構成されます。次の表にパラメーターを示します。
パラメーター | 必須 | 説明 |
timeseriesKey | はい | 時系列の識別子。次のパラメーターを使用して識別子を指定できます。
|
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 を使用できます。詳細については、時系列テーブルへのデータ同期を参照してください。