ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework アプリケーション開発ガイド
ここでは,時刻解像度を指定したクエリの定義例として,次の2種類の例について説明します。
この例では,1分間のRANGEウィンドウ内にある到着タプルに対して,集合関数による関係演算を実行します。この例で扱うストリームは次のとおりです。
ストリームstockに対して,RANGEウィンドウ内にある到着タプルから列名priceの合計値を求める場合の定義例を次に示します。
REGISTER STREAM stock(price INTEGER, name VARCHAR(10)); …(1) REGISTER QUERY_ATTRIBUTE q1 STREAM_NAME=stock PERIOD=300MS TARGETS=SUM(price); …(2) REGISTER QUERY q1 …(3) ISTREAM( SELECT name, SUM (price) AS s1 FROM stock[RANGE 1 MINUTE] GROUP BY name );
時刻解像度を指定するクエリの名称は,(3)で指定しているq1です。このため,(2)のQUERY_ATTRIBUTE文でも,クエリ名としてq1を指定します。
この例は,(1)で指定しているストリーム名stockについて,時刻解像度を指定して列名priceの合計値を求める例です。このため,(2)のSTREAM_NAME=のデータ識別子にはstockを指定して,TARGETS=には集合関数SUM(price)を指定します。
合計値ではなく,最大値または最小値を求める場合には,集合関数MAXまたはMINを指定してください。
ストリームstockに対して,RANGEウィンドウ内にある到着タプルから列名priceの合計値,最大値および最小値を求める場合の定義例を次に示します。
REGISTER STREAM stock(price INTEGER, name VARCHAR(10)); REGISTER QUERY q0 ISTREAM( SELECT name, price AS price0, price AS price1, price AS price2 FROM stock[NOW] ); REGISTER QUERY_ATTRIBUTE q1 STREAM_NAME=q0 PERIOD=300MS TARGETS=SUM(price0),MAX(price1),MIN(price2); REGISTER QUERY q1 ISTREAM( SELECT q0.name, SUM(q0.price0) AS sum_price, MAX(q0.price1) AS max_price, MIN(q0.price2) AS min_price FROM q0[RANGE 1 MINUTE] GROUP BY q0.name );
時刻解像度を指定して複数の集合演算を実行する場合,同じデータ識別子を持つ同一名称の列名に対して,複数の集合演算は実行できません。例えば,データ識別子stockの列名priceのクエリに対して,「TARGETS=SUM(price),MAX(price),MIN(price)」のような指定はできません。
複数の集合関数を指定する場合は,集合関数の対象とする列名をそれぞれ用意する必要があります。この例では,SUM,MAX,MINそれぞれの対象とする列名として,列名priceをprice0,price1,price2という列名に置き換えた上で,それぞれの集合関数による演算を実行しています。
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.