All Products
Search
Document Center

Tablestore:Kueri data deret waktu

Last Updated:May 01, 2026

Kueri data deret waktu yang memenuhi kondisi tertentu dari tabel deret waktu menggunakan Tablestore SDK untuk Java.

Prasyarat

Client telah diinisialisasi. Untuk informasi selengkapnya, lihat Initialize a Tablestore client.

Metode

public GetTimeseriesDataResponse getTimeseriesData(GetTimeseriesDataRequest request) throws TableStoreException, ClientException

Parameter GetTimeseriesDataRequest

  • timeseriesTableName (wajib) String: nama tabel deret waktu.

  • timeseriesKey (wajib) TimeseriesKey: pengenal deret waktu. Tabel berikut menjelaskan parameternya.

    Parameter

    Tipe

    Deskripsi

    measurementName (wajib)

    String

    Nama metrik dari deret waktu.

    dataSource (wajib)

    String

    Sumber data dari deret waktu.

    tags (wajib)

    SortedMap<String, String>

    Tag dari deret waktu, dalam bentuk pasangan kunci-nilai.

  • beginTimeInUs (wajib) long: timestamp awal dalam mikrodetik. Nilainya harus lebih besar dari atau sama dengan 0. Rentang kueri mencakup timestamp ini.

    • Rentang kueri mencakup timestamp awal.

  • endTimeInUs (wajib) long: timestamp akhir dalam mikrodetik. Nilainya harus lebih besar dari 0. Rentang kueri tidak mencakup timestamp ini.

    • Rentang kueri tidak mencakup timestamp akhir.

  • limit (opsional) int: jumlah maksimum baris yang dikembalikan per permintaan. Nilai default: 5000. Nilai valid: (0,5000].

    • Jika jumlah baris yang sesuai melebihi batas, respons mungkin tetap mengembalikan lebih sedikit baris karena jumlah data yang dipindai. Gunakan parameter nextToken untuk mengambil data yang tersisa.

  • nextToken (opsional) byte[]: token paginasi yang digunakan untuk mengambil halaman hasil berikutnya. Secara default kosong.

    • Biarkan nextToken kosong untuk permintaan pertama. Jika respons tidak mencakup semua data yang sesuai, nextToken dalam respons tidak kosong. Teruskan nilai tersebut dalam permintaan berikutnya untuk melakukan paginasi melalui hasil.

    • Untuk menyimpan atau mentransfer nextToken, encode sebagai string Base64. Token ini bersifat biner dan bukan string — penggunaan langsung new String(nextToken) akan merusak token.

  • backward (opsional) boolean: menentukan apakah data dibaca dalam urutan kronologis terbalik. Nilai default: false.

  • fieldsToGet (opsional) List<Pair<String, ColumnType>>: kolom data yang akan dikembalikan. Jika tidak ditentukan, semua kolom data akan dikembalikan.

    • Tentukan nama dan tipe data untuk setiap kolom. Jika tipe yang ditentukan tidak sesuai dengan tipe aktual, kolom tersebut tidak dapat dibaca.

Kode contoh

Contoh berikut melakukan kueri data deret waktu dari tabel deret waktu bernama timeseries_table_sample:

private static void getTimeseriesData(TimeseriesClient client) {
    String tableName = "timeseries_table_sample";
    GetTimeseriesDataRequest getTimeseriesDataRequest = new GetTimeseriesDataRequest(tableName);
    
    // Tentukan pengenal deret waktu. Dalam contoh ini, nama metrik adalah cpu, sumber data adalah host_0, dan tag-nya adalah "region=hangzhou" dan "os=Ubuntu16.04".
    Map<String, String> tags = new HashMap<String, String>();
    tags.put("region", "hangzhou");
    tags.put("os", "Ubuntu16.04");
    TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_0", tags);
    getTimeseriesDataRequest.setTimeseriesKey(timeseriesKey);
    
    // Tentukan rentang waktu.
    getTimeseriesDataRequest.setTimeRange(0, (System.currentTimeMillis() + 60 * 1000) * 1000);
    getTimeseriesDataRequest.setLimit(20);
    
    // Lakukan kueri data deret waktu.
    GetTimeseriesDataResponse getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
    // Cetak hasil kueri.
    getTimeseriesDataResponse.getRows().forEach(row -> {
        System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields());
    });
}

Anda juga dapat mengonfigurasi pengaturan opsional berikut:

  • Tentukan jumlah maksimum baris per permintaan

    getTimeseriesDataRequest.setLimit(20);
  • Baca data dalam urutan kronologis terbalik

    // Baca data dalam urutan kronologis terbalik untuk mendapatkan data terbaru dari deret waktu.
    getTimeseriesDataRequest.setBackward(true);
  • Tentukan kolom data yang akan dikembalikan

     getTimeseriesDataRequest.addFieldToGet("col_string", ColumnType.STRING);
     getTimeseriesDataRequest.addFieldToGet("col_long", ColumnType.INTEGER);
     getTimeseriesDataRequest.addFieldToGet("col_double", ColumnType.DOUBLE);
  • Lakukan paginasi hasil menggunakan parameter nextToken

    // Jika nextToken tidak null, masih ada data yang tersedia.
    if (getTimeseriesDataResponse.getNextToken() != null) {
        // Ambil nilai nextToken.
        byte[] nextToken = getTimeseriesDataResponse.getNextToken();
        
        /*
        // Untuk menyimpan atau mentransfer nextToken, encode sebagai string Base64.
        String tokenAsString = Base64.toBase64String(nextToken);
        // Decode string kembali ke byte[].
        byte[] tokenAsByte = Base64.fromBase64String(tokenAsString);
        */
        
        // Teruskan nextToken untuk mengambil halaman berikutnya.
        getTimeseriesDataRequest.setNextToken(nextToken);
        // Lakukan kueri data deret waktu.
        getTimeseriesDataResponse = client.getTimeseriesData(getTimeseriesDataRequest);
        // Cetak hasil kueri.
        getTimeseriesDataResponse.getRows().forEach(row -> {
            System.out.println("TimeseriesKey: " + row.getTimeseriesKey() + "; TimeInUs: " + row.getTimeInUs() + "; Fields: " + row.getFields());
        });
    }

FAQ