全部产品
Search
文档中心

Tablestore:Gunakan SQL untuk menanyakan data deret waktu

更新时间:Jul 02, 2025

Setelah membuat tabel deret waktu di Tablestore dan tabel pemetaan untuk tabel tersebut di SQL, Anda dapat menjalankan pernyataan SQL di konsol Tablestore atau menggunakan SDK Tablestore untuk menanyakan data deret waktu.

Tabel pemetaan untuk tabel deret waktu di SQL

Model TimeSeries diklasifikasikan menjadi model nilai tunggal dan model multi-nilai berdasarkan apakah satu atau beberapa nilai dihasilkan pada setiap titik waktu dalam deret waktu. Tabel berikut menggambarkan jenis tabel pemetaan yang dapat dibuat untuk tabel deret waktu di SQL untuk menanyakan data.

Jenis Tabel Pemetaan

Deskripsi

Metode Pembuatan

Nama Tabel Pemetaan di SQL

Tabel Pemetaan dalam Model Nilai Tunggal

Menanyakan data deret waktu menggunakan tabel pemetaan dalam model nilai tunggal.

Setelah membuat tabel deret waktu, sistem secara otomatis membuat tabel pemetaan di SQL untuk tabel deret waktu.

Sama dengan nama tabel deret waktu.

Tabel Pemetaan dalam Model Multi-Nilai

Menanyakan data deret waktu menggunakan tabel pemetaan dalam model multi-nilai.

Setelah membuat tabel deret waktu, Anda dapat secara manual membuat tabel pemetaan di SQL untuk tabel deret waktu.

Nama tabel pemetaan dalam format Nama tabel deret waktu::Akhiran. Tentukan Akhiran saat membuat tabel pemetaan di SQL untuk tabel deret waktu.

Tabel Pemetaan untuk Metadata Deret Waktu

Menanyakan metadata deret waktu.

Setelah membuat tabel deret waktu, sistem secara otomatis membuat tabel pemetaan di SQL untuk metadata deret waktu.

Nama tabel pemetaan dalam format Nama tabel deret waktu::meta.

Tabel pemetaan dalam model nilai tunggal

Setelah membuat tabel deret waktu, sistem secara otomatis membuat tabel pemetaan dalam model nilai tunggal di SQL untuk tabel deret waktu. Nama tabel pemetaan di SQL sama dengan nama tabel deret waktu. Anda dapat menggunakan tabel pemetaan ini untuk menanyakan data deret waktu.

Tabel berikut menggambarkan skema tabel pemetaan di SQL.

Nama kolom

Tipe

Deskripsi

_m_name

VARCHAR

Nama metrik.

_data_source

VARCHAR

Sumber data.

_tags

VARCHAR

Tag dari deret waktu. Nilainya adalah array yang berisi beberapa tag dalam format ["tagKey1=tagValue1","tagKey2=tagValue2"].

Anda dapat menggunakan fungsi tag_value_at untuk mengekstrak nilai dari tag.

_time

BIGINT

Timestamp dari titik data. Unit: mikrodetik.

_field_name

VARCHAR

Nama kolom data.

_long_value

BIGINT

Nilai data tipe integer. Jika tipe data kolom data bukan integer, nilainya NULL.

_double_value

DOUBLE

Nilai data tipe floating-point. Jika tipe data kolom data bukan floating-point, nilainya NULL.

_bool_value

BOOL

Nilai data tipe Boolean. Jika tipe data kolom data bukan Boolean, nilainya NULL.

_string_value

VARCHAR

Nilai data tipe string. Jika tipe data kolom data bukan string, nilainya NULL.

_binary_value

MEDIUMBLOB

Nilai data tipe biner. Jika tipe data kolom data bukan biner, nilainya NULL.

_attributes

VARCHAR

Properti dari deret waktu. Format properti sama dengan format tag.

_meta_update_time

BIGINT

Titik waktu ketika metadata deret waktu diperbarui.

Ketika Anda memperbarui properti dari deret waktu, sistem secara otomatis memperbarui waktu pembaruan metadata dari deret waktu. Jika Anda terus menulis data ke deret waktu, sistem memperbarui waktu pembaruan metadata dari deret waktu secara berkala. Anda dapat menggunakan waktu pembaruan metadata untuk menentukan apakah deret waktu aktif.

Tabel pemetaan dalam model multi-nilai

Untuk menanyakan data deret waktu menggunakan tabel pemetaan dalam model multi-nilai, jalankan pernyataan CREATE TABLE untuk membuat tabel pemetaan dalam model multi-nilai. Nama tabel pemetaan di SQL dalam format Nama tabel deret waktu::Akhiran. Tentukan Akhiran saat membuat tabel pemetaan di SQL untuk tabel deret waktu. Anda dapat membuat beberapa tabel pemetaan dalam model multi-nilai di SQL untuk tabel deret waktu.

Saat membuat tabel pemetaan dalam model multi-nilai untuk tabel deret waktu, tentukan nama tabel pemetaan serta nama dan tipe kolom data dalam tabel pemetaan. Untuk informasi lebih lanjut, lihat bagian Buat Tabel Pemetaan dalam Model Multi-Nilai untuk Tabel Deret Waktu dari topik ini.

Tabel berikut menggambarkan skema tabel pemetaan di SQL.

Catatan

Jika ingin membaca kolom properti (_attributes) dari metadata deret waktu atau kolom waktu pembaruan metadata (_meta_update_time) menggunakan tabel pemetaan dalam model multi-nilai, tambahkan dua kolom tersebut ke tabel pemetaan. Sistem secara otomatis mengisi konten dalam dua kolom metadata tersebut.

Nama kolom

Tipe

Deskripsi

_m_name

VARCHAR

Nama metrik.

_data_source

VARCHAR

Sumber data.

_tags

VARCHAR

Tag dari deret waktu. Nilainya adalah array yang berisi beberapa tag dalam format ["tagKey1=tagValue1","tagKey2=tagValue2"]. Anda dapat menggunakan fungsi tag_value_at untuk mengekstrak nilai dari tag.

_time

BIGINT

Timestamp dari titik data. Unit: mikrodetik.

Nama kolom data kustom.

Tipe data SQL

Anda dapat menambahkan beberapa kolom data kustom ke tabel pemetaan di SQL.

Jika nama atau tipe kolom yang ditentukan dalam tabel pemetaan di SQL tidak sesuai dengan nama atau tipe kolom dalam tabel deret waktu, nilai kolom dalam tabel pemetaan adalah null.

_attributes (opsional)

MEDIUMTEXT

Properti dari deret waktu. Format properti sama dengan format tag.

_meta_update_time (opsional)

BIGINT

Titik waktu ketika metadata deret waktu diperbarui.

Ketika Anda memperbarui properti dari deret waktu, sistem secara otomatis memperbarui waktu pembaruan metadata dari deret waktu. Jika Anda terus menulis data ke deret waktu, sistem memperbarui waktu pembaruan metadata dari deret waktu secara berkala. Anda dapat menggunakan waktu pembaruan metadata untuk menentukan apakah deret waktu aktif.

Tabel pemetaan untuk metadata deret waktu

Setelah membuat tabel deret waktu, sistem secara otomatis membuat tabel pemetaan untuk metadata deret waktu. Nama tabel pemetaan di SQL dalam format Nama tabel deret waktu::meta. Anda dapat menggunakan tabel pemetaan ini untuk menanyakan metadata deret waktu. Sebagai contoh, jika nama tabel deret waktu adalah timeseries_table, nama tabel pemetaan untuk metadata deret waktu adalah timeseries_table::meta.

Tabel berikut menggambarkan skema tabel pemetaan di SQL.

Nama kolom

Tipe

Deskripsi

_m_name

VARCHAR

Nama metrik.

_data_source

VARCHAR

Sumber data.

_tags

VARCHAR

Tag dari deret waktu.

_attributes

VARCHAR

Properti dari deret waktu.

_meta_update_time

BIGINT

Titik waktu ketika metadata deret waktu diperbarui.

Ketika Anda memperbarui properti dari deret waktu, sistem secara otomatis memperbarui waktu pembaruan metadata dari deret waktu. Jika Anda terus menulis data ke deret waktu, sistem memperbarui waktu pembaruan metadata dari deret waktu secara berkala. Anda dapat menggunakan waktu pembaruan metadata untuk menentukan apakah deret waktu aktif.

Sintaksis SQL

Buat tabel pemetaan dalam model multi-nilai untuk tabel deret waktu

Anda dapat menjalankan pernyataan CREATE TABLE untuk membuat tabel pemetaan dalam model multi-nilai untuk tabel deret waktu.

  • Sintaksis SQL

    CREATE TABLE `timeseries_table::user_mapping_name` (
      `_m_name` VARCHAR(1024), 
      `_data_source` VARCHAR(1024), 
      `_tags` VARCHAR(1024), 
      `_time` BIGINT(20),
      `user_column_name1` data_type, 
      ......
      `user_column_namen` data_type,
      PRIMARY KEY(`_m_name`,`_data_source`,`_tags`,`_time`)
    );

    Untuk informasi lebih lanjut tentang parameter dalam sintaksis SQL, lihat skema tabel dalam bagian Tabel Pemetaan dalam Model Multi-Nilai dari topik ini.

  • Contoh SQL

    Kode sampel berikut memberikan contoh cara membuat tabel pemetaan dalam model multi-nilai bernama timeseries_table::muti_model untuk tabel deret waktu. Metrik dalam tabel pemetaan adalah cpu, memory, dan disktop. Contoh kode SQL:

    CREATE TABLE `timeseries_table::muti_model` (
      `_m_name` VARCHAR(1024), 
      `_data_source` VARCHAR(1024), 
      `_tags` VARCHAR(1024),
      `_time` BIGINT(20),
      `cpu` DOUBLE(10),
      `memory` DOUBLE(10),
      `disktop` DOUBLE(10),
      PRIMARY KEY(`_m_name`,`_data_source`,`_tags`,`_time`)
    );

Menanyakan data

Anda dapat menjalankan pernyataan SELECT untuk menanyakan data deret waktu. Untuk informasi lebih lanjut, lihat Menanyakan Data.

Tablestore menyediakan fungsi ekstensi tag_value_at untuk mengekstrak nilai dari tag dalam tags (_tags) dari deret waktu. Anda juga dapat menggunakan fungsi tersebut untuk mengekstrak nilai dari properti dalam properties (_attributes) dari deret waktu.

Jika nilai _tags adalah ["host=abc","region=hangzhou"], Anda dapat menggunakan tag_value_at(_tags, "host") untuk mengekstrak nilai abc dari tag host. Pernyataan SQL berikut menunjukkan contohnya:

SELECT tag_value_at(_tags, "host") as host FROM timeseries_table LIMIT 1;

Contoh SQL

Menanyakan deret waktu

Setelah membuat tabel deret waktu, sistem secara otomatis membuat tabel pemetaan untuk metadata deret waktu. Anda dapat menggunakan tabel pemetaan ini untuk menanyakan deret waktu.

Dalam contoh ini, tabel deret waktu bernama timeseries_table dan tabel pemetaan untuk metadata deret waktu bernama timeseries_table::meta digunakan. Metrik dalam tabel pemetaan adalah basic_metric.

  • Menanyakan deret waktu yang memiliki nama metrik basic_metric dalam tabel pemetaan untuk metadata deret waktu.

    SELECT * FROM  `timeseries_table::meta` WHERE _m_name = "basic_metric" LIMIT 100;
  • Menanyakan deret waktu yang memenuhi beberapa kondisi tag (host=host001 dan region=hangzhou) dalam tabel pemetaan untuk metadata deret waktu.

    SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001"
     AND tag_value_at(_tags, "region") = "hangzhou" LIMIT 100;
  • Menanyakan deret waktu yang memenuhi beberapa kondisi tag (host=host001 dan region=hangzhou), kondisi properti tertentu (status=online), dan masih aktif setelah titik waktu tertentu dalam tabel pemetaan untuk metadata deret waktu.

    SELECT * FROM `timeseries_table::meta` WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou"
     AND tag_value_at(_attributes, "status") = "online" AND _meta_update_time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 100;

Menanyakan data deret waktu dengan menggunakan tabel pemetaan dalam model nilai tunggal

Setelah membuat tabel deret waktu, sistem secara otomatis membuat tabel pemetaan dalam model nilai tunggal untuk tabel deret waktu. Anda dapat menggunakan tabel pemetaan ini untuk menanyakan data deret waktu.

Dalam contoh ini, tabel deret waktu bernama timeseries_table dan tabel pemetaan dalam model nilai tunggal bernama timeseries_table digunakan. Metrik dalam tabel pemetaan adalah basic_metric.

  • Menanyakan data yang memiliki tipe metrik basic_metric dalam tabel data deret waktu.

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" LIMIT 10;
  • Menanyakan data yang memiliki tipe metrik basic_metric dan sumber data device001 setelah titik waktu tertentu dalam tabel data deret waktu.

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND _data_source = "device001" AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10;
  • Menanyakan data dalam deret waktu yang memenuhi kondisi tag tunggal (host=host001) dalam tabel data deret waktu.

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001"
     AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10;
  • Menanyakan data dalam deret waktu yang memenuhi beberapa kondisi tag (host=host001 dan region=hangzhou) dalam tabel data deret waktu.

    SELECT * FROM timeseries_table WHERE _m_name = "basic_metric" AND tag_value_at(_tags, "host") = "host001" AND tag_value_at(_tags, "region") = "hangzhou"
     AND _time > (UNIX_TIMESTAMP() - 900) * 1000000 LIMIT 10;
  • Agregasi (avg dan max) data cpu_usr dalam deret waktu yang memenuhi kondisi tag tertentu (host=host001) berdasarkan jendela waktu 600 detik dalam tabel data deret waktu.

    SELECT tag_value_at(_tags, "host") as host,_time DIV 600000000 * 600 as time_sec,avg(_double_value) as cpu_avg,max(_double_value) as cpu_max FROM
     timeseries_table WHERE _m_name = "basic_metric" AND _time > (UNIX_TIMESTAMP() - 21600) * 1000000 AND tag_value_at(_tags, "host") = "host001"
     AND _field_name = "cpu_summary_usr" GROUP BY host,time_sec ORDER BY time_sec LIMIT 100;

Menanyakan data deret waktu dengan menggunakan tabel pemetaan dalam model multi-nilai

Setelah membuat tabel deret waktu, Anda dapat membuat tabel pemetaan dalam model multi-nilai untuk tabel deret waktu. Anda dapat menggunakan tabel pemetaan ini untuk menanyakan data deret waktu. Untuk informasi lebih lanjut, lihat bagian Buat Tabel Pemetaan dalam Model Multi-Nilai untuk Tabel Deret Waktu dari topik ini.

Dalam contoh ini, tabel deret waktu bernama timeseries_table dan tabel pemetaan dalam model multi-nilai bernama timeseries_table::muti_model digunakan. Metrik dalam tabel pemetaan adalah cpu, memory, dan disktop.

  • Menanyakan data yang sumber datanya adalah host_01 menggunakan tabel pemetaan dalam model multi-nilai. Dalam contoh ini, host_id disimpan di _data_source.

    SELECT * FROM `timeseries_table::muti_model` WHERE _data_source = "host_01" LIMIT 10;
  • Menanyakan informasi tentang metrik dalam deret waktu yang nilai cpu-nya lebih besar dari 20.0 menggunakan tabel pemetaan dalam model multi-nilai.

    SELECT cpu,memory,disktop FROM `timeseries_table::muti_model` WHERE cpu > 20.0 LIMIT 10;
  • Menghitung nilai rata-rata cpu dan nilai maksimum disktop dari host yang memenuhi kondisi tag tertentu (region=hangzhou) pada tanggal 1 Januari 2022 menggunakan tabel pemetaan dalam model multi-nilai.

    SELECT avg(cpu) as avg_cpu,max(disktop) as max_disktop FROM `timeseries_table::muti_mode` WHERE tag_value_at(_tags,"region") = "hangzhou"
     AND _time > 1640966400000000 AND _time < 1641052799000000 GROUP BY _data_source;

Metode penggunaan

Anda dapat menggunakan SQL untuk menanyakan data deret waktu dengan salah satu metode berikut. Saat menanyakan data deret waktu, Anda dapat melakukan operasi pada tabel pemetaan sesuai dengan kebutuhan bisnis Anda.