全部产品
Search
文档中心

Tablestore:Gunakan model TimeSeries dengan menggunakan SDK Tablestore

更新时间:Jul 02, 2025

Saat menggunakan model TimeSeries dengan SDK Tablestore, Anda perlu membuat tabel deret waktu, menulis data ke dalamnya, mengambil deret waktu, dan menanyakan data deret waktu.

Prasyarat

Catatan penggunaan

Model TimeSeries didukung di wilayah berikut: Tiongkok (Hangzhou), Tiongkok (Shanghai), Tiongkok (Beijing), Tiongkok (Zhangjiakou), Tiongkok (Ulanqab), Tiongkok (Shenzhen), Tiongkok (Chengdu), Tiongkok (Hong Kong), Jepang (Tokyo), Malaysia (Kuala Lumpur), Jerman (Frankfurt), Indonesia (Jakarta), Inggris (London), AS (Silicon Valley), AS (Virginia), SAU (Riyadh - Partner Region), dan Singapura.

Gunakan SDK Tablestore

Anda dapat menggunakan SDK Tablestore berikut untuk memulai dengan model TimeSeries. Dalam topik ini, SDK Tablestore untuk Java digunakan.

Langkah 1: Buat tabel deret waktu

Panggil operasi CreateTimeseriesTable untuk membuat tabel deret waktu guna menyimpan data deret waktu.

Catatan

Untuk menyimpan data deret waktu dengan biaya rendah serta segera menanyakan dan menganalisis data tersebut, Anda dapat membuat penyimpanan analitik untuk tabel deret waktu. Fitur penyimpanan analitik digunakan untuk penyimpanan jangka panjang dan analisis data deret waktu. Untuk informasi lebih lanjut, lihat Penyimpanan Analitik untuk Deret Waktu.

Kode sampel berikut menunjukkan cara membuat tabel deret waktu bernama test_timeseries_table di mana data tidak pernah kedaluwarsa:

private static void createTimeseriesTable(TimeseriesClient client) {
    String tableName = "test_timeseries_table";
    TimeseriesTableMeta timeseriesTableMeta = new TimeseriesTableMeta(tableName);
    int timeToLive = -1;
    timeseriesTableMeta.setTimeseriesTableOptions(new TimeseriesTableOptions(timeToLive));
    CreateTimeseriesTableRequest request = new CreateTimeseriesTableRequest(timeseriesTableMeta);
    // Tentukan bahwa penyimpanan analitik default tidak dibuat.
    request.setEnableAnalyticalStore(false);    
    client.createTimeseriesTable(request);
}

Langkah 2: Tulis data deret waktu

Setelah membuat tabel deret waktu, panggil operasi PutTimeseriesData untuk menulis beberapa catatan data deret waktu ke tabel secara bersamaan.

Kode sampel berikut menunjukkan cara menulis beberapa baris data deret waktu ke tabel bernama test_timeseries_table:

private static void putTimeseriesData(TimeseriesClient client) {
    List<TimeseriesRow> rows = new ArrayList<TimeseriesRow>();
    for (int i = 0; i < 10; i++) {
        Map<String, String> tags = new HashMap<String, String>();
        tags.put("region", "hangzhou");
        tags.put("os", "Ubuntu16.04");
        // Tentukan nama metrik, sumber data, dan tag dari deret waktu untuk membangun pengenal deret waktu. 
        TimeseriesKey timeseriesKey = new TimeseriesKey("cpu", "host_" + i, tags);
        // Tentukan parameter timeseriesKey dan timeInUs untuk membuat baris data deret waktu. 
        TimeseriesRow row = new TimeseriesRow(timeseriesKey, System.currentTimeMillis() * 1000 + i);
        // Tambahkan nilai data. 
        row.addField("cpu_usage", ColumnValue.fromDouble(10.0));
        row.addField("cpu_sys", ColumnValue.fromDouble(5.0));
        rows.add(row);
    }
    String tableName = "test_timeseries_table";
    PutTimeseriesDataRequest putTimeseriesDataRequest = new PutTimeseriesDataRequest(tableName);
    putTimeseriesDataRequest.setRows(rows);
    // Tulis beberapa baris data deret waktu secara bersamaan. 
    PutTimeseriesDataResponse putTimeseriesDataResponse = client.putTimeseriesData(putTimeseriesDataRequest);
    // Periksa apakah semua data ditulis ke tabel deret waktu. 
    if (!putTimeseriesDataResponse.isAllSuccess()) {
        for (PutTimeseriesDataResponse.FailedRowResult failedRowResult : putTimeseriesDataResponse.getFailedRows()) {
            System.out.println(failedRowResult.getIndex());
            System.out.println(failedRowResult.getError());
        }
    }
}

Langkah 3: Ambil deret waktu

Jika Anda tidak yakin tentang informasi deret waktu yang ingin ditanyakan, seperti nama metrik dan sumber data, panggil operasi QueryTimeseriesMeta untuk menentukan kondisi guna mengambil deret waktu yang memenuhi kondisi tertentu.

Kode sampel berikut menunjukkan cara menanyakan semua deret waktu yang namanya adalah cpu dan memiliki tag os dengan nilai diawali oleh Ubuntu dalam tabel deret waktu.

private static void queryTimeseriesMeta(TimeseriesClient client) {
    // Tentukan nama tabel deret waktu. 
    String tableName = "<TIME_SERIES_TABLE>";
    QueryTimeseriesMetaRequest queryTimeseriesMetaRequest = new QueryTimeseriesMetaRequest(tableName);
    // Tanyakan semua deret waktu yang namanya adalah cpu dan memiliki tag os yang nilainya diawali dengan Ubuntu. measurement_name="cpu" and have_prefix(os, "Ubuntu") 
    CompositeMetaQueryCondition compositeMetaQueryCondition = new CompositeMetaQueryCondition(MetaQueryCompositeOperator.OP_AND);
    compositeMetaQueryCondition.addSubCondition(new MeasurementMetaQueryCondition(MetaQuerySingleOperator.OP_EQUAL, "cpu"));
    compositeMetaQueryCondition.addSubCondition(new TagMetaQueryCondition(MetaQuerySingleOperator.OP_PREFIX, "os", "Ubuntu"));
    queryTimeseriesMetaRequest.setCondition(compositeMetaQueryCondition);
    queryTimeseriesMetaRequest.setGetTotalHits(true);
    // Tentukan jumlah maksimum entri metadata deret waktu yang dapat dikembalikan untuk satu permintaan. 
    queryTimeseriesMetaRequest.setLimit(100);
    // Mulai penanyaaan. 
    QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
    // Tampilkan jumlah total deret waktu yang memenuhi kondisi penanyaaan. 
    System.out.println(queryTimeseriesMetaResponse.getTotalHits());

    // Simpan hasil permintaan. 
    List<TimeseriesMeta> timeseriesMetas = new ArrayList<TimeseriesMeta>();
    timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());

    // Jika NextToken termasuk dalam respons, Anda dapat memulai permintaan baru untuk mendapatkan hasil yang tersisa. 
    while (queryTimeseriesMetaResponse.getNextToken() != null) {
        queryTimeseriesMetaRequest.setNextToken(queryTimeseriesMetaResponse.getNextToken());
        queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
        timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
        // Tentukan jumlah maksimum deret waktu yang dapat dikembalikan. 
        if (timeseriesMetas.size() >= 1000) {
            break;
        }
    }

    System.out.println(timeseriesMetas.size());
    for (TimeseriesMeta timeseriesMeta : timeseriesMetas) {
        System.out.println(timeseriesMeta.getTimeseriesKey().getMeasurementName());
        System.out.println(timeseriesMeta.getTimeseriesKey().getDataSource());
        System.out.println(timeseriesMeta.getTimeseriesKey().getTags());
        System.out.println(timeseriesMeta.getAttributes());
        System.out.println(timeseriesMeta.getUpdateTimeInUs());
    }
}

Langkah 4: Kueri data deret waktu

Panggil operasi GetTimeseriesData untuk menanyakan data deret waktu yang memenuhi kondisi tertentu dalam deret waktu.

FAQ

Referensi

Anda juga dapat mulai menggunakan model TimeSeries melalui konsol Tablestore atau CLI Tablestore. Untuk informasi lebih lanjut, lihat Gunakan Model TimeSeries di Konsol Tablestore dan Gunakan Model TimeSeries di CLI Tablestore.