メニュー
Amazon Kinesis Analytics
開発者ガイド

タンブリングウィンドウ (GROUP BY を使用した集計)

ウィンドウクエリが各ウィンドウを重複しない方式で処理する場合、ウィンドウは タンブリングウィンドウと呼ばれます。この場合、アプリケーション内ストリームの各レコードは特定のウィンドウに属し、1 回のみ処理されます (そのレコードが属するウィンドウをクエリが処理するとき)。

たとえば、GROUP BY 句を使用した集計クエリは、タンブリングウィンドウの行を処理します。「使用開始」実習のデモストリームは、アプリケーションのアプリケーション内ストリーム SOURCE_SQL_STREAM_001 にマッピングされた株価データを受信します。このスキーマは次のとおりです。

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

アプリケーションコードで、1 分のウィンドウに対して各ティッカーでの合計 (最低、最高) 価格を検索するとします。以下をクエリを使用できます。

Copy
SELECT STREAM ROWTIME, Ticker_Symbol, MIN(Price) AS Price, MAX(Price) AS Price FROM "SOURCE_SQL_STREAM_001" GROUP BY Ticker_Symbol, FLOOR("SOURCE_SQL_STREAM_001".ROWTIME TO MINUTE);

これは、時間ベースのウィンドウクエリの例です。クエリでは、レコードは ROWTIME 値でグループ化されます。分単位でレポートするために、FLOOR 関数は ROWTIME 値を直近の分に四捨五入します。

このクエリは、重複しない (タンブリング) ウィンドウの例です。GROUP BY 句によって、レコードが 1 分のウィンドウにグループ化されます。各レコードは特定のウィンドウに属します (重複しない)。クエリでは、1 分ごとに 1 つの出力レコードが発行され、特定の分にレコードされた最低/最高ティッカー価格が提供されます。このタイプのクエリは、入力データストリームから定期的に (この例では分単位) レポートを生成する場合に便利です。

クエリをテストするには

  1. 「使用開始」実習に従ってアプリケーションをセットアップします。

  2. アプリケーションコード内の SELECT ステートメントを前述の SELECT クエリに置き換えます。アプリケーションコードは次のようになります。

    Copy
    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, FLOOR("SOURCE_SQL_STREAM_001".ROWTIME TO MINUTE);