JP6167187B2 - クエリ生成方法及びクエリ生成装置 - Google Patents
クエリ生成方法及びクエリ生成装置 Download PDFInfo
- Publication number
- JP6167187B2 JP6167187B2 JP2015554366A JP2015554366A JP6167187B2 JP 6167187 B2 JP6167187 B2 JP 6167187B2 JP 2015554366 A JP2015554366 A JP 2015554366A JP 2015554366 A JP2015554366 A JP 2015554366A JP 6167187 B2 JP6167187 B2 JP 6167187B2
- Authority
- JP
- Japan
- Prior art keywords
- query
- template
- column
- processing
- optional
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims description 103
- 238000012545 processing Methods 0.000 claims description 184
- 238000004364 calculation method Methods 0.000 claims description 17
- 238000003780 insertion Methods 0.000 description 43
- 230000037431 insertion Effects 0.000 description 43
- 238000010586 diagram Methods 0.000 description 29
- 238000003860 storage Methods 0.000 description 16
- 230000006870 function Effects 0.000 description 9
- 238000005304 joining Methods 0.000 description 8
- 238000004519 manufacturing process Methods 0.000 description 6
- 239000000284 extract Substances 0.000 description 5
- 238000011161 development Methods 0.000 description 2
- 230000006855 networking Effects 0.000 description 2
- 238000004458 analytical method Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24568—Data stream processing; Continuous queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/242—Query formulation
- G06F16/2423—Interactive query statement specification based on a database schema
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/25—Integrating or interfacing systems involving database management systems
- G06F16/252—Integrating or interfacing systems involving database management systems between a Database Management System and a front-end application
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Mathematical Physics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Description
本発明は、ストリームデータを処理するクエリをテンプレート化する技術に関する。
ストリームデータ処理は、多数のセンサなどからのデータや、金融機関などの決済や売買に関するデータを処理する技術として知られている。ストリームデータ処理では、まずクエリをシステムに登録しておき、データが到来するとクエリが継続的に実行される。このクエリを記述する言語の好適な例として、CQL(Continuous Query Language)が知られている。
ストリームデータ処理の利用範囲を拡大するために、CQLで記述したストリームデータ処理のクエリをテンプレート化する技術が知られている(例えば、特許文献1)。
しかしながら、上記特許文献1の技術では、テンプレートで定義されている入力ストリームデータのスキーマは固定されている。このため、SNS(Social Networking Service)やBlog等の大量の情報を、入力ストリームデータとして用いる場合には、データソースの種類に応じてテンプレートのスキーマを修正する必要がある。すなわち、あるSNSの情報を入力ストリームデータとするテンプレートのスキーマは、他のSNSの情報のスキーマは異なるため、クエリの記述言語でテンプレートを定義し直すか、多数のテンプレートを予め用意しておく必要がある。
クエリの記述言語でテンプレートを定義し直すには、クエリのプログラミング能力を有する者が必要であり、ストリームデータ処理を利用する全てのユーザが行える訳ではない。そして、多数のテンプレートを予め用意するには、ソフトウェアエンジニア等の労力やコストが増大する、という問題があった。
そこで本発明は、上記問題点に鑑みてなされたもので、多数のテンプレートを用意することなく、複数の入力を受け付けることでクエリのテンプレートの開発コストを削減することを目的とする。
本発明は、プロセッサとメモリを備えた計算機で、入力されたストリームデータを処理するクエリを生成するクエリ生成方法であって、前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込む第1のステップと、前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する第2のステップと、を含む。
本発明によれば、入力されたストリームデータを必須カラムとオプションカラムに分離して、必須カラムに対してテンプレートの処理を実施した後、オプションカラムと組み合わせる。これにより、ひとつのテンプレートで複数種の入力を受け付けることが可能となって、テンプレートの種類を抑制することでテンプレートの開発コストを削減することが可能となる。
以下、本発明の一実施形態について添付図面を用いて説明する。
図1は、第1の実施例の計算機システムの一例を示すブロック図である。ストリームデータの処理を実行するストリーム処理実行サーバ101は、ネットワーク110を介して、テンプレートに基づいてストリーム処理クエリ700を生成するクエリ生成サーバ107と、テンプレートの操作等を行う端末130と、ストリームデータを供給するデータソース140に接続される。なお、データソース140としては、例えば、SNS(Social Networking Service)やBlog等を採用することができる。
ストリーム処理実行サーバ101は、演算処理を行うCPU104と、データやプログラムを保持するメモリ102と、プログラムやデータを格納するストレージ105と、ネットワーク110に接続されるI/Oインターフェース106と、を有する。メモリ102にはプログラムとしてのストリームデータ処理エンジン103がロードされて、CPU104によって実行される。なお、ストリームデータ処理エンジン103は、ストレージ105に格納することができる。
ストリームデータ処理エンジン103は、後述するように、クエリ生成サーバ107で生成されたストリーム処理クエリ700を継続的に実行し、データソース140から受信したストリームデータを処理する。ストリーム処理クエリ700としては、例えば、上記CQL(Continuous Query Language)を用いることができる。以下では、CQLでストリーム処理クエリ700を記述する例を示す。
クエリ生成サーバ107は、演算処理を行うCPU121と、データやプログラムを保持するメモリ122と、プログラムやデータを格納するストレージ123と、ネットワーク110に接続されるI/Oインターフェース124と、を有する。メモリ122にはプログラムとしてのテンプレート登録部108及びクエリ生成部109がそれぞれロードされて、CPU121によって実行される。ストレージ123には、テンプレート111と、テンプレート構成情報112、ストリーム処理定義500及びストリーム処理クエリ700が格納される。なお、プログラムとしてのテンプレート登録部108及びクエリ生成部109は、ストレージ123に格納することができる。
ここで、テンプレート構成情報112と、クエリ生成部109の各機能部はプログラムとしてメモリ122にロードされる。CPU121は、各機能部のプログラムに従って処理を行うことによって、所定の機能を提供する機能部として稼働する。例えば、CPU121は、テンプレート登録プログラムに従って処理することでテンプレート登録部108として機能する。他のプログラムについても同様である。さらに、CPU121は、各プログラムが実行する複数の処理のそれぞれの機能を提供する機能部としても稼働する。計算機及び計算機システムは、これらの機能部を含む装置及びシステムである。
クエリ生成サーバ107の各機能を実現するプログラム、テーブル等の情報は、ストレージ123や不揮発性半導体メモリ、ハードディスクドライブ、SSD(Solid State Drive)等の記憶デバイス、または、ICカード、SDカード、DVD等の計算機読み取り可能な非一時的データ記憶媒体に格納することができる。
クエリ生成サーバ107で行われる主な処理は、テンプレート登録部108がテンプレート111の設定を行って、このテンプレート111と、テンプレート構成情報112をストレージ123に格納しておく。そして、クエリ生成部109は、ストリーム処理定義を入力すると、テンプレート111及びテンプレート構成情報112を利用してストリーム処理クエリ700を生成する。
端末130は、図示しないCPU、メモリ、ストレージ、I/Oインターフェース及び入出力装置を備えた計算機で、ユーザあるいは管理者の操作を受け付ける。
図2は、本発明のテンプレート111によって生成されたストリーム処理クエリ700で行われる処理の概要を示すブロック図である。
ストリーム処理クエリ700は、入力されたストリームデータからテキストを含む必須カラムを抽出し、また、入力ストリームのデータからオプションカラムを抽出して、2つのデータに分割する。このとき、ストリーム処理クエリ700は、必須カラムとオプションカラムを関連付ける識別子を付与する(701)。図示の例では、ストリーム処理クエリ700が、必須カラムとオプションカラムのそれぞれにテキストID(図中textID)を付与する例を示す。
そして、ストリーム処理クエリ700は、必須カラムと所定のキーワード(keyword)について文字列の部分マッチのテンプレート処理を行い、所定のキーワードを含む必須カラムを出力する(702)。ストリーム処理クエリ700は、文字列の部分マッチ処理の出力と、オプションカラムについて、テキストIDが一致するデータを所定のウィンドウオペレータで結合する(703)。図示の例では、テンプレート処理(702)の出力ストリームデータをNOWウィンドウで、オプションカラムのデータと結合する例を示す。
本発明では、必須のテキストを含む必須カラムを入力ストリームデータから抽出し、必須カラムのテキスト以外を含む入力ストリームデータを、オプションカラムとして分離する。そして、必須カラムについてはテンプレート111で所定の処理(702)を行ってから、テンプレート111の出力と、オプションカラムを結合する。
これにより、テンプレート111には必須カラムのみ定義されていれば、異なるスキームのストリームデータであっても当該テンプレート111を適用することが可能となるのである。また、オプションカラムはメタデータとして扱うことができる。なお、オプションカラムは、入力ストリームデータそのままであってもよいし、必須カラムを入力ストリームデータから差し引いたデータであっても良い。
図3は、クエリ生成部109の入出力の関係の一例を示すブロック図である。クエリ生成部109は、予め設定されたストリーム処理定義500を入力し、テンプレート呼び出し情報203を生成するテンプレート呼び出し情報生成部202と、ストリーム処理クエリ700を生成する結合処理挿入部204とを含む。
テンプレート呼び出し情報生成部202は、ストリーム処理定義500に記述されたテンプレート111の構成情報(テンプレート構成情報112)を取得して、各テンプレート111で入力されるストリームデータと、出力されるストリームデータの関係を示すテンプレート呼び出し情報203を生成する。
結合処理挿入部204は、ストリーム処理定義500及びテンプレート構成情報112に基づいて、結合する出力カラムとウィンドウのサイズを決定してストリーム処理クエリ700を生成する結合処理挿入部204とを含む。
次に、本実施例で使用するテンプレート111の一例を図4A、図4Bに示す。図4Aは、テンプレート111−1(string_part_match)の一例を示す図である。
テンプレート111−1は、2つのSELECT文の問合せ結果を結合するクエリが定義されている。テンプレート111−1は、必須カラム"str"の値が"$key"で指定された文字列を含む場合に、"extracted"の値を"$key"で指定された文字列とする問合せと、必須カラム"str"の値が"$key"で指定された文字列を含まない場合に、"extracted"の値を空の文字列とする問合せを結合するクエリが定義されている。
図4Bは、テンプレート111−2(string_match)の一例を示す図である。
テンプレート111−2は、2つのSELECT文の問合せ結果を結合するクエリが定義されている。テンプレート111−2は、必須カラム"str"の値が"$keyword"で指定された文字列と一致する場合に、"extracted"の値を"$key"で指定された文字列とする問合せと、必須カラム"str"の値が"$key"で指定された文字列と一致しない場合に、"extracted"の値を空の文字列とする問合せを結合するクエリが定義されている。
なお、以下では、テンプレート111−1、111−2の総称を符号111で表す。
図5Aは、テンプレート構成情報112−1(string_part_match)の一例を示す図である。テンプレート構成情報112−1は、図4Aに示した"string_part_match"のテンプレート111−1の構成情報を格納したものである。
テンプレート構成情報112−1は、テンプレート111−1の名称(または関数名)を格納する名前1121と、必須カラムに対応する入力スキーマ1122と、当該テンプレートが出力する出力スキーマ1123と、識別子を格納するID1124と、結合処理のウィンドウサイズを格納する結合時ウィンドウサイズ1125から構成される。
入力スキーマ1122は、後述するテンプレート構成情報112−1の必須カラム2034に対応し、出力スキーマ1123は、テンプレート構成情報112−1の出力スキーマ1123に対応する。
図5Bは、テンプレート構成情報112−2(string_match)の一例 を示す図である。テンプレート構成情報112−2は、図4Bに示した"string_match"のテンプレート111−2の構成情報を格納したものである。テンプレート構成情報112−2は、名前1121〜結合時ウィンドウサイズ1125に、上記テンプレート構成情報112−1と同様にして値が格納される。
なお、以下では、テンプレート構成情報112−1、112−2の総称を符号112で表す。
以上のように、本発明のテンプレート111、テンプレート構成情報112では、入力スキーマ1122の必須カラムとして、文字列(STRING)のみを定義しただけであるので、各種SNSや様々なブログのデータを入力ストリームデータとして扱うことが可能となる。
図6は、ストリーム処理定義500の一例を示す図である。ストリーム処理定義500は、開発者などによって予め作成され、ストレージ123に格納される。そして、クエリ生成サーバ107は、端末130からのクエリ生成要求によって指定されたストリーム処理定義500に従ってストリーム処理クエリ700を生成する。
ストリーム処理定義500は、ストリーム定義501で入力となるストリームデータの名前と構成を定義する。図示の例では、入力されるストリームデータ名がtwitterで、"msgID"のカラムが文字列で、"time"のカラムがタイムスタンプで、"text"のカラムが文字列で、"userID"のカラムが文字列で構成されることを示している。これらが、入力ストリームデータ名がtwitterの入力スキーマとなる。
さらに、ストリーム処理定義500は、テンプレート呼び出し502、503で2つのテンプレート111を呼び出すことを定義する。テンプレート呼び出し502では、"CALL TEMPLATE"で"twitter_keyword"という呼び出し名で、テンプレートの種類(または機能)が"string_part_match"(文字列の部分一致処理)のテンプレートを呼び出すことを示す。"twitter_keyword"のテンプレート(図4Aの111−1)は、ストリームデータtwitterのカラム"text"が必須カラムで、ストリームデータtwitter_keywordのカラム"text", "keyword"が出力ストリームデータで、変数"key"は"bigdata"であることを示す。
テンプレート呼び出し503では、"CALL TEMPLATE"で"twitter_keyword_influencer"という呼び出し名で、テンプレートの種類(または機能)が"string_match"(文字列の一致処理)のテンプレート(図4Bの111−2)を呼び出す。"twitter_keyword_influencer"のテンプレート111−2は、ストリームデータtwitter_keywordのカラム"userID"が必須カラムで、ストリームデータtwitter_keyword_influencerのカラムuserID, influencerが出力ストリームデータで、変数"key"は"Bob"であることを示す。ここで、"twitter_keyword_influencer"のテンプレートは、上記502に示した"twitter_keyword"の出力ストリームデータを入力ストリームデータとする。
なお、"twitter_keyword"のテンプレートでは、上記ストリーム定義501のうち、必須カラムの"text"以外の"msgID"、"time"、"userID"のカラムがオプションカラムに含まれる。また、上記"twitter_keyword_influencer"のテンプレートでは、必須カラムの"userID"以外の"msgID"、"time"、"text"、"keyword"のカラムがオプションカラムに含まれる。また、上記"twitter_keyword_influencer"のテンプレートでは、"msgID"、"time"、"text"、"userID"が入力スキーマを構成する。
以上のように、ストリーム処理定義500には、入力されるストリームデータと出力となるストリームデータがテンプレート111毎に定義される。
図7は、テンプレート呼び出し情報203の一例を示す図である。テンプレート呼び出し情報203は、図6に示したストリーム処理定義500から、入出力の関係を抽出したテーブルである。
テンプレート呼び出し情報203は、図6に示したストリーム処理定義500のテンプレート111の呼び出し名を格納するテンプレート呼び出し名2031と、テンプレートの種類(または機能)を格納するテンプレート2032と、入力となるカラムを格納する入力スキーマ2033と、当該テンプレートの必須カラム2034と、オプションカラム2035と、テンプレートから出力されるカラムを格納する出力カラム2036からひとつのレコードが構成される。
これらの各フィールド2031〜2036の値は、図6に示したストリーム定義501と、テンプレート呼び出し502、503の定義から抽出することができる。
図8、図9は、クエリ生成部109で、テンプレート111を用いて生成されたストリーム処理クエリ700の一例を示す図の前半部及び後半部である。図中711は、図6に示したストリーム処理定義500のストリーム定義501をコピーしたもので、ストリームデータ処理の名前と、入力スキーマが定義される。
図中712では、クエリ生成部109は、入力されたデータに対してIDを付与して、必須カラムとオプションカラムの関連付けを行うクエリが定義される。このクエリは、図2に示したID付与に対応した。
次に、クエリ生成部109は、読み込んだストリームデータ処理定義の502とテンプレート111−1を読み込んで、テンプレート111−1の"string_part_match"の内容をストリーム処理クエリ700に展開する(713)。クエリ生成部109は、"string_part_match"のテンプレートの出力カラムと、オプションカラムを結合する結合クエリ定義を挿入する(714)。なお、結合クエリ定義の挿入は、図3に示した結合処理挿入部204によって後述するように実施される。
図9の図中715〜717では、クエリ生成部109は、図8と同様に、データに対してIDを付与し(715)、読み込んだストリームデータ処理定義の503とテンプレート111−3を読み込んで、テンプレート111−2の"string_match"の内容をストリーム処理クエリ700に展開し(716)、"string_match"のテンプレートの出力カラムと、オプションカラムを結合する結合クエリ定義を挿入する(717)。なお、結合クエリ定義の挿入は、上記714と同様に結合処理挿入部204によって後述するように実施される。
以上のように、クエリ生成部109は、読み込んだストリーム処理定義500に含まれる2つのテンプレート111−1、111−2から、ストリーム処理クエリ700を生成する。
以下、図3に示したクエリ生成部109で行われる処理の詳細について説明する。
図10は、テンプレート呼び出し情報生成部202で行われる処理の一例を示すフローチャートである。この処理は、クエリ生成サーバ107が、端末130からクエリ生成要求を受信したときに実行される(901)。なお、クエリ生成要求には、ストリーム処理定義500が指定されている。
クエリ生成部109のテンプレート呼び出し情報生成部202は、クエリ生成要求で指定されたストリーム処理定義500をストレージ123から読み込む(902)。次に、テンプレート呼び出し情報生成部202は、ストリーム処理定義500に含まれるテンプレート111を抽出する。そして、テンプレート呼び出し情報生成部202は、抽出したテンプレート111の構成情報(テンプレート構成情報112)を、ストレージ123から読み込む(903)。なお、ストリーム処理定義500に含まれるテンプレート111の抽出は、図6の502、503で示したように、"CALL TEMPLATE"で記述されたテンプレート111を抽出すればよい。
テンプレート呼び出し情報生成部202は、読み込んだテンプレート構成情報112のそれぞれについて、テンプレート呼び出し情報203がメモリ122上に登録されているか否かを判定する(904)。
テンプレート呼び出し情報生成部202は、すべてのテンプレート構成情報112についてテンプレート呼び出し情報203が登録されていれば処理を終了する(907)。
テンプレート呼び出し情報生成部202は、テンプレート呼び出し情報203に登録されていないテンプレート構成情報112が存在する場合には、ステップ905、906の処理により、テンプレート構成情報112毎にテンプレート呼び出し情報203を生成し、メモリ122に格納していく。
まず、ステップ905で、テンプレート呼び出し情報生成部202は、入力ストリームデータのスキーマが確定しているテンプレートについて、ストリーム処理定義500の情報を取得する。入力ストリームデータのスキーマが確定している、ということは、図7のストリーム処理定義500のストリーム定義501を入力とするテンプレート111から順に、入力スキーマと出力スキーマを辿って、テンプレート構成情報112毎にテンプレート呼び出し情報203を登録する。具体的には、テンプレート呼び出し情報生成部202が、ストリーム処理定義500に記載されているテンプレート呼出し名2031と、入力スキーマ2033と、必須カラム2034と、出力カラム2036と、をテンプレート呼び出し情報203に登録する。また、テンプレート呼び出し情報生成部202は、必須カラム2034以外の入力ストリームデータのカラム(入力スキーマ2033)をオプションカラム2035としてテンプレート呼出し情報2033に登録する。
ステップ906では、テンプレート呼び出し情報生成部202が、出力カラム2304及びオプションカラム2305に含まれるカラムの集合を、テンプレート111の出力ストリームデータを入力とする次のテンプレートの入力ストリームデータのスキーマとする。つまり、前段のテンプレート111の出力スキーマを確定し、当該出力スキーマを入力とするテンプレート111を次の処理対象とする。そして、テンプレート呼び出し情報生成部202は、ステップ904へ戻って、全てのテンプレート構成情報112について上記処理を繰り返して実行する。
上記処理によって、ストリーム処理定義500に記述されたテンプレートの構成情報112について、入力スキーマと出力スキーマを確定させながらテンプレート呼出し情報2033を生成することができる。換言すれば、前段の出力スキーマが確定しているテンプレート111から順に、処理が行われる。なお、テンプレート呼出し情報2033は、ストレージ123に格納されても良い。
図11は、図3で示したように、クエリ生成部109の結合処理挿入部204で行われる処理の一例を示すフローチャートである。この処理は、テンプレート呼び出し情報生成部202の処理が完了した後に、実行される。
結合処理挿入部204は、まず、ストリーム処理定義500とテンプレート構成情報112及びテンプレート呼び出し情報203を読み込む(1001、1002)。結合処理挿入部204は、ストリーム処理定義500に記述された全てのテンプレート111について、ID付与クエリと、テンプレート内クエリ及び結合処理クエリの生成が完了したか否かを判定する(1003)。結合処理挿入部204は、全てのテンプレート111について処理が完了していれば当該結合処理を終了する(1008)。一方、処理が完了していないテンプレート111が存在する場合、結合処理挿入部204はステップ1004〜1006の処理が全てのテンプレート111で完了するまで繰り返して実行する。
結合処理挿入部204は、ID付与クエリ、テンプレート内クエリ、結合処理クエリを生成していないテンプレートを抽出する(1004)。結合処理挿入部204は抽出したテンプレート111について、図12に示すID付与クエリ定義生成処理(ID付与部)を実行する(1005)。次に、結合処理挿入部204は、図13に示すテンプレート内クエリ定義生成処理(テンプレート内クエリ生成部)を実行する(1006)。そして、結合処理挿入部204は、図14に示す結合クエリ定義生成処理(結合クエリ生成部)を実行する(1007)。
以下に、テンプレート111毎の、ID付与クエリ、テンプレート内クエリ及び結合処理クエリの生成処理の詳細について説明する。なお、結合処理挿入部204が、ID付与クエリ定義生成部、テンプレート内クエリ定義生成部及び結合クエリ定義生成部を含み、下記の処理の主体となる。
図12は、図11のステップ1005に示したID付与クエリ定義生成処理で行われる処理の一例を示すフローチャートである。結合処理挿入部204は、抽出したテンプレート111からひとつのテンプレート111を呼び出し、当該呼び出したテンプレートへの入力ストリームデータを入力とする(1101、1102)。
結合処理挿入部204は、入力ストリームデータとテンプレート111の出力を一意に対応付ける識別子(例えば、図2のtextID)を、データに付与するクエリ(ID付与クエリ)定義を生成する。なお、識別子のカラム名は、テンプレート構成情報112のID(図5Aの1124)とする。
以上の処理により、結合処理挿入部204は、入力ストリームデータとテンプレート111の出力を一意に対応付ける識別子をデータに付与するクエリを、呼び出したテンプレート111のID付与クエリ定義として生成する。本実施例では、この処理により、図8の712、図9の715に示すID付与クエリ定義が生成される。
図13は、図11のステップ1006に示したテンプレート内クエリ定義生成処理で行われる処理の一例を示すフローチャートである。結合処理挿入部204は、図12で呼び出したテンプレート111について以下の処理を実施する(2601)。
結合処理挿入部204は、呼び出したテンプレート111に記述されたクエリを読み込む(2602)。そして、結合処理挿入部204は、読み込んだクエリに含まれる当該テンプレート111の入力ストリームデータを、図12で生成したID付与クエリの出力とする(2603)。結合処理挿入部204は、読み込んだクエリに含まれる当該テンプレート111の出力ストリームデータを、後述する結合クエリの入力として定義する(2604)。
上記処理により、テンプレート内クエリの定義を生成して処理を終了する(2605)。本実施例では、この処理により、図8の713、図9の716に示すクエリ定義が生成される。
図14は、図11のステップ1007に示した結合クエリ定義生成処理で行われる処理の一例を示すフローチャートである。結合処理挿入部204は、図12で呼び出したテンプレート111について、以下の処理を実施する(1201)。
結合処理挿入部204は、結合クエリのウィンドウサイズを決定する。テンプレート111と、テンプレート111の出力ストリームデータを結合する時のウィンドウサイズをNOWとする。図2で示したように、入力ストリームデータにIDを付与しただけのデータ(オプションカラム)のウィンドウを1分とし、所定の処理を実施した出力ストリームデータはNOWウィンドウで結合するよう定義する(1202)。
結合処理挿入部204は、結合クエリの出力カラムを決定する。結合処理挿入部204は、テンプレート111の出力ストリームデータのIDを除くカラムと、テンプレートの入力ストリームデータの内、オプションカラムを結合クエリの出力カラムとする(1203)。これにより、図2で示したように、出力ストリームデータのカラムとオプションカラムのうち、結合すべきカラムが設定される。
次に、結合処理挿入部204は、結合クエリの結合条件を決定する。例えば、図2のステップ703で示したように、テンプレート111の入力ストリームデータ(オプションカラム)に付与されたID(strID=textID)と、出力ストリームデータに含まれるID(strID=textID)の一致を、結合条件とする。
そして、結合処理挿入部204は、決定したウィンドウサイズ、出力カラム、結合条件からSELECT文、FROM文、WHERE文が決定されて結合処理クエリを生成する(1205)。
上記処理により、入力ストリームデータとテンプレートの出力ストリームデータを結合する結合クエリの定義を生成して処理を終了する(1206)。本実施例では、この処理により、図8の714、図9の7176に示すクエリ定義が生成される。
以上に示した、図12〜図14の処理をひとつのテンプレート111に対して行うことで、ID付与クエリと、テンプレート内クエリと、結合クエリが生成され、ストリーム処理クエリ700としてクエリ生成サーバ107のストレージ123に格納される。
端末130からストリーム処理クエリ700を指定して、ストリーム処理実行サーバ101にストリーム処理要求を送信する。ストリーム処理実行サーバ101は、クエリ生成サーバ107が所定のストリーム処理クエリ700を取得して、ストリームデータ処理エンジン103でストリーム処理クエリ700を実行する。ストリーム処理実行サーバ101は、データソース140からのストリームデータを受け付けて、ストリーム処理クエリ700で所定の処理を行う。
本発明では、図4A、図4B及び図5A、図5Bで示したように、テンプレート111、テンプレート構成情報112では、入力スキーマ1122の必須カラムとして文字列(STRING)のみを定義しただけであるので、SNSや様々なブログのテキストデータを入力ストリームデータとして扱うことが可能となって、前記従来例のように、SNSの種類(あるいは提供者)やブログの種類(あるいは提供者)に係わらず、テンプレート111を利用することができる。
これによって、多数のテンプレートを用意することなく、ひとつのテンプレート111で複数の入力を受け付けることが可能となって、クエリのテンプレートを開発するコストを削減することが可能となる。
また、新たなサービスのテキストデータを利用するのであれば、新たなテンプレート111を作成することなく、既存のテンプレート111を利用することが可能となる。これにより、プログラムの開発能力が低いユーザであってもストリームデータを容易に利用することが可能となる。
図15は、本発明の第2の実施例を示し、テンプレート登録部108の入出力の関係の一例を示すブロック図である。本実施例では、ID(strID)と結合時のウィンドウサイズが付与されていないID未付与テンプレート111Aと、テンプレート部分構成情報112Aを入力とし、IDの付与と、ウィンドウサイズの判定を自動的に行う例を示す。なお、ID未付与テンプレート111Aと、テンプレート部分構成情報112Aは、端末130から登録要求を受けて、クエリ生成サーバ107が処理を開始する。なお、ウィンドウサイズは、図2に示したオプションカラムと結合する出力ストリームデータのウィンドウサイズ(703の「NOW」)を示す。
本実施例2のテンプレート登録部108は、ID未付与テンプレート111Aと、IDとウィンドウサイズが未定のテンプレート部分構成情報112Aを入力として受け付け、後述するように、前記実施例1と同様にstrIDとウィンドウサイズを有するテンプレート111とテンプレート構成情報112を生成する。
このため、テンプレート登録部108は、図15で示すように、ID自動付与部1081と、ストリーム処理実行サーバ101のストリームデータ処理エンジン103のパーサ(構文解析部)1082と、結合時ウィンドウサイズ算出部1083とを有する。その他の構成については、前記実施例1と同様である。なお、パーサ1082は、ストリーム処理実行サーバ101のストリームデータ処理エンジン103から予めテンプレート登録部108に登録しておいたものである。
図16は、ID未付与テンプレート111Aの一例を示す図である。テンプレート111Aでは、SELECT文で"str"及び"$key"のみが定義され、実施例1に示した図4AのようなID(strID)については定義されていない。一方、図17は、ID自動付与部1081でIDを付与されたテンプレート111−3の一例を示す図である。
図19は、テンプレート部分構成情報112Aの一例を示す図である。テンプレート部分構成情報112Aでは、名前1121、入力スキーマ1122、出力スキーマ1123は定義されているがID1124及びウィンドウサイズ1125は未定義である。一方、図20は、ID自動付与部1081でIDを付与されたテンプレート構成情報112−3の一例を示す図である。
図15に示したテンプレート登録部108のID自動付与部1081では、ID未付与のテンプレート111Aと、テンプレート部分構成情報112Aを読み込んで、IDを付加可能であればIDを付与するクエリ定義を加えてテンプレート111−3とテンプレート構成情報112−3を生成する。
例えば、図16に示すID未付与テンプレート111Aでは、SELECT文にidは定義されていない。テンプレート登録部108のID自動付与部1081でID未付与テンプレート111Aを処理すると、図17の1081Aで示すように、2つのSELECT文にはidがそれぞれ挿入されて、テンプレート111−3を生成する。
また、テンプレート登録部108のID自動付与部1081は、後述するように、テンプレート111AにIDを付与可能であれば、テンプレート部分構成情報112AのID1124にidを付与する。また、テンプレート登録部108の結合時ウィンドウサイズ算出部1083は、テンプレート111−3(111A)が所定の条件を満たしていれば、ウィンドウサイズ1125を"NOW"に設定して、テンプレート構成情報112−3を生成する。
図21は、テンプレート登録部108で行われる処理の一例を示すフローチャートである。テンプレート登録部108は、ID未付与テンプレート111Aとテンプレート部分構成情報112Aを受け付けると処理を開始する(1901)。テンプレート登録部108は、受け付けたID未付与テンプレート111Aとテンプレート部分構成情報112Aを読み込む(1902)。
テンプレート登録部108のID自動付与部1081は、読み込んだID未付与テンプレート111Aを解析して、後述するように、IDを付与可能か否かを判定する。付与可能であれば、ID自動付与部1081はID未付与テンプレート111Aとテンプレート部分構成情報112AにIDを付与する(1903)。なお、IDを付与できない場合には、ID自動付与部1081は端末130にIDの付与ができないことを通知する。
テンプレート登録部108のウィンドウサイズ算出部1083は、読み込んだID未付与テンプレート111Aを解析して、オプションカラムと出力ストリームデータを結合する際のウィンドウサイズを決定する(1904)。なお、ウィンドウサイズを決定できないときには、ウィンドウサイズ算出部1083は、端末130にウィンドウサイズが判定不能であることを通知する。
テンプレート登録部108は、ストレージ123に、IDを付与したテンプレート111−3と、ID及びウィンドウサイズを設定したテンプレート構成情報112−3をそれぞれ格納する(1905)。
以上の処理によって、ID未付与テンプレート111Aとテンプレート部分構成情報112Aを受け付けて、ID未付与テンプレート111Aが所定の条件を満たしていればテンプレート111−3とテンプレート構成情報112−3を生成してストレージ123に格納する(1906)。
図22は、ID自動付与部1801で行われる処理の一例を示すフローチャートである。この処理は、図21のステップ1903で行われる処理である(2001)。
ID自動付与部1081は、ID未付与テンプレート111Aをストリームデータ処理エンジン103のパーサ1082で解析して、オペレータツリーを生成する(2002)。
図18は、ID未付与テンプレート111Aのオペレータツリー1609の一例を示す図である。このオペレータツリー1609は、2つのNOWWINDOW1601、1604の入力を、フィルタ1602,1605で処理し、これらの射影(PROJECTION)1603、1606を結合(UNION)1607する。結合した結果をISTREAM1608として出力する。パーサ1082は、読み込んだID未付与テンプレート111Aの構造を解析して上記のオペレータツリー1609を生成する。
図22のステップ2003では、ID自動付与部1081は、オペレータツリー1609を解析して、オペレータツリー1609が、状態を持たないリレーショナル演算オペレータ(Filter、Projection, Union)と、ストリーム演算(ISTREAM等)、ウィンドウ演算(NOWWINDOW等)のみから構成されているか否かを判定する。換言すれば、ID自動付与部1081は、テンプレートでデータに付与したIDが追跡可能であるか否かを判定する。追跡可能であればステップ2005へ進み、追跡不能であればステップ2004へ進む。ステップ2004では、IDを付与するクエリを生成できないことを示すエラーを端末130に通知して処理を停止する。
ステップ2005では、ID自動付与部1081が、ID未付与テンプレート111Aの全クエリ定義のSelect文にIdカラムを追加してテンプレート111−3を生成する。この結果、図16に示したID未付与テンプレート111Aから図17に示したテンプレート111−3が生成される。
ステップ2006では、ID自動付与部1081が、テンプレート部分構成情報112AのIDの項目1124にIdを登録した、テンプレート構成情報112−3を生成する。
以上の処理により、ID自動付与部1081は、テンプレート111−3とテンプレート構成情報112−3を生成して処理を終了する。
図23は、ウィンドウサイズ算出部1083で行われる処理の一例を示すフローチャートである。この処理は、図21のステップ1904で行われる処理である(2101)。
ウィンドウサイズ算出部1083は、テンプレート111−3のクエリ定義に、Select文がIDに対応するカラムを含み、かつ、ストリーム演算にRSTREAM、DSTREAMを含むクエリ定義が存在するか否かを判定する(2102)。換言すれば、ウィンドウサイズ算出部1083は、出力ストリームデータが遅延するRSTREAM、DSTREAMを排除し、テンプレート111−3で付与されたIDを確実に追跡する。ウィンドウサイズ算出部1083は、テンプレート111−3の演算で、遅延が生じる場合にはステップ2104へ進み、遅延が生じない場合にはステップ2103へ進む。
次に、ウィンドウサイズ算出部1083は、テンプレート111−3を解析して、Select文がIDに対応するカラムを含み、かつ、JOINを含むクエリ定義が存在するか否かを判定する(2103)。換言すれば、JOINを含むクエリ定義では、連結するデータの複数のIDについて、いずれのIDを選択するかという問題が生じるため、ウィンドウサイズ算出部1083は、JOINを含むクエリ定義を排除する。ウィンドウサイズ算出部1083は、JOINを含むクエリ定義が存在する場合には、ステップ2104へ進み、そうでない場合にはステップ2105へ進む。
ステップ2105では、ウィンドウサイズ算出部1083は、テンプレート構成情報112−3の結合時ウィンドウサイズ1125を"NOW"に設定する。
一方、ステップ2104では、ウィンドウサイズ算出部1083は、結合時のウィンドウサイズが判定できないことを示すエラーを端末130に通知して処理を停止する。
以上の処理により、テンプレート111−3が所定の条件を満たす場合には、結合時ウィンドウサイズを"NOW"に設定して、テンプレート構成情報112−3に設定する(2106)。
以上のように、実施例2では、ID未付与テンプレート111Aとウィンドウサイズが未定のテンプレート部分構成情報112Aから自動的にテンプレート111−3及びテンプレート構成情報112−3を生成することができ、端末130を操作するユーザや管理者の労力をさらに低減できるのである。
図24〜図27は、本発明の第3の実施例を示し、クエリ生成部109の入出力の関係の一例を示すブロック図である。本実施例3は、前記実施例1の図3に示した結合処理挿入部204に代わって、オプションカラム挿入部205を設けたもので、その他の構成は前記第1の実施例と同様である。
クエリ生成部109は、前記第1の実施例と同様にして、ストリーム処理定義500を受け付けて、テンプレート呼び出し情報生成部202でテンプレート呼び出し情報203を生成する。次に、クエリ生成部109は、オプションカラム挿入部205で、テンプレート111の処理結果にオプションカラムを挿入するクエリを定義して、ストリーム処理クエリ700Aを生成する。本実施例3では、必須カラムとオプションに付与するID(=strID)は、オプションの挿入位置を決定するために利用する。
図25は、クエリ生成部109で生成されたストリーム処理クエリ700Aの一例を示す図の前半部である。図26は、同じくストリーム処理クエリ700Aの一例を示す図の後半部である。
ストリーム処理クエリ700Aは、図中711では、前記実施例1の図6と同様で、ストリームデータ処理の名前と、入力スキーマが定義される。図中712も前記実施例1の図6と同様で、入力されたデータに対してID(strID)を付与するクエリが定義される。
図中713Aでは、テンプレート111−1の"string_part_match"の内容を、前記実施例1と同様にストリーム処理クエリ700Aへ展開し、さらに、オプションカラム挿入部205が、付与されたID(strID)と一致するオプションカラムであるmsgID、time、userIDを挿入する。そして、テンプレート111−1の処理結果に、strIDが一致するオプションカラムを挿入した後、strID自体は不要になるため、クエリ生成部109はstrIDを除去するクエリを定義する(720)。
図26に示す、string_matchのテンプレート111−2についても同様であり、図中715で入力スキーマにIDを付与し、図中716Aでは、テンプレート111−2の"string_match"の内容を、前記実施例1と同様にストリーム処理クエリ700Aへ展開し、さらに、オプションカラム挿入部205が、付与されたID(strID)と一致するオプションカラムであるmsgID、time、text、keywordを挿入する。そして、IDが一致するオプションカラムを挿入した後、ID自体は不要になるため、クエリ生成部109はstrIDを除去するクエリを定義する(721)。
図27は、クエリ生成部109のオプションカラム挿入部205で行われる処理の一例を示すフローチャートである。この処理は、図3(図24)に示したテンプレート呼び出し情報生成部202の処理が完了した後に実行される。
オプションカラム挿入部205は、まず、ストリーム処理定義500とテンプレート構成情報112及びテンプレート呼び出し情報203を読み込む(2501、2502)。オプションカラム挿入部205は、ストリーム処理定義500に記述された全てのテンプレート111について、オプションカラムを追加したか否かを判定する(2503)。オプションカラム挿入部205は、全てのテンプレート111について処理が完了していれば当該結合処理を終了する(2508)。一方、処理が完了していないテンプレート111が存在する場合、オプションカラム挿入部205はステップ2504〜2507の処理が全てのテンプレート111で完了するまで繰り返して実行する。
オプションカラム挿入部205は、オプションカラムを追加していないテンプレート111を抽出する(2504)。オプションカラム挿入部205は抽出したテンプレート111について、前記実施例1の図12に示したID付与クエリ定義生成処理(ID付与クエリ定義生成部)を実行する(2505)。
次に、オプションカラム挿入部205は、前記実施例1の図13に示したテンプレート内クエリ定義生成処理を実行し、テンプレート111に含まれるクエリ定義において、Select文にIDが対応するカラムを含む場合に、同Select文にオプションカラムを追加するクエリを生成する(2506)。
次に、オプションカラム挿入部205は、テンプレート111の出力ストリームデータを入力とし、当該入力ストリームのデータを一意に対応付けるIDを、データから除去するクエリ(ID除去クエリ)定義を生成する。なおIDのカラム名は、テンプレート構成情報のIDとする。
以上の処理により、テンプレート111で処理される必須カラムにオプションカラムを加えた出力ストリームデータを得ることができる。
図28〜図33は、本発明の第4の実施例を示し、前記第1〜第3の実施例では結合時のウィンドウサイズが"NOW"であったのに対し、本実施例4では、テンプレート111−4で示す"string_part_match"のウィンドウサイズ1125を"2分"、テンプレート111−5で示す"string_match"のウィンドウサイズ1125を"5分"としたもので、その他の構成は、前記第1実施例と同様である。
本実施例4では、テンプレート111の処理による遅延を見込んで、オプションカラムを所定の時間のウィンドウに保持し、テンプレート111の処理が完了した出力ストリームデータとオプションカラムを順次結合するクエリ定義を生成することができる。
図28Aは、"string_part_match_2m_delay"のテンプレート111−4の一例を示す図である。図中、前記実施例1の図4Aに示した"string_part_match"と相違する点を太字にて示す。"string_part_match_2m_delay"のテンプレート111−4では、DSTREAMで2分のウィンドウサイズを設定した点が前記実施例1の図4Aと相違する。
図28Bは、"string_match_5m_delay"のテンプレート111−5の一例を示す図である。図中、前記実施例1の図4Bに示した"string_match"と相違する点を太字にて示す。"string_match_5m_delay"のテンプレート111−5では、DSTREAMで5分のウィンドウサイズを設定した点が前記実施例1の図4Bと相違する。
図29Aは、"string_part_match_2m_delay"のテンプレート111−4のテンプレート構成情報112−4の一例を示す図である。前記実施例1の図5Aに示した"string_part_match"と相違する点は、名前1121が"string_part_match_2m_delay"になり、結合時ウィンドウサイズ1125が"2分"になった点である。
図29Bは、"string_match_5m_delay"のテンプレート111−5のテンプレート構成情報112−5の一例を示す図である。前記実施例1の図5Bに示した"string_match"と相違する点は、名前1121が"string_match_5m_delay"になり、結合時ウィンドウサイズ1125が"5分"になった点である。
図30は、ストリーム処理定義500Aの一例を示す図である。前記実施例1の図6に示したストリーム処理定義500と相違する点は、図中502A、503Aにおいて、テンプレート111の名称が、"string_part_match_2m_delay"と"string_match_5m_delay"に変更された点で、その他は同様である。
図31は、クエリ生成部109で生成されるテンプレート呼び出し情報203の一例を示す図である。ストリーム処理定義500Aの一例を示す図である。前記実施例1の図7に示したテンプレート呼び出し情報との差異は、テンプレート2032に格納される名称が上記図30と同様に変更された点で、その他は前記実施例1と同様である。
本実施例では、クエリ生成部109が、前記実施例1の図3、図10〜図14を実行することで、図32、図33に示すストリーム処理クエリ700Bを生成する。
図32、図33は、ストリーム処理定義500Aとテンプレート111,テンプレート構成情報112に基づいて生成されたストリーム処理クエリ700Bの一例を示す図の前半部及び後半部である。
図32、図33のストリーム処理クエリ700Bで前記実施例1の図8、図9に示したストリーム処理クエリ700と相違する部分を太字にて表記した。まず、図32のクエリ定義713Bでは、ストリームデータ処理をDSTREAMに変更し、また、ウィンドウサイズを2分に変更した。図32の結合クエリ定義713Bでは、ウィンドウサイズを2分に変更した。
同様に、図33のクエリ定義716Bでは、ストリームデータ処理をDSTREAMに変更し、また、ウィンドウサイズを5分に変更した。図33の結合クエリ定義717Bでは、ウィンドウサイズを5分に変更した。
以上のストリーム処理クエリ700Bでは、string_part_match_2m_delay"のテンプレート111−4の処理の出力ストリームとオプションカラムを2分間のウィンドウで結合し、"string_match_5m_delay"のテンプレート111−5の処理の出力ストリームとオプションカラムを5分間のウィンドウで結合して出力ストリームを出力する。
上記処理により、テンプレート111内の処理に要する時間を加味して出力ストリームの遅延を許容することが可能となる。
なお、本発明において説明した計算機等の構成、処理部及び処理手段等は、それらの一部又は全部を、専用のハードウェアによって実現してもよい。
また、本実施例で例示した種々のソフトウェアは、電磁的、電子的及び光学式等の種々の記録媒体(例えば、非一時的な記憶媒体)に格納可能であり、インターネット等の通信網を通じて、コンピュータにダウンロード可能である。
また、本発明は上記した実施例に限定されるものではなく、様々な変形例が含まれる。例えば、上記した実施例は本発明をわかりやすく説明するために詳細に説明したものであり、必ずしも説明した全ての構成を備えるものに限定されるものではない。
Claims (12)
- プロセッサとメモリを備えた計算機で、入力されたストリームデータを処理するクエリを生成するクエリ生成方法であって、
前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込む第1のステップと、
前記計算機が、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する第2のステップと、
を含むことを特徴とするクエリ生成方法。 - 請求項1に記載のクエリ生成方法であって、
前記第1のステップは、
前記テンプレートは、前記入力されたストリームデータから分離する必須カラムとオプションカラムを識別子で対応付ける定義を含み、
前記第2のステップは、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するステップと、
前記テンプレートで前記必須カラムを処理するクエリを生成するステップと、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとを結合して、ひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。 - 請求項1に記載のクエリ生成方法であって、
前記第2のステップは、
前記入力されたストリームデータを必須カラムとオプションカラムに分離するクエリを生成するステップと、
前記テンプレートで前記必須カラムを処理するクエリを生成するステップと、
前記テンプレートの処理の遅延に応じた所定のウィンドウサイズで前記オプションカラムを保持し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。 - 請求項1に記載のクエリ生成方法であって、
前記第2のステップは、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するステップと、
前記テンプレートに含まれるクエリで前記必須カラムを処理する際に、前記必須カラムに対応付けられた識別子を有するオプションカラムを、前記クエリの処理結果に挿入し、当該処理結果と前記オプションカラムとをひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。 - 請求項1に記載のクエリ生成方法であって、
前記第2のステップは、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを追加するステップと、
前記テンプレートで前記必須カラムを処理するクエリを生成するステップと、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成するステップと、
を含むことを特徴とするクエリ生成方法。 - 請求項3に記載のクエリ生成方法であって、
前記第2のステップは、
前記テンプレートを解析して前記ウィンドウサイズを決定するステップをさらに含むことを特徴とするクエリ生成方法。 - プロセッサとメモリを備えて、入力されたストリームデータを処理するクエリを生成するクエリ生成装置であって、
前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記必須カラムに対する処理を定義したテンプレートを読み込んで、前記入力されたストリームデータを必須カラムとオプションカラムに分離し、前記テンプレートで前記必須カラムを処理し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成するクエリ生成部を、
有することを特徴とするクエリ生成装置。 - 請求項7に記載のクエリ生成装置であって、
前記テンプレートは、前記入力されたストリームデータから分離する必須カラムとオプションカラムを識別子で対応付ける定義を含み、
前記クエリ生成部は、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するID付与部と、
前記テンプレートで前記必須カラムを処理するクエリを生成するテンプレート内クエリ生成部と、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとを結合して、ひとつのデータとして出力するクエリを生成する結合クエリ生成部と、
を含むことを特徴とするクエリ生成装置。 - 請求項7に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記入力されたストリームデータを必須カラムとオプションカラムに分離するクエリを生成し、前記テンプレートで前記必須カラムを処理するクエリを生成するテンプレート内クエリ生成部と、
前記テンプレートの処理の遅延に応じた所定のウィンドウサイズで前記オプションカラムを保持し、前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する結合クエリ生成部と、
を含むことを特徴とするクエリ生成装置。 - 請求項7に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを生成するID付与部を有し、
前記テンプレートに含まれるクエリで前記必須カラムを処理する際に、前記必須カラムに対応付けられた識別子を有するオプションカラムを、前記クエリの処理結果に挿入し、当該処理結果と前記オプションカラムとをひとつのデータとして出力するクエリを生成することを特徴とするクエリ生成装置。 - 請求項7に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記入力されたストリームデータを分離した必須カラムとオプションカラムとを対応付ける識別子を、前記必須カラムとオプションカラムに付与するクエリを追加するID自動付与部と、
前記テンプレートで前記必須カラムを処理するクエリを生成するテンプレート内クエリ生成部と、
前記識別子に対応する前記テンプレートの処理結果と、前記オプションカラムとをひとつのデータとして出力するクエリを生成する結合クエリ生成部と、
を含むことを特徴とするクエリ生成装置。 - 請求項9に記載のクエリ生成装置であって、
前記クエリ生成部は、
前記テンプレートを解析して前記ウィンドウサイズを決定するウィンドウサイズ算出部をさらに含むことを特徴とするクエリ生成装置。
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
PCT/JP2013/084690 WO2015097789A1 (ja) | 2013-12-25 | 2013-12-25 | クエリ生成方法及びクエリ生成装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPWO2015097789A1 JPWO2015097789A1 (ja) | 2017-03-23 |
JP6167187B2 true JP6167187B2 (ja) | 2017-07-19 |
Family
ID=53477729
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2015554366A Active JP6167187B2 (ja) | 2013-12-25 | 2013-12-25 | クエリ生成方法及びクエリ生成装置 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20160019266A1 (ja) |
JP (1) | JP6167187B2 (ja) |
WO (1) | WO2015097789A1 (ja) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017037773A1 (ja) * | 2015-08-28 | 2017-03-09 | 株式会社日立製作所 | クエリ開発支援方法及びクエリ開発支援装置 |
CN106487851B (zh) * | 2015-08-31 | 2019-06-18 | 北京国双科技有限公司 | 网页编程信息传输方法、装置及系统 |
US9979733B2 (en) | 2015-09-24 | 2018-05-22 | International Business Machines Corporation | Automatically provisioning new accounts on managed targets by pattern recognition of existing account attributes |
US11056105B2 (en) | 2017-05-18 | 2021-07-06 | Aiqudo, Inc | Talk back from actions in applications |
US11340925B2 (en) | 2017-05-18 | 2022-05-24 | Peloton Interactive Inc. | Action recipes for a crowdsourced digital assistant system |
EP3635578A4 (en) * | 2017-05-18 | 2021-08-25 | Aiqudo, Inc. | SYSTEMS AND PROCEDURES FOR CRWODSOURCING ACTIONS AND COMMANDS |
US11043206B2 (en) | 2017-05-18 | 2021-06-22 | Aiqudo, Inc. | Systems and methods for crowdsourced actions and commands |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7010538B1 (en) * | 2003-03-15 | 2006-03-07 | Damian Black | Method for distributed RDSMS |
US9158816B2 (en) * | 2009-10-21 | 2015-10-13 | Microsoft Technology Licensing, Llc | Event processing with XML query based on reusable XML query template |
US8713049B2 (en) * | 2010-09-17 | 2014-04-29 | Oracle International Corporation | Support for a parameterized query/view in complex event processing |
-
2013
- 2013-12-25 WO PCT/JP2013/084690 patent/WO2015097789A1/ja active Application Filing
- 2013-12-25 JP JP2015554366A patent/JP6167187B2/ja active Active
- 2013-12-25 US US14/771,338 patent/US20160019266A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
JPWO2015097789A1 (ja) | 2017-03-23 |
WO2015097789A1 (ja) | 2015-07-02 |
US20160019266A1 (en) | 2016-01-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6167187B2 (ja) | クエリ生成方法及びクエリ生成装置 | |
CN109885311B (zh) | 一种应用程序的生成方法及设备 | |
US11544623B2 (en) | Consistent filtering of machine learning data | |
US11386351B2 (en) | Machine learning service | |
US10901961B2 (en) | Systems and methods for generating schemas that represent multiple data sources | |
JP6594543B2 (ja) | 注文クラスタリング方法及び装置並びに悪意の情報に対抗する方法及び装置 | |
US9886670B2 (en) | Feature processing recipes for machine learning | |
US20150379072A1 (en) | Input processing for machine learning | |
Crawl et al. | A provenance-based fault tolerance mechanism for scientific workflows | |
CN109669976B (zh) | 基于etl的数据服务方法及设备 | |
WO2016016975A1 (ja) | 開発支援システム | |
US20140059517A1 (en) | Method and system for facilitating rapid development of end-to-end software applications | |
US11030384B2 (en) | Identification of sequential browsing operations | |
RU2662405C2 (ru) | Автоматическое формирование сертификационных документов | |
JP6256115B2 (ja) | 操作探索プログラム、操作探索方法、および操作探索装置 | |
US9582270B2 (en) | Effective feature location in large legacy systems | |
JP2019530121A (ja) | データ統合ジョブ変換 | |
WO2022012327A1 (zh) | 代码分析的方法、系统及计算设备 | |
Agarwal et al. | Retrofitting GDPR compliance onto legacy databases | |
Huang et al. | A process mining based service composition approach for mobile information systems | |
JP2015026262A (ja) | コンパイル方法、プログラム及びコンパイル装置 | |
US11150897B1 (en) | Codifying rules from online documentation | |
JP2019028723A (ja) | 設計確認装置及び設計確認方法 | |
JP6336922B2 (ja) | 業務バリエーションに基づく業務影響箇所抽出方法および業務影響箇所抽出装置 | |
CN110083624A (zh) | 流数据处理方法、设备、数据处理设备、计算机介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
TRDD | Decision of grant or rejection written | ||
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20170613 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20170626 |
|
R150 | Certificate of patent or registration of utility model |
Ref document number: 6167187 Country of ref document: JP Free format text: JAPANESE INTERMEDIATE CODE: R150 |