ストリームデータ処理基盤 uCosminexus Stream Data Platform - Application Framework 解説
目的の処理の実行が,一つのクエリでは実現できないことがあります。この場合,一つ目(前段)のクエリの処理結果を二つ目(後段)のクエリの処理対象とします。これをクエリの連結といいます。クエリの連結には,次の2種類があります。
クエリを連結する場合に,前段のクエリと後段のクエリで処理対象のデータが異なることがあります。例えば,前段のクエリで1分間のデータを分析対象にし,後段のクエリで1時間分のデータを分析対象にするときは,ストリームデータによるクエリの連結が適しています。一方,前段のクエリと後段のクエリで,分析対象のデータが同じ場合は,リレーションによるクエリの連結が適しています。
以降で,それぞれのクエリの連結について説明します。
ストリームデータによるクエリの連結について,観測所ごとの1分間の平均気温を計算し,過去1日の最高平均気温を出力する場合を例に説明します。このクエリを実行した場合の,入力データと出力データを次の図に示します。
図2-21 ストリームデータによるクエリの連結を実行した場合の入力データと出力データ
前段のクエリ(クエリ1)では観測所ごとの1分間の平均気温を計算し,後段のクエリ(クエリ2)では過去1日の最高平均気温を計算します。
REGISTER STREAM temperature_stream (observation_time TIME, id INTEGER, temperature INTEGER); REGISTER QUERY average_calculation ISTREAM ( SELECT id, AVG(temperature) AS average_temperature FROM temperature_stream[RANGE 1 MINUTE] GROUP BY id); REGISTER QUERY MAX_temperature ISTREAM ( SELECT MAX(average_temperature) FROM average_calculation[RANGE 1 DAY] );
リレーションによるクエリの連結について,観測所ごとの平均気温を計算し,現時点で最も高い平均気温(最高平均気温)を出力する場合を例に説明します。このクエリを実行した場合の,入力データと出力データを次の図に示します。
図2-22 リレーションによるクエリの連結を実行した場合の入力データと出力データ
この図に示すとおり,前段のクエリ(クエリ1)では観測所ごとの1分間の平均気温を計算し,後段のクエリ(クエリ2)では最高平均気温を計算します。
REGISTER STREAM temperature_stream (observation_time TIME, id INTEGER, temperature INTEGER); REGISTER QUERY average_calculation SELECT id, AVG(temperature) AS average_temperature FROM temperature_stream[RANGE 1 MINUTE] GROUP BY id; REGISTER QUERY MAX_temperature ISTREAM ( SELECT MAX(average_temperature) AS MAX_temperature FROM average_calculation);
All Rights Reserved. Copyright (C) 2010, 2014, Hitachi, Ltd.