全部产品
Search
文档中心

Tablestore:Query deret waktu

更新时间:Jul 02, 2025

Untuk mengquery informasi tentang deret waktu seperti nama data deret waktu dan sumber data, atau mencantumkan deret waktu yang memenuhi kondisi tertentu, Anda dapat menggunakan operasi QueryTimeseriesMeta. Operasi ini memungkinkan Anda mengquery deret waktu berdasarkan kondisi seperti nama data deret waktu, sumber data, tag, atribut, dan waktu pembaruan.

Catatan

Untuk informasi lebih lanjut, lihat QueryTimeseriesMeta.

Prasyarat

Klien harus diinisialisasi terlebih dahulu. Untuk detail lebih lanjut, lihat Inisialisasi Klien Tablestore.

Definisi kelas

public class QueryTimeseriesMetaRequest implements Request {
    /** Nama tabel deret waktu. */
    private final String timeseriesTableName;
    /** Kondisi query.*/
    private MetaQueryCondition condition;
    /** Menentukan apakah akan mengembalikan jumlah total deret waktu yang memenuhi kondisi query. */
    private boolean getTotalHits = false;
    /** Jumlah deret waktu yang dikembalikan dalam satu waktu. */
    private int limit = -1;
    /** Token yang digunakan dalam permintaan berikutnya untuk mengquery deret waktu. */
    private byte[] nextToken;
}

Kelas-kelas berikut mendefinisikan kondisi query:

CompositeMetaQueryCondition

public class CompositeMetaQueryCondition implements MetaQueryCondition {
    /** Operator logis. */
    private final MetaQueryCompositeOperator operator;
    /** Daftar subkondisi. */
    private List<MetaQueryCondition> subConditions = new ArrayList<MetaQueryCondition>();
}

MeasurementMetaQueryCondition

public class MeasurementMetaQueryCondition implements MetaQueryCondition {
    /** Operator relasional. */
    private final MetaQuerySingleOperator operator;
    /** Nama data deret waktu dari deret waktu yang ingin Anda query. */
    private final String value;
}

DataSourceMetaQueryCondition

public class DataSourceMetaQueryCondition implements MetaQueryCondition {
    /** Operator relasional. */
    private final MetaQuerySingleOperator operator;
     /** Nama sumber data dari deret waktu yang ingin Anda query. */
    private final String value;
}

TagMetaQueryCondition

public class TagMetaQueryCondition implements MetaQueryCondition {
    /** Operator relasional. */
    private final MetaQuerySingleOperator operator;
    /** Nama tag. */
    private final String tagName;
    /** Nilai tag. */
    private final String value;
}

AttributeMetaQueryCondition

public class AttributeMetaQueryCondition implements MetaQueryCondition {
    /** Operator relasional. */
    private final MetaQuerySingleOperator operator;
    /** Nama atribut. */
    private final String attributeName;
    /** Nilai atribut. */
    private final String value;
}

UpdateTimeMetaQueryCondition

public class UpdateTimeMetaQueryCondition implements MetaQueryCondition {
    /** Operator relasional. */
    private final MetaQuerySingleOperator operator;
    /** Timestamp ketika metadata deret waktu diperbarui. */
    private final long timeInUs;
}

Parameter

Untuk mengquery deret waktu, Anda perlu menentukan parameter timeseriesTableName dan condition. Jenis kondisi yang didukung meliputi: compositeMetaQueryCondition, measurementMetaQueryCondition, dataSourceMetaQueryCondition, tagMetaQueryCondition, attributeMetaQueryCondition, dan updateTimeMetaQueryCondition. Tabel berikut menjelaskan kondisi tersebut.

Kondisi

Deskripsi

compositeMetaQueryCondition

Kondisi komposit yang mencakup konten berikut:

  • operator: operator logis. Nilai valid: AND, OR, dan NOT.

  • subConditions: subkondisi yang dapat digabungkan dengan menggunakan operator untuk query kompleks.

measurementMetaQueryCondition

Kondisi nama data deret waktu yang mencakup konten berikut:

  • operator: operator relasional atau kondisi pencocokan awalan. Nilai valid: =, !=, >, >=, <, dan <=.

  • value: nama data deret waktu dari deret waktu yang ingin Anda query. Tipe: STRING.

dataSourceMetaQueryCondition

Kondisi sumber data yang mencakup konten berikut:

  • operator: operator relasional atau kondisi pencocokan awalan. Nilai valid: =, !=, >, >=, <, dan <=.

  • value: sumber data dari deret waktu yang ingin Anda query. Tipe: STRING.

tagMetaQueryCondition

Kondisi tag yang mencakup konten berikut:

  • operator: operator relasional atau kondisi pencocokan awalan. Nilai valid: =, !=, >, >=, <, dan <=.

  • tagName: nama tag dari deret waktu yang ingin Anda query. Tipe: STRING.

  • value: nilai tag dari deret waktu yang ingin Anda query. Tipe: STRING.

attributeMetaQueryCondition

Kondisi atribut untuk metadata deret waktu. Kondisi atribut mencakup konten berikut:

  • operator: operator relasional atau kondisi pencocokan awalan. Nilai valid: =, !=, >, >=, <, dan <=.

  • attributeName: nama atribut. Tipe: STRING.

  • value: nilai atribut. Tipe: STRING.

updateTimeMetaQueryCondition

Kondisi waktu pembaruan untuk metadata deret waktu. Kondisi waktu pembaruan mencakup konten berikut:

  • operator: operator relasional. Nilai valid: =, !=, >, >=, <, dan <=.

  • timeInUs: timestamp ketika metadata deret waktu diperbarui. Satuan: mikrodetik.

Contoh

Kode sampel berikut menunjukkan cara mengquery semua deret waktu dengan nama data deret waktu "cpu" dan memiliki tag "os" dengan nilai yang 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);
    // Query semua deret waktu yang memiliki nama data deret waktu 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 query.
    QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
    // Tampilkan jumlah total deret waktu yang memenuhi kondisi query.
    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());
    }
}

Apa yang harus dilakukan selanjutnya

Setelah Anda mengquery deret waktu, Anda dapat melakukan operasi berikut pada deret waktu: