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.
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:
|
measurementMetaQueryCondition | Kondisi nama data deret waktu yang mencakup konten berikut:
|
dataSourceMetaQueryCondition | Kondisi sumber data yang mencakup konten berikut:
|
tagMetaQueryCondition | Kondisi tag yang mencakup konten berikut:
|
attributeMetaQueryCondition | Kondisi atribut untuk metadata deret waktu. Kondisi atribut mencakup konten berikut:
|
updateTimeMetaQueryCondition | Kondisi waktu pembaruan untuk metadata deret waktu. Kondisi waktu pembaruan mencakup konten berikut:
|
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:
Query data deret waktu yang memenuhi kondisi tertentu dalam deret waktu. Untuk informasi lebih lanjut, lihat Query Data Deret Waktu.
Perbarui atribut metadata deret waktu. Untuk informasi lebih lanjut, lihat Perbarui Metadata Deret Waktu.
Hapus metadata deret waktu yang tidak lagi diperlukan. Untuk informasi lebih lanjut, lihat Hapus Metadata Deret Waktu.