Jendela Tumbling (Agregasi Menggunakan GROUP BY) - Panduan Pengembang Amazon Kinesis Data Analytics SQL untuk Aplikasi

Untuk proyek baru, kami menyarankan Anda menggunakan Managed Service baru untuk Apache Flink Studio melalui Kinesis Data Analytics for Applications. SQL Layanan Terkelola untuk Apache Flink Studio menggabungkan kemudahan penggunaan dengan kemampuan analitis tingkat lanjut, memungkinkan Anda membangun aplikasi pemrosesan aliran yang canggih dalam hitungan menit.

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Jendela Tumbling (Agregasi Menggunakan GROUP BY)

Ketika kueri jendela memproses setiap jendela dengan cara yang tidak tumpang tindih, jendela disebut sebagai jendela tumbling. Dalam hal ini, setiap catatan di aliran dalam aplikasi termasuk dalam jendela tertentu. Catatan hanya diproses sekali (ketika kueri memproses jendela tempat catatan berada).

Timeline showing non-overlapping windows processing data streams at distinct time intervals.

Misalnya, kueri agregasi yang menggunakan klausa GROUP BY memproses baris dalam jendela tumbling. Aliran demo dalam latihan memulai menerima data harga saham yang dipetakan ke aliran dalam aplikasi SOURCE_SQL_STREAM_001 dalam aplikasi Anda. Aliran ini memiliki skema berikut.

(TICKER_SYMBOL VARCHAR(4), SECTOR varchar(16), CHANGE REAL, PRICE REAL)

Dalam kode aplikasi Anda, misalkan Anda ingin menemukan harga agregat (min, max) untuk setiap ticker selama jendela satu menit. Anda dapat menggunakan kueri berikut.

SELECT STREAM ROWTIME, Ticker_Symbol, MIN(Price) AS Price, MAX(Price) AS Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);

Sebelumnya adalah contoh kueri jendela yang berbasis waktu. Kueri mengelompokkan catatan berdasarkan nilai ROWTIME. Untuk pelaporan per menit, fungsi STEP membulatkan nilai ROWTIME ke menit terdekat.

catatan

Anda juga dapat menggunakan fungsi FLOOR untuk mengelompokkan catatan ke jendela. Namun, FLOOR hanya dapat membulatkan nilai waktu ke unit waktu keseluruhan (jam, menit, detik, dan sebagainya). STEP direkomendasikan untuk mengelompokkan catatan ke jendela tumbling karena dapat membulatkan nilai ke interval arbitrer, misalnya, 30 detik.

Kueri ini adalah contoh jendela non-tumpang tindih (tumbling). Klausa GROUP BY mengelompokkan catatan dalam jendela satu menit, dan setiap catatan termasuk ke jendela tertentu (tidak tumpang tindih). Kueri memancarkan satu catatan output per menit, memberikan harga ticker min/maks. yang tercatat pada menit tertentu. Tipe kueri berguna untuk membuat laporan berkala dari aliran data input. Dalam contoh ini, laporan dihasilkan setiap menit.

Untuk menguji kueri
  1. Siapkan aplikasi dengan mengikuti latihan memulai.

  2. Ubah pernyataan SELECT dalam kode aplikasi menggunakan kueri SELECT sebelumnya. Kode aplikasi yang dihasilkan ditampilkan sebagai berikut:

    CREATE OR REPLACE STREAM "DESTINATION_SQL_STREAM" ( ticker_symbol VARCHAR(4), Min_Price DOUBLE, Max_Price DOUBLE); -- CREATE OR REPLACE PUMP to insert into output CREATE OR REPLACE PUMP "STREAM_PUMP" AS INSERT INTO "DESTINATION_SQL_STREAM" SELECT STREAM Ticker_Symbol, MIN(Price) AS Min_Price, MAX(Price) AS Max_Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, STEP("SOURCE_SQL_STREAM_001".ROWTIME BY INTERVAL '60' SECOND);