全部产品
Search
文档中心

Tablestore:Kueri data deret waktu

更新时间:Jul 02, 2025

Topik ini menjelaskan cara mengkueri data deret waktu yang memenuhi kondisi tertentu dalam tabel deret waktu menggunakan Tablestore SDK for Java.

Prasyarat

Parameter

Parameter

Diperlukan

Deskripsi

timeseriesKey

Ya

Pengenal dari deret waktu yang ingin Anda kueri. Anda dapat menggunakan parameter berikut untuk menentukan pengenal:

  • measurementName: nama data deret waktu.

  • dataSource: sumber data dari deret waktu. Anda bisa membiarkan parameter ini kosong.

  • tags: tag dari deret waktu. Nilai dari parameter ini adalah pasangan kunci-nilai bertipe STRING.

Penting

Jika Anda tidak yakin tentang informasi deret waktu yang ingin Anda kueri, seperti nama data dan sumber data, Anda dapat memanggil operasi QueryTimeseriesMeta untuk mengambil deret waktu berdasarkan berbagai kondisi. Untuk informasi lebih lanjut, lihat Mengambil deret waktu.

timeRange

Ya

Rentang waktu untuk kueri. Rentang waktu adalah interval tertutup kiri, terbuka kanan. Anda dapat menggunakan parameter berikut untuk menentukan rentang waktu:

  • beginTimeInUs: waktu mulai.

  • endTimeInUs: waktu akhir.

backward

Tidak

Menentukan apakah akan mengurutkan hasil kueri dalam urutan kronologis terbalik. Ini memungkinkan Anda mendapatkan data terbaru dalam deret waktu. Nilai yang valid:

  • true: mengurutkan hasil kueri dalam urutan kronologis terbalik.

  • false: mengurutkan hasil kueri dalam urutan kronologis. Ini adalah nilai default.

fieldsToGet

Tidak

Nama kolom data yang ingin Anda kembalikan. Jika Anda tidak menentukan parameter ini, semua kolom dikembalikan.

Penting

Saat Anda menentukan parameter fieldsToGet, Anda harus menentukan nama dan tipe data setiap kolom yang ingin Anda kembalikan. Jika tipe data kolom tidak sesuai dengan nama kolom, kolom tersebut tidak dikembalikan.

limit

Tidak

Jumlah maksimum baris yang ingin Anda kembalikan.

Catatan

Parameter limit menentukan jumlah maksimum baris yang dapat dikembalikan untuk satu panggilan. Jika jumlah baris yang memenuhi kondisi kueri melebihi nilai parameter limit atau jumlah baris yang dikembalikan kurang dari nilai parameter limit karena batasan pada volume data yang dipindai, Anda dapat menggunakan parameter nextToken untuk mengembalikan data tersisa yang memenuhi kondisi kueri.

nextToken

Tidak

Token yang digunakan untuk mendapatkan hasil lebih lanjut. Jika hanya sebagian baris yang memenuhi kondisi tertentu yang dikembalikan dalam kueri, respons berisi parameter nextToken. Anda dapat menentukan parameter nextToken dalam permintaan berikutnya untuk mendapatkan baris tersisa.

Penting

Jika Anda ingin menyimpan nextToken secara permanen atau mentransfer nextToken ke halaman frontend, Anda dapat menggunakan Base64 untuk mengkodekan nextToken menjadi string. Sebuah nextToken bukanlah string. Jika Anda menggunakan string(nextToken) untuk mengkodekan token menjadi string, informasi tentang token hilang.

Contoh

Berikut adalah contoh kode yang menunjukkan cara mengkueri data dalam deret waktu berdasarkan timeseriesKey:

func GetTimeseriesDataSample(client *tablestore.TimeseriesClient , timeseriesTableName string) {
    fmt.Println("[Info]: Mulai mengambil data deret waktu!")

    // Buat timeseriesKey untuk deret waktu tempat Anda ingin mengkueri data. 
    timeseriesKey := tablestore.NewTimeseriesKey()
    timeseriesKey.SetMeasurementName("NETWORK")
    timeseriesKey.SetDataSource("127.0.0.1")
    timeseriesKey.AddTag("City" , "Hangzhou")
    timeseriesKey.AddTag("Region" , "Xihu")

    // Buat permintaan kueri. 
    getTimeseriesDataRequest := tablestore.NewGetTimeseriesDataRequest(timeseriesTableName)
    getTimeseriesDataRequest.SetTimeseriesKey(timeseriesKey)
    getTimeseriesDataRequest.SetTimeRange(0 , time.Now().UnixNano() / 1000) // Tentukan rentang waktu untuk kueri. 
    getTimeseriesDataRequest.SetLimit(-1)

    // Panggil operasi API terkait klien deret waktu untuk mengkueri data dalam deret waktu. 
    getTimeseriesResp , err := client.GetTimeseriesData(getTimeseriesDataRequest)
    if err != nil {
        fmt.Println("[Error]: Gagal mengambil data deret waktu dengan kesalahan: " , err)
        return
    }
    fmt.Println("[Info]: Berhasil mengambil data deret waktu! TimeseriesRows: ")
    for i := 0; i < len(getTimeseriesResp.GetRows()); i++ {
        fmt.Println("[Info]: Baris" , i , ": [" , getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetMeasurementName(),
            getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetDataSource(),
            getTimeseriesResp.GetRows()[i].GetTimeseriesKey().GetTags(), "]",
            getTimeseriesResp.GetRows()[i].GetTimeInus())
        rows := getTimeseriesResp.GetRows()[i].GetFieldsMap()
        for key, value := range rows {
            fmt.Println(key, value.Value)
        }
    }
    fmt.Println("[Info]: GetTimeseriesDataSample selesai! RequestId: " , getTimeseriesResp.RequestId)
}

FAQ

Referensi