全部产品
Search
文档中心

表格存储:写入时序数据

更新时间:May 13, 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数据源的数据到表格存储时序表中,您可以通过Tablestore Sink Connector实现数据迁移。具体操作,请参见同步数据到时序表