全部產品
Search
文件中心

Tablestore:寫入時序資料

更新時間:Jun 30, 2024

建立時序表後,您可以使用PutTimeseriesData介面批量寫入時序資料。一次PutTimeseriesData調用支援寫入多行資料。

前提條件

參數

一行時序資料(timeseriesRow)包括時間軸標識(timeseriesKey)和時間軸資料,其中時間軸資料包括資料點的時間(timeInUs)和資料點(fields)。詳細參數說明請參見下表。

參數

是否必選

說明

timeseriesKey

時間軸標識,包括如下內容:

  • measurementName:時間軸的度量名稱。

  • dataSource:資料來源資訊,可以為空白。

  • tags:時間軸的標籤資訊,為多個字串的key-value對。

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

  • 寫入資料後,即可根據需要讀取時序表中的資料。更多資訊,請參見查詢時序資料

  • 如果要檢索滿足指定條件的時間軸資訊,您可以通過檢索時間軸實現。更多資訊,請參見檢索時間軸

  • 如果時間軸中繼資料中的屬性資訊不滿足使用需要,您可以更新或者刪除時間軸中繼資料。更多資訊,請參見更新時間軸中繼資料刪除時間軸中繼資料

  • 如果要遷移Kafka資料來源的資料到Table Store時序表中,您可以通過Tablestore Sink Connector實現資料移轉。具體操作,請參見同步資料到時序表