Setelah membuat tabel deret waktu, Anda dapat memanggil operasi PutTimeseriesData untuk menulis beberapa baris data deret waktu ke tabel tersebut sekaligus.
Prasyarat
-
Tabel deret waktu telah dibuat. Untuk informasi selengkapnya, lihat Create a time series table.
-
Instans TimeseriesClient telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize an OTSClient instance.
Parameter
Setiap baris data deret waktu (timeseriesRow) terdiri dari pengenal deret waktu (timeseriesKey) dan data itu sendiri. Data tersebut mencakup timestamp (timeInUs) serta satu atau beberapa nilai bidang (fields).
timeseriesKey mengidentifikasi jenis metrik (misalnya CPU atau NETWORK), host sumber data, dan label pasangan kunci-nilai. fields menyimpan nilai hasil pengukuran untuk setiap titik data.
|
Parameter |
Wajib |
Deskripsi |
|
timeseriesKey |
Ya |
Pengenal deret waktu. Berisi informasi berikut:
|
|
timeInUs |
Ya |
Timestamp titik data, dalam mikrodetik. |
|
fields |
Ya |
Titik data, berupa satu atau beberapa pasangan |
Contoh
Contoh berikut menulis dua baris data deret waktu—satu untuk metrik CPU dan satu untuk metrik jaringan—ke tabel deret waktu menggunakan PutTimeseriesData.
timeseriesKey mendefinisikan identitas yang mengelompokkan titik data terkait. timeseriesRow menyambungkan timestamp dan nilai bidang ke identitas tersebut.
func PutTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
fmt.Println("[Info]: Begin to PutTimeseriesDataSample !")
// Membuat baris deret waktu timeseriesRow.
// timeseriesKey mengidentifikasi deret waktu — nama pengukuran, host sumber, dan tag.
timeseriesKey := tablestore.NewTimeseriesKey()
timeseriesKey.SetMeasurementName("CPU")
timeseriesKey.SetDataSource("127.0.0.1")
timeseriesKey.AddTag("City" , "Hangzhou")
timeseriesKey.AddTag("Region" , "Xihu")
// timeseriesRow menyambungkan timestamp dan nilai bidang ke kunci tersebut.
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"))
// Membuat baris deret waktu 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)))
// Membuat permintaan untuk menulis data deret waktu.
putTimeseriesDataRequest := tablestore.NewPutTimeseriesDataRequest(timeseriesTableName)
putTimeseriesDataRequest.AddTimeseriesRows(timeseriesRow , timeseriesRow1)
// Memanggil client deret waktu untuk menulis data deret waktu.
putTimeseriesDataResponse , err := client.PutTimeseriesData(putTimeseriesDataRequest)
if err != nil {
fmt.Println("[Error]: Failed to put time series data. Error: " , err)
return
}
// Penulisan batch mungkin hanya berhasil sebagian. Baris yang gagal dikembalikan beserta indeks dan
// pesan error-nya, sedangkan baris yang berhasil ditulis langsung dikomit.
if len(putTimeseriesDataResponse.GetFailedRowResults()) > 0 {
fmt.Println("[Warning]: Put time series data finished. Some rows failed to be written: ")
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)
}
}
FAQ
Referensi
Untuk informasi selengkapnya tentang operasi API, lihat PutTimeseriesData.
Setelah menulis data, lakukan kueri terhadap data tersebut dari tabel deret waktu. Untuk informasi selengkapnya, lihat Query time series data.
Untuk mengambil deret waktu yang memenuhi kondisi tertentu, lihat Retrieve time series.
Untuk memperbarui atau menghapus metadata deret waktu, lihat Update a time series dan Delete a time series.
Untuk memigrasikan data dari sumber data Kafka ke tabel deret waktu Tablestore, gunakan Tablestore Sink Connector. Untuk informasi selengkapnya, lihat Synchronize Kafka data to a time series table.