創建時序表后,您可以使用PutTimeseriesData接口批量寫入時序數據。一次PutTimeseriesData調用支持寫入多行數據。
前提條件
已創建時序表。具體操作,請參見創建時序表。
已初始化TimeseriesClient。具體操作,請參見初始化OTSClient。
參數
一行時序數據(timeseriesRow)包括時間線標識(timeseriesKey)和時間線數據,其中時間線數據包括數據點的時間(timeInUs)和數據點(fields)。詳細參數說明請參見下表。
參數 | 是否必選 | 說明 |
timeseriesKey | 是 | 時間線標識,包括如下內容:
|
timeInUs | 是 | 數據點的時間,單位為微秒。 |
fields | 是 | 數據點,可以由多個名稱(FieldKey)和數據值(FieldValue)對組成。 |
示例
以下示例用于向時序表中寫入一個或多個時序數據。
func PutTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
fmt.Println("[Info]: Begin to PutTimeseriesDataSample !")
// 構造時序數據行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"))
// 構造時序數據行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]: 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)
}
}
常見問題
相關文檔
關于API說明的更多信息,請參見PutTimeseriesData。
寫入數據后,即可根據需要讀取時序表中的數據。更多信息,請參見查詢時序數據。
如果要檢索滿足指定條件的時間線信息,您可以通過檢索時間線實現。更多信息,請參見檢索時間線。
如果時間線元數據中的屬性信息不滿足使用需要,您可以更新或者刪除時間線元數據。更多信息,請參見更新時間線元數據或刪除時間線元數據。
在某些場景下,如果希望將時序表中的時序數據遷移到另一個時序表中,您可以DataWorks數據集成服務實現。更多信息,請參見將表格存儲時序表中數據同步到另一個時序表。
如果要遷移Kafka數據源的數據到表格存儲時序表中,您可以通過Tablestore Sink Connector實現數據遷移。具體操作,請參見同步數據到時序表。