全部产品
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

Klien harus sudah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.

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 parameter yang menentukan pengenal tersebut.

    Parameter

    Tipe

    Deskripsi

    measurementName (wajib)

    String

    Nama metrik dari deret waktu.

    dataSource (wajib)

    String

    Informasi sumber data dari deret waktu.

    tags (wajib)

    SortedMap<String, String>

    Informasi tag dari deret waktu, yang terdiri dari beberapa pasangan kunci-nilai.

  • beginTimeInUs (wajib) long: Timestamp awal dalam mikrodetik. Nilainya harus lebih besar dari atau sama dengan 0.

    • Kondisi kueri mencakup timestamp awal.

  • endTimeInUs (wajib) long: Timestamp akhir dalam mikrodetik. Nilainya harus lebih besar dari 0.

    • Kondisi kueri tidak mencakup timestamp akhir.

  • limit (opsional) int: Jumlah maksimum baris yang dikembalikan dalam satu permintaan. Nilai default adalah 5.000. Rentang nilai valid: (0,5000].

    • Meskipun jumlah baris yang memenuhi kondisi kueri melebihi nilai parameter limit, jumlah baris yang dikembalikan dalam satu permintaan mungkin tetap kurang dari nilai parameter limit karena faktor seperti jumlah data yang dipindai. Anda dapat menggunakan parameter nextToken untuk mendapatkan data yang tersisa.

  • nextToken (opsional) byte[]: Token untuk kueri halaman, digunakan untuk mendapatkan halaman data berikutnya. Parameter ini kosong secara default.

    • Untuk permintaan pertama, biarkan parameter nextToken kosong. Jika permintaan tidak mengembalikan semua data yang memenuhi kondisi kueri, parameter nextToken dalam respons tidak kosong. Anda dapat menggunakan parameter nextToken untuk kueri halaman.

    • Jika Anda ingin menyimpan parameter nextToken atau mentransfer parameter nextToken ke halaman frontend, gunakan Base64 untuk mengkodekan parameter nextToken menjadi string untuk penyimpanan dan transmisi. Parameter nextToken itu sendiri bukan string. Jika Anda langsung menggunakan new String(nextToken) untuk pengkodean, informasi token akan hilang.

  • backward (opsional) boolean: Menentukan apakah membaca data dalam urutan kronologis terbalik. Nilai default adalah false.

  • fieldsToGet (opsional) List<Pair<String, ColumnType>>: Kolom data yang ingin Anda kembalikan. Jika Anda tidak mengonfigurasi parameter ini, semua kolom data dikembalikan.

    • Saat menentukan nilai untuk parameter fieldsToGet, Anda harus secara eksplisit menentukan nama dan tipe data setiap kolom data yang ingin Anda kembalikan. Jika tipe data kolom data tidak sesuai dengan tipe sebenarnya, data di kolom tersebut tidak dapat dibaca.

Kode contoh

Kode contoh berikut memberikan contoh tentang cara mengkueri data deret waktu yang memenuhi kondisi tertentu dalam 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 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);
    
    // 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());
    });
}

Saat mengkueri data deret waktu, Anda juga dapat merujuk pada kode contoh berikut untuk mengonfigurasi pengaturan tertentu:

  • Tentukan jumlah maksimum baris yang dikembalikan dalam satu permintaan

    getTimeseriesDataRequest.setLimit(20);
  • Tentukan bahwa data dibaca dalam urutan kronologis terbalik

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

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

    // Jika nilai parameter nextToken tidak kosong, Anda dapat memulai permintaan berikutnya.
    if (getTimeseriesDataResponse.getNextToken() != null) {
        // Dapatkan nilai parameter nextToken.
        byte[] nextToken = getTimeseriesDataResponse.getNextToken();
        
        /*
        // Jika Anda ingin menyimpan parameter nextToken atau mentransfer parameter nextToken ke halaman frontend, Anda dapat menggunakan Base64 untuk mengkodekan parameter nextToken menjadi string untuk penyimpanan dan transmisi.
        String tokenAsString = Base64.toBase64String(nextToken);
        // Dekode string kembali ke tipe byte[] nextToken.
        byte[] tokenAsByte = Base64.fromBase64String(tokenAsString);
        */
        
        // Tentukan nilai parameter nextToken.
        getTimeseriesDataRequest.setNextToken(nextToken);
        // 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