Panggil QueryTimeseriesMeta untuk mencari deret waktu dalam tabel deret waktu. Anda dapat memfilter hasil berdasarkan nama metrik, sumber data, tag, atribut, atau waktu pembaruan guna mengambil deret waktu yang dibutuhkan secara tepat.
Untuk spesifikasi API lengkap, lihat QueryTimeseriesMeta.
Prasyarat
Client telah diinisialisasi. Untuk informasi selengkapnya, lihat Inisialisasi client Tablestore.
Definisi kelas
QueryTimeseriesMetaRequest menerima nama tabel deret waktu dan kondisi kueri opsional. Gunakan setCondition untuk memfilter hasil, setGetTotalHits untuk menyertakan jumlah deret waktu yang sesuai, dan setLimit untuk mengatur ukuran halaman. Lakukan paginasi melalui hasil menggunakan NextToken.
public class QueryTimeseriesMetaRequest implements Request {
/** Nama tabel deret waktu. */
private final String timeseriesTableName;
/** Kondisi kueri. */
private MetaQueryCondition condition;
/** Menentukan apakah akan mengembalikan jumlah total deret waktu yang memenuhi kondisi kueri. */
private boolean getTotalHits = false;
/** Jumlah deret waktu yang dikembalikan dalam satu permintaan. */
private int limit = -1;
/** Token yang digunakan dalam permintaan berikutnya untuk mengkueri deret waktu. */
private byte[] nextToken;
}
Kelas-kelas berikut mengimplementasikan MetaQueryCondition dan mendefinisikan jenis kondisi kueri yang didukung.
CompositeMetaQueryCondition
Gabungkan beberapa kondisi menggunakan logika AND, OR, atau NOT.
public class CompositeMetaQueryCondition implements MetaQueryCondition {
/** Operator logika. */
private final MetaQueryCompositeOperator operator;
/** Daftar subkondisi. */
private List<MetaQueryCondition> subConditions = new ArrayList<MetaQueryCondition>();
}
MeasurementMetaQueryCondition
Filter berdasarkan nama metrik.
public class MeasurementMetaQueryCondition implements MetaQueryCondition {
/** Operator relasional. */
private final MetaQuerySingleOperator operator;
/** Nama metrik dari deret waktu yang ingin Anda kueri. */
private final String value;
}
DataSourceMetaQueryCondition
Filter berdasarkan sumber data.
public class DataSourceMetaQueryCondition implements MetaQueryCondition {
/** Operator relasional. */
private final MetaQuerySingleOperator operator;
/** Nama sumber data dari deret waktu yang ingin Anda kueri. */
private final String value;
}
TagMetaQueryCondition
Filter berdasarkan nama dan nilai tag.
public class TagMetaQueryCondition implements MetaQueryCondition {
/** Operator relasional. */
private final MetaQuerySingleOperator operator;
/** Nama tag. */
private final String tagName;
/** Nilai tag. */
private final String value;
}
AttributeMetaQueryCondition
Filter berdasarkan nama dan nilai atribut.
public class AttributeMetaQueryCondition implements MetaQueryCondition {
/** Operator relasional. */
private final MetaQuerySingleOperator operator;
/** Nama atribut. */
private final String attributeName;
/** Nilai atribut. */
private final String value;
}
UpdateTimeMetaQueryCondition
Filter berdasarkan waktu terakhir metadata deret waktu diperbarui.
public class UpdateTimeMetaQueryCondition implements MetaQueryCondition {
/** Operator relasional. */
private final MetaQuerySingleOperator operator;
/** Timestamp saat metadata deret waktu diperbarui. */
private final long timeInUs;
}
Parameter
Tentukan timeseriesTableName dan setidaknya satu kondisi. Tabel berikut menjelaskan setiap jenis kondisi.
|
Kondisi |
Deskripsi |
|
compositeMetaQueryCondition |
Menggabungkan beberapa kondisi dengan operator logika:
|
|
measurementMetaQueryCondition |
Memfilter berdasarkan nama metrik:
|
|
dataSourceMetaQueryCondition |
Memfilter berdasarkan sumber data:
|
|
tagMetaQueryCondition |
Memfilter berdasarkan nama dan nilai tag:
|
|
attributeMetaQueryCondition |
Memfilter berdasarkan nama dan nilai atribut:
|
|
updateTimeMetaQueryCondition |
Memfilter berdasarkan waktu terakhir metadata diperbarui:
|
Contoh
Contoh berikut mengkueri semua deret waktu dalam sebuah tabel di mana nama metriknya adalah cpu dan nilai tag os diawali dengan Ubuntu. Hasil diambil dalam halaman berisi maksimal 100 entri dan berhenti setelah total 1.000 hasil.
private static void queryTimeseriesMeta(TimeseriesClient client) {
// Tentukan nama tabel deret waktu.
String tableName = "<TIME_SERIES_TABLE>";
QueryTimeseriesMetaRequest queryTimeseriesMetaRequest = new QueryTimeseriesMetaRequest(tableName);
// Kueri semua deret waktu yang memiliki nama metrik 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 dalam satu permintaan.
queryTimeseriesMetaRequest.setLimit(100);
// Mulai kueri.
QueryTimeseriesMetaResponse queryTimeseriesMetaResponse = client.queryTimeseriesMeta(queryTimeseriesMetaRequest);
// Tampilkan jumlah total deret waktu yang memenuhi kondisi kueri.
System.out.println(queryTimeseriesMetaResponse.getTotalHits());
// Simpan hasil permintaan.
List<TimeseriesMeta> timeseriesMetas = new ArrayList<TimeseriesMeta>();
timeseriesMetas.addAll(queryTimeseriesMetaResponse.getTimeseriesMetas());
// Jika NextToken disertakan dalam respons, Anda dapat membuat permintaan baru untuk mendapatkan sisa hasil.
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 berikutnya
Setelah mengkueri deret waktu, Anda dapat:
Mengkueri titik data dalam deret waktu yang sesuai. Untuk informasi selengkapnya, lihat Kueri data deret waktu.
Memperbarui atribut yang disimpan dalam metadata deret waktu. Untuk informasi selengkapnya, lihat Perbarui metadata deret waktu.
Menghapus metadata deret waktu yang tidak lagi diperlukan. Untuk informasi selengkapnya, lihat Hapus metadata deret waktu.