创建时序表后,您可以使用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实现数据迁移。具体操作,请参见同步数据到时序表。