All Products
Search
Document Center

Tablestore:Menulis data deret waktu

Last Updated:Apr 30, 2026

Setelah membuat tabel deret waktu, Anda dapat memanggil operasi PutTimeseriesData untuk menulis beberapa baris data deret waktu ke tabel tersebut sekaligus.

Prasyarat

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:

  • measurementName: Nama pengukuran dari deret waktu.

  • dataSource: Sumber data. Nilai ini boleh kosong.

  • tags: Tag untuk deret waktu, dinyatakan sebagai pasangan kunci-nilai berupa string.

timeInUs

Ya

Timestamp titik data, dalam mikrodetik.

fields

Ya

Titik data, berupa satu atau beberapa pasangan FieldKeyFieldValue.

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