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
Instance untuk model TimeSeries telah dibuat. Untuk informasi lebih lanjut, lihat Buat Instance untuk Model TimeSeries.
Klien telah diinisialisasi. Untuk informasi lebih lanjut, lihat Inisialisasi Klien Tablestore.
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.
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.