JP6708919B2 - 情報処理プログラム、情報処理装置およびレコードデータ処理方法 - Google Patents

情報処理プログラム、情報処理装置およびレコードデータ処理方法 Download PDF

Info

Publication number
JP6708919B2
JP6708919B2 JP2015153178A JP2015153178A JP6708919B2 JP 6708919 B2 JP6708919 B2 JP 6708919B2 JP 2015153178 A JP2015153178 A JP 2015153178A JP 2015153178 A JP2015153178 A JP 2015153178A JP 6708919 B2 JP6708919 B2 JP 6708919B2
Authority
JP
Japan
Prior art keywords
data
record data
processing
collected
executed
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
Application number
JP2015153178A
Other languages
English (en)
Other versions
JP2017033330A (ja
Inventor
剛 尾屋家
剛 尾屋家
正雄 友藤
正雄 友藤
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015153178A priority Critical patent/JP6708919B2/ja
Priority to US15/218,419 priority patent/US10445336B2/en
Publication of JP2017033330A publication Critical patent/JP2017033330A/ja
Application granted granted Critical
Publication of JP6708919B2 publication Critical patent/JP6708919B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/254Extract, transform and load [ETL] procedures, e.g. ETL data flows in data warehouses
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/25Integrating or interfacing systems involving database management systems
    • G06F16/258Data format conversion from or to a database

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Description

本発明は、情報処理プログラム、情報処理装置およびレコードデータ処理方法に関する。
連携先のシステムからレコードデータを集めて一連の処理を行う技術として、例えばETL(Extraction Transformation and Loading)がある。
ETLは、連携先システムからレコードデータを収集・抽出(extract)し、所定の処理(transform)を行い、データベースまたは連携先システムへレコードデータを格納・配布(load)するという一連の動作を行う。
ETLのシステム形態としては、例えば、日々の業務で発生する売上げなどに関するレコードデータ(ジャーナルデータ)と、顧客や商品に関するレコードデータ(マスタデータ)とを収集して結合するものがある。このようなシステムにより、需要の変化を予測した販売施策や店舗間の在庫融通など、リアルタイムな情報利活用を実現することができる。
なお、ETLに関する技術として、例えば、後段ジョブオブジェクトの処理関数が、前段ジョブオブジェクトの処理関数が生成する出力データを変数として所定処理を実行し、出力データが未生成段階では出力データが生成されるまで待機する技術がある。
また、例えば、バッチ処理のプロセスメタデータを再編成し、適宜処理が実行可能な情報を保持して、各業務システムで更新情報が発生するタイミングで適宜データ加工プロセスを実行し、プレ集計結果を管理・公開する技術がある。
特開2007−265029号公報 特開2010−122880号公報
従来のETLは、処理対象のレコードデータがすべて収集されるまで待機し、レコードデータがすべて揃った後で所定の処理を行っている。しかし、各連携先システムからレコードデータが送信されるタイミングは、通常、ランダムであるから、レコードデータが完全に揃ってから所定の処理を行っていると、レコードデータの収集開始から処理開始までに時間がかかることになる。
1つの側面では、本発明は、レコードデータの処理の開始時期を早めることを目的とする。
1つの案では、情報処理プログラムが提供される。情報処理プログラムは、コンピュータに、複数の情報源からレコードデータを収集し、収集したレコードデータに対する処理を実行する際に、前記処理についての定義情報を参照して、前記処理が単一のレコードデータから結果データを生成可能である場合は、前記複数の情報源からの収集対象の全レコードデータの到着を待たずに前記処理を開始し、収集対象の全レコードデータのうちに参照を要するレコードデータが含まれ、前記参照を要するレコードデータにもとづいて前記処理としての変換処理が前記結果データを生成する際に、前記参照を要するレコードデータに未収集のレコードデータが存在する場合であっても、前記変換処理の一部の個別処理の実行を可能とするレコードデータが収集されている場合は、全レコードデータの収集を待たずに、前記個別処理を先行して行うように、前記変換処理を複数の個別処理に分割して実行し、前記定義情報にもとづいて、収集したレコードデータの中の項目により前記個別処理を実行できるか否かを判断し、前記項目により実行できると判断される前記個別処理を先行して行うように、前記個別処理の実行順序を変えて前記変換処理を実行する。
1側面によれば、レコードデータの処理の開始時期を早めることができる。
第1の実施の形態に係る情報処理装置の機能の一例を示す図である。 第2の実施の形態に係る情報処理装置の機能の一例を示す図である。 第3の実施の形態のシステム構成例を示す図である。 第3の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。 第3の実施の形態に用いるサーバの機能の一例を示すブロック図である。 ETLの定義画面の一例を示す図である。 結合処理対象のデータの一例を示す図である。 ETLの動作の一例を示す図である。 仮想データの一例を示す図である。 結果データの一例を示す図である。 ETLの定義画面の一例を示す図である。 結合処理対象のデータの一例を示す図である。 ETLの動作の一例を示す図である。 結果データの一例を示す図である。 ETLの動作の一例を示す図である。 結果データの一例を示す図である。 結合処理対象のデータの一例を示す図である。 ETLの動作の一例を示す図である。 仮想データの一例を示す図である。 結果データの一例を示す図である。 全体フロー制御部の動作を示すフローチャートである。 変換リストと入力ソースリストの一例を示す図である。 変換リストと入力ソースリストの一例を示す図である。 プロセス/スレッド制御部の動作を示すフローチャートである。 変換順序最適化処理の動作を示すフローチャートである。
以下、本実施の形態について図面を参照して説明する。なお各実施の形態は、矛盾のない範囲で複数の実施の形態を組み合わせて実施することができる。
〔第1の実施の形態〕
図1は、第1の実施の形態に係る情報処理装置の機能の一例を示す図である。情報処理装置1は、収集手段1aと、処理手段1bを備える。
収集手段1aは、複数の情報源からレコードデータを収集する。処理手段1bは、収集したレコードデータに対する処理を実行する際に、該処理についての定義情報を参照して、該処理が単一のレコードデータから結果データを生成可能である場合は、複数の情報源からの収集対象の全レコードデータの到着を待たずに該処理を開始する。
また、処理手段1bは、該処理が結果データを生成する際に、複数のレコードデータの参照を要し、かつ参照を要するレコードデータに未収集のレコードデータが存在する場合は、複数の情報源からの収集対象の全レコードデータの収集完了に応じて該処理を開始する。
図1の例において、収集手段1aは、レコードデータrd1、rd2、rd3を収集対象とし、処理手段1bは、定義情報にもとづいて、レコードデータrd1、rd2、rd3に対して所定処理を行うものとする。
ここで、状態St1は、該所定処理が単一のレコードデータから結果データを生成可能な場合を示している。この場合、処理手段1bは、例えば、レコードデータrd1が収集されれば、他のレコードデータrd2、rd3の到着を待たずに、該所定処理を実行する。
また、状態St2では、該所定処理が結果データを生成する際に、複数のレコードデータの参照を要し、かつ参照を要するレコードデータに未収集のレコードデータが存在する場合を示している。この場合、処理手段1bは、例えば、レコードデータrd1、rd2、rd3の参照を要し、かつレコードデータrd3が未収集ならば、全レコードデータrd1、rd2、rd3の収集が完了すると、該所定処理を実行する。
さらに、状態St3では、該所定処理において参照を要するレコードデータの収集が完了している場合を示している。この場合、処理手段1bは、例えば、参照を要するレコードデータrd1、rd2の収集が完了しているならば、全レコードデータrd1、rd2、rd3の到着を待たずに該所定処理を開始する。
このように、情報処理装置1では、データ処理内容が定義された定義情報を参照して、データ処理の一部の処理の実行可能なデータが収集されていれば、全データの収集を待たずに、該処理を先行して行うので、データ処理の開始時期を早めることができる。
〔第2の実施の形態〕
次に第2の実施の形態について説明する。第2の実施の形態では、レコードデータの一部の処理の実行可能なデータが収集されていれば、全レコードデータの収集を待たずに、該処理を先行して行うように、レコードデータの処理を複数に分けて実行するものである。なお、以降の説明では、レコードデータは単にデータと呼ぶ。
図2は、第2の実施の形態に係る情報処理装置の機能の一例を示す図である。情報処理装置1−1は、データ収集手段1A、データ変換処理手段1Bおよび管理手段1Cを備える。データ収集手段1Aは、図1の収集手段1aの機能を有し、データ変換処理手段1Bは、図1の処理手段1bの機能を有する。
データ収集手段1Aは、複数の情報源からデータを収集する。データ変換処理手段1Bは、収集されるデータに対し、データ変換処理の一部の個別処理の実行が可能なデータが収集されていれば、全データの収集を待たずに、個別処理を先行して行うように、データ変換処理を複数の個別処理に分割して実行する。管理手段1Cは、データ変換処理を行う際に要する項目が定義された定義情報を管理する。
図2の例において、データd1〜d3が収集されるものとし、データd1、d2、d3の順に早く収集されるものとする(データd1が最も早く、データd3が最も遅く収集される)。
この場合、従来のデータ変換処理機能200では、すべてのデータd1、d2、d3が収集済となることを待ってからデータ変換処理を行う。このため、最も遅いデータd3が収集済となるまで、データ変換処理を実行できない。
ここで、データ変換処理は、個別処理1B−1、1B−2に分けることができ、データd1、d2に対しては個別処理1B−1を実行可能であり、個別処理1B−1の結果とデータd3とで個別処理1B−2を実行可能であるとする。
このような場合、情報処理装置1−1のデータ変換処理手段1Bでは、データ変換処理を個別処理1B−1、1B−2に分割し、データd1、d2には個別処理1B−1を先行して実行し、個別処理1B−1の結果とデータd3とに対しては、後続の個別処理1B−2を実行する。
このように、情報処理装置1−1では、データ変換処理の一部の処理の実行可能なデータが収集されていれば、全データの収集を待たずに、該処理を先行して行うように、データ変換処理を複数に分けて実行する。これにより、データの変換処理の開始時期を早めることができる。
また、データ変換処理手段1Bは、管理手段1Cで管理される定義情報にもとづいて、収集したデータの中の項目の有無を判断し、項目を含むデータに対する個別処理を先行して行うように、個別処理の実行順序を適応的に変えてデータ変換処理を実行する。これにより、データ変換処理をより高速化することができる。
〔第3の実施の形態〕
次に第3の実施の形態について説明する。第3の実施の形態は、複数の連携先システムからジャーナルデータとマスタデータを収集し、収集したデータに対して、上述のようなデータ変換処理を行うものである。
ここで、データ変換処理は、従来では主に夜間バッチ業務において行われていたが、小売り店舗(コンビニエンスストアやスーパーマーケット)等のオンライン化に伴う連携先システムの増加により、近年では日中時間帯において複数回行われるようになってきている。
しかし、各連携先システムから収集するデータは、到着するタイミングがバラバラであり、変換対象のデータが完全に揃ってからデータ結合などの処理を行っていると、処理開始に時間を要してしまう。
このため、第3の実施の形態では、データの収集状況やデータの内容等に応じて、データ変換処理を複数に分割した個別処理の回数および個別処理の実行順番を動的に変更して、ETLのデータ変換処理を高速化する。
これにより、データ変換処理の開始時期が早まり、開始時期が早まることにより、出力結果を得られる時間も早まるので、処理効率の向上を図ることが可能になる。
図3は、第3の実施の形態のシステム構成例を示す図である。ETLシステム10−1は、サーバ10、連携先システム20−1〜20−n、連携先システム20aおよびクライアント装置30を備える。
サーバ10は、データベース10aを備えている。またサーバ10に対して、連携先システム20−1〜20−n、連携先システム20aおよびクライアント装置30が接続している。
サーバ10は、連携先システム20−1〜20−nからジャーナルデータおよびマスタデータを収集(PUSH)または抽出(PULL)する処理(E:Extract)を行う。
そして、サーバ10は、得られたジャーナルデータおよびマスタデータに対して、所定のデータ変換処理(T:Transform)を行い、処理結果をデータベース10aに格納し、連携先システム20aに配布する処理(L:Load)を行う。また、データベース10aに格納されたデータは、クライアント装置30に送られて、ユーザによってデータ活用される。
図4は、第3の実施の形態に用いるサーバのハードウェアの一構成例を示す図である。サーバ10は、プロセッサ101によって装置全体が制御されている。プロセッサ101には、バス109を介してメモリ102と複数の周辺機器が接続されている。プロセッサ101は、マルチプロセッサであってもよい。プロセッサ101は、例えばCPU(Central Processing Unit)、MPU(Micro Processing Unit)、またはDSP(Digital Signal Processor)である。プロセッサ101の機能の少なくとも一部を、ASIC(Application Specific Integrated Circuit)、PLD(Programmable Logic Device)などの電子回路で実現してもよい。
メモリ102は、サーバ10の主記憶装置として使用される。メモリ102には、プロセッサ101に実行させるOS(Operating System)のプログラムやアプリケーションプログラムの少なくとも一部が一時的に格納される。また、メモリ102には、プロセッサ101による処理に必要な各種データが格納される。メモリ102としては、例えばRAM(Random Access Memory)などの揮発性の半導体記憶装置が使用される。
バス109に接続されている周辺機器としては、HDD(Hard Disk Drive)103、グラフィック処理装置104、入力インタフェース105、光学ドライブ装置106、機器接続インタフェース107およびネットワークインタフェース108がある。
HDD103は、内蔵したディスクに対して、磁気的にデータの書き込みおよび読み出しを行う。HDD103は、サーバ10の補助記憶装置として使用される。HDD103には、OSのプログラム、アプリケーションプログラム、および各種データが格納される。なお補助記憶装置としては、フラッシュメモリなどの不揮発性の半導体記憶装置を使用することもできる。
グラフィック処理装置104には、モニタ201が接続されている。グラフィック処理装置104は、プロセッサ101からの命令に従って、画像をモニタ201の画面に表示させる。モニタ201としては、CRT(Cathode Ray Tube)を用いた表示装置や液晶表示装置などがある。
入力インタフェース105には、キーボード202とマウス203とが接続されている。入力インタフェース105は、キーボード202やマウス203から送られてくる信号をプロセッサ101に送信する。なおマウス203はポインティングデバイスの一例であり、他のポインティングデバイスを使用することもできる。他のポインティングデバイスとしては、タッチパネル、タブレット、タッチパッド、トラックボールなどがある。
光学ドライブ装置106は、レーザ光などを利用して、光ディスク204に記録されたデータの読み取りを行う。光ディスク204は、光の反射によって読み取り可能なようにデータが記録された可搬型の記録媒体である。光ディスク204には、DVD(Digital Versatile Disc)、DVD−RAM、CD−ROM(Compact Disc Read Only Memory)、CD−R(Recordable)/RW(Re Writable)などがある。
機器接続インタフェース107は、サーバ10に周辺機器を接続するための通信インタフェースである。例えば機器接続インタフェース107には、メモリ装置205やメモリリーダライタ206を接続することができる。メモリ装置205は、機器接続インタフェース107との通信機能を搭載した記録媒体である。メモリリーダライタ206は、メモリカード207へのデータの書き込み、またはメモリカード207からのデータの読み出しを行う装置である。メモリカード207は、カード型の記録媒体である。
ネットワークインタフェース108は、ネットワーク110に接続されている。ネットワークインタフェース108は、ネットワーク110を介して、他のコンピュータまたは通信機器との間でデータの送受信を行う。
以上のようなハードウェア構成によって、第3の実施の形態の処理機能を実現することができる。なお、第1、第2の実施の形態に示した装置も、図4に示したサーバ10と同様のハードウェアにより実現することができる。
サーバ10は、例えばコンピュータ読み取り可能な記録媒体に記録されたプログラムを実行することにより、第2の実施の形態の処理機能を実現する。サーバ10に実行させる処理内容を記述したプログラムは、様々な記録媒体に記録しておくことができる。例えば、サーバ10に実行させるプログラムをHDD103に格納しておくことができる。プロセッサ101は、HDD103内のプログラムの少なくとも一部をメモリ102にロードし、プログラムを実行する。またサーバ10に実行させるプログラムを、光ディスク204、メモリ装置205、メモリカード207などの可搬型記録媒体に記録しておくこともできる。可搬型記録媒体に格納されたプログラムは、例えばプロセッサ101からの制御により、HDD103にインストールされた後、実行可能となる。またプロセッサ101が、可搬型記録媒体から直接プログラムを読み出して実行することもできる。
図5は、第3の実施の形態に用いるサーバの機能の一例を示すブロック図である。ETLシステム10−2は、サーバ10、連携先システム20−1〜20−3、連携先システム20a、20bおよびクライアント装置30を備える。またサーバ10に対して、連携先システム20−1〜20−3、連携先システム20a、20bおよびクライアント装置30が接続している。連携先システム20−1〜20−3、20a、20bはそれぞれ、データベース21〜25を備えている。
サーバ10は、データ収集処理部11、データ変換処理部12、データ配布処理部13、定義管理部14、全体フロー制御部15およびプロセス/スレッド制御部16を備える。
また、データ変換処理部12は、データ結合処理部12aと、データ加工処理部12bを含む。なお、各ブロックは、個々の機能を実現するためのハードウェア回路(circuit)で構成することも可能である。
データ収集処理部11は、連携先システム20−1〜20−3のデータベース21〜23で格納されているデータ(またはファイル)を収集する。
データ結合処理部12aは、データ収集処理部11で収集された(収集途中、収集済のいずれであってもよい)複数のデータのデータ結合処理を行う。
また、データ変換処理として、データ結合処理のみを行う場合には、データ結合処理部12aは、データ結合結果をデータ配布処理部13へ出力する。さらに、データ変換処理として、データ結合の後にデータ加工処理を行う場合には、データ結合処理部12aは、データ結合結果をデータ加工処理部12bへ出力する。
データ加工処理部12bは、データ結合処理部12aによってデータ結合されたデータに対して、所定の加工処理(演算、集計、ソートなど)を行う。
また、実行したデータ加工処理でデータ変換処理を完了する際は、データ加工処理部12bは、データ加工結果をデータ配布処理部13へ出力する。
または、データ加工処理後にさらにデータ結合処理を行う場合には、データ加工処理部12bは、データ加工結果をデータ結合処理部12aへ出力する。この場合、データ結合処理部12aは、データ加工処理部12bにより加工処理されたデータと、データ収集処理部11で収集された(収集途中、収集済のいずれであってもよい)データとのデータ結合処理を行う。
データ配布処理部13は、データ変換処理部12から出力されたデータ変換処理後のデータを内部のデータベースに格納し、連携先システム20a、20bに配布する。またはユーザの要求に応じてクライアント装置30へ送信する。
定義管理部14は、クライアント装置30から指示された定義でメタデータを生成して管理する(メタデータの具体例については図14、図17で後述する)。
全体フロー制御部15は、ETLの全体フローを制御する。例えば、フローの動的組み立て、またはデータの収集状況の監視、データ変換処理に用いるリストの作成、定義の解析などを行う。
プロセス/スレッド制御部16は、データ収集処理、データ変換処理およびデータ配布処理が行われる際のプロセス/スレッドを制御する。例えば、プロセス/スレッド処理の割り込み、データ結合処理の複数回実行の有無および回数の設定、データ加工処理の実行順序の変更などの設定制御を動的に行う。
次にサーバ10におけるETLの動作について詳しく説明する。なお以降の説明では、1つのジャーナルデータと、2つのマスタデータとの入力ソースがあるものとする。まず、データ加工処理は行わず、複数回に分割したデータ結合処理のみで結果データを出力する場合の動作について説明する。
図6は、ETLの定義画面の一例を示す図である。クライアント装置30の画面31aは、1つのジャーナルデータと、2つのマスタデータとのデータ結合処理を定義するGUI(Graphical User Interface)を示している。
アイコンi1−1は、ジャーナルデータを表し、アイコンi1−2、i1−3それぞれは、マスタデータを表している。アイコンi2は、データ結合処理を表し、アイコンi5は、データロード(格納、配布)処理を表している。
図7は、結合処理対象のデータの一例を示す図である。ジャーナルデータj1は、「商品コード」、「注文数」および「店舗」の項目を有している。図7の例では、ジャーナルデータj1は、(商品コード、注文数、店舗)=(A0001、20、東京)、(A0002、4、大阪)、(B1001、8、大阪)、(B1002、5、大阪)の情報を含む。
また、マスタデータm1、m2は、「商品コード」、「商品名」および「値段」の項目を有している。図7の例では、マスタデータm1は、(商品コード、商品名、値段)=(A0001、牛乳、200)、(A0002、コーヒー、120)、(A0003、ジュース、120)の情報を含む。さらに、マスタデータm2は、(商品コード、商品名、値段)=(B1001、パン、80)、(B1002、弁当、400)、(B1003、ラーメン、500)の情報を含む。
図8は、ETLの動作の一例を示す図である。結合対象のデータに含まれる商品コードをキーにして、データ結合処理後のデータから商品名を取得する例を示している。
〔ステップS1〕データ収集処理部11は、収集すべきデータの到着状況を認識する。図8の例では、データ収集処理部11は、ジャーナルデータj1は収集中、マスタデータm1は未到着、マスタデータm2は収集済と認識する。
〔ステップS2〕プロセス/スレッド制御部16は、未到着のデータが存在すれば、データ結合処理を複数回に分割設定して、データ結合処理部12aに指示する。この例では、3つのデータの内、1つのマスタデータm1が未到着になっており、ジャーナルデータj1とマスタデータm2とでデータ結合を先行して実施できるので、プロセス/スレッド制御部16は、データ結合処理を2回に分ける。
〔ステップS3〕データ結合処理部12aは、1回目のデータ結合処理として、収集済のデータと、収集中のデータとを結合対象データにして結合処理を行う。結合した結果は、仮想データ(中間データ)として内部メモリに保存する。
なお、データ結合処理部12aは、収集中のデータに関しては、パイプライン処理によるデータ読み込みを行う。収集中のデータをパイプライン処理によって読み込みながら、収集済のデータと読み込んだ先からデータ結合していくことで、データ結合処理の高速化が図られる。
図8の例では、データ結合処理部12aは、収集中のジャーナルデータj1をパイプライン処理によって読み込みながら、収集済のマスタデータm2と結合して仮想データv1を生成し、仮想データv1を内部メモリに保存する。
図9は、仮想データの一例を示す図である。仮想データv1は、「商品コード」、「商品名」および「注文数」の項目を有する。仮想データv1は、データ変換処理の途中のデータであり、図9の例では、仮想データv1は、(商品コード、商品名、注文数)=(A0001、−、20)、(A0002、−、4)、(B1001、パン、8)、(B1002、弁当、5)の情報を含んでいる。なお、“−”が示す空き部分は、マスタデータm1が未到着のため、該当する項目の情報が未取得であることを表している。
〔ステップS4〕データ結合処理部12aは、パイプライン処理によって読み込まれる一方のデータと、他方のデータとのデータ結合が行われて、結合結果(仮想データ)の出力が完了するまで、または未到着のデータが収集済になるまで、データ結合処理を待ち合わせる。図8の例では、データ結合処理部12aは、仮想データv1の出力が完了するか、またはマスタデータm1が収集済になるまで、データ結合処理を待機することになる。
〔ステップS5〕データ結合処理部12aは、仮想データの出力状況と、仮想データに結合すべき他データの収集状況とに応じて、パイプライン処理によるデータ読み込みを行う対象データを変更して、仮想データと、他データとの2回目のデータ結合処理を行う。
図8の例では、データ結合処理部12aは、仮想データv1の出力状況と、マスタデータm1の収集状況とに応じて、パイプライン処理によるデータ読み込みを行う対象データを変更して、仮想データv1と、マスタデータm1とのデータ結合処理を行う。
具体的には、仮想データv1の出力が完了し、かつマスタデータm1が収集中の場合は、データ結合処理部12aは、マスタデータm1に対してパイプライン処理によるデータ読み込みを行って、仮想データv1とマスタデータm1とを結合する。
または、仮想データv1が出力中であり、かつマスタデータm1が収集済になった場合は、データ結合処理部12aは、収集中のジャーナルデータj1に対してパイプライン処理によるデータ読み込みを行って、仮想データv1とマスタデータm1とを結合する。
〔ステップS6〕データ配布処理部13は、データ結合処理部12aから出力された結果データr1−1を配布処理する。
図10は、結果データの一例を示す図である。結果データr1−1は、「商品コード」、「商品名」および「注文数」の項目を有する。結果データr1−1は、データ変換処理完了後のデータであり、図10の例では、(商品コード、商品名、注文数)=(A0001、牛乳、20)、(A0002、コーヒー、4)、(B1001、パン、8)、(B1002、弁当、5)の情報が含まれている。
ここで、従来では、ジャーナルデータj1、マスタデータm1、マスタデータm2がすべて収集し終わってから、1回のみのデータ結合処理を実施していた。これに対し、サーバ10では、データ結合処理を複数回に分け、前倒しで結合できるデータから結合処理していく。
すなわち、上記の例では、マスタデータm1が未到着の場合、サーバ10では、データ結合を2回に分け、1回目のデータ結合では、すでに到着している、ジャーナルデータj1とマスタデータm2を結合する。そして、2回目のデータ結合では、1回目のデータ結合の結果にマスタデータm1を結合する。
また、サーバ10では、一方のデータが収集済であれば、他方のデータが収集中であっても、収集中の他方のデータをパイプライン処理によって読み込みながら、収集済のデータと結合する。
このように、データの収集状況に合わせて、データ結合処理を複数回に分けることで、処理の開始を早くすることが可能になる。また、データの収集状況に応じて読み込み方法(パイプライン処理)を変更するので、データ結合処理全体の速度をより早めることが可能になる。
次に複数回に分割したデータ結合処理を完了した後に、データ加工処理を行って、結果データを出力する場合の動作について説明する。
図11は、ETLの定義画面の一例を示す図である。クライアント装置30の画面31bは、1つのジャーナルデータと、2つのマスタデータとのデータ結合処理と、データ結合処理後のデータ加工処理(演算および集計)とを定義するためのGUIを示している。
図6で上述した画面に対してアイコンi3、i4がさらに追加されている。アイコンi3は、データ加工処理としての演算処理を表し、アイコンi5は、データ加工処理としての集計処理を表している。その他のアイコン表記は図6と同じである。
図12は、結合処理対象のデータの一例を示す図である。ジャーナルデータj1−1は、「商品コード」、「注文数」および「値段」の項目を有している。図12の例では、ジャーナルデータj1−1は、(商品コード、注文数、値段)=(A0001、20、200)、(A0002、4、120)、(B1001、8、80)、(B1002、5、400)の情報を含む。
また、マスタデータm1−1、m2−1は、「商品コード」、「商品名」および「店舗」の項目を有している。図12の例では、マスタデータm1−1は、(商品コード、商品名、店舗)=(A0001、牛乳、東京)、(A0002、コーヒー、大阪)、(A1003、ジュース、大阪)の情報を含む。さらに、マスタデータm2−1は、(商品コード、商品名、店舗)=(B0001、パン、大阪)、(B0002、弁当、大阪)、(B1003、ラーメン、東京)の情報を含む。
図13は、ETLの動作の一例を示す図である。商品コードをキーに商品名、店舗を取得し、合計額と店舗毎の集計を出力する例を示している。
〔ステップS11〕データ収集処理部11は、データ収集を行い、ジャーナルデータj1−1は収集中、マスタデータm1−1は未到着、マスタデータm2−1は収集済と認識する。
〔ステップS12〕プロセス/スレッド制御部16は、3つのデータの内、マスタデータm1−1が未到着なので、ジャーナルデータj1−1とマスタデータm2−1とでデータ結合を先行して実施できるように、データ結合処理を2回に分けることをデータ結合処理部12aに指示する。
〔ステップS13〕データ結合処理部12aは、収集済のマスタデータm2−1と、収集中のジャーナルデータj1−1とのデータ結合処理を行い、仮想データv2−1を生成する。なお、収集中のジャーナルデータj1−1は、パイプライン処理によって読み込まれてデータ結合される。
〔ステップS14〕データ結合処理部12aは、仮想データv2−1の出力が完了するか、マスタデータm1−1が収集済になるまで処理を待ち合わせる。
〔ステップS15〕データ結合処理部12aは、仮想データv2−1の出力が完了し、かつマスタデータm1−1が収集中の場合は、データ結合処理部12aは、マスタデータm1−1に対してパイプライン処理によるデータ読み込みを行って、仮想データv2−1とマスタデータm1−1とを結合する。
または、仮想データv2−1が出力中であり、かつマスタデータm1−1が収集済になった場合は、データ結合処理部12aは、収集中のジャーナルデータj1−1に対してパイプライン処理によるデータ読み込みを行って、仮想データv2−1とマスタデータm1−1とを結合する。
〔ステップS16〕データ加工処理部12bは、データ結合処理部12aによって2回目にデータ結合された結果である仮想データv2−2を受信し、演算処理として、仮想データv2−2に対して合計額の算出を行う。
〔ステップS17〕データ加工処理部12bは、仮想データv2−2に演算処理を行った結果に対して、さらに集計処理として、店舗毎の集計を行う。
〔ステップS18〕データ配布処理部13は、データ加工処理部12bから出力された結果データr1−2を配布処理する。
図14は、結果データの一例を示す図である。結果データr1−2は、「商品コード」、「商品名」、「注文数」、「値段」、「合計額」、「店舗」および「集計」の項目を有する。
結果データr1−2は、図14の例では、(商品コード、商品名、注文数、値段、合計額、店舗)=(A0001、牛乳、20、200、4000、東京)、(A0002、コーヒー、4、120、480、大阪)、(B1001、パン、8、80、640、大阪)、(B1002、弁当、5、400、2000、大阪)の情報が含まれている。また、(店舗、集計)=(東京、4000)、(大阪、3120)となって、店舗毎の集計金額が含まれている。
次にデータ結合処理を複数回に分割し、さらにデータ加工処理を行う際に、定義されたメタデータの内容にもとづき、データ加工処理の実行順番を動的に変更する場合の動作について説明する。まず、メタデータの内容にもとづいて、実行すべきデータ加工処理が、すべてのデータ結合処理を完了した後に行われる場合について説明する。
図15は、ETLの動作の一例を示す図である。データ結合した後、合計額でソートする例を示している。なお、入力ソースは、図7と同じ、ジャーナルデータj1、マスタデータm1、m2とする。
〔ステップS21〕データ収集処理部11は、収集すべきデータの到着状況を認識する。図15の例では、データ収集処理部11は、ジャーナルデータj1は収集中、マスタデータm1は未到着、マスタデータm2は収集済と認識する。
〔ステップS22〕プロセス/スレッド制御部16は、未到着のデータが存在すれば、データ結合処理を複数回に分割設定し、データ結合処理の回数をデータ結合処理部12aに指示する。
図15の例では、3つのデータの内、1つのマスタデータm1が未到着なため、ジャーナルデータj1とマスタデータm2とでデータ結合を先行して実施できるように、データ結合処理を2回に分けることをデータ結合処理部12aに指示する。
〔ステップS23〕プロセス/スレッド制御部16は、定義管理部14で管理されているメタデータを参照し、到着したデータに対して、実行すべきデータ加工処理(演算、集計、ソート等)があるか否かを判断する。
プロセス/スレッド制御部16は、実行すべきデータ加工処理がある場合には、そのデータ加工処理を、複数回に分割したデータ結合処理の途中で実行できるか否かを、メタデータの内容にもとづき判断する。
プロセス/スレッド制御部16は、複数回のデータ結合処理の途中でデータ加工処理を実行可能と判断した場合、複数回のデータ結合処理の途中に該データ加工処理を挿入することを設定する。この場合、データ加工処理を実行するための情報が揃うデータ結合処理後に、該データ加工処理が実行されるように挿入する。
また、プロセス/スレッド制御部16は、複数回のデータ結合処理の途中でのデータ加工処理を実行不可と判断した場合は、データ結合処理がすべて終了した後に、該データ加工処理を実行するように設定する。
ステップS23について図15の例で説明すると、定義管理部14には、「ソート」を定義するメタデータmd0が管理されている。
プロセス/スレッド制御部16は、定義管理部14によって管理されているメタデータmd0を参照して、データ変換処理として「ソート」を実行することを認識する。また、メタデータmd0は、合計額による「ソート」を定義している。
このため、プロセス/スレッド制御部16は、合計額でのソートは、すべてのデータが揃わないと実行できないことを認識して、ジャーナルデータj1、マスタデータm1、m2のデータ結合処理の後で、データ加工処理(ソート)を実行することを認識する。
〔ステップS24〕データ結合処理部12aは、収集済のマスタデータm2と、収集中のジャーナルデータj1とのデータ結合処理を行い、仮想データv1−1を生成する。なお、ジャーナルデータj1は、パイプライン処理によって読み込まれてデータ結合される。
〔ステップS25〕データ結合処理部12aは、仮想データv1−1の出力が完了するか、マスタデータm1が収集済になるまで処理を待ち合わせる。
〔ステップS26〕データ結合処理部12aは、仮想データv1−1が出力完了し、かつマスタデータm1が収集中の場合は、データ結合処理部12aは、マスタデータm1に対してパイプライン処理によるデータ読み込みを行って、仮想データv1−1とマスタデータm1とを結合する。
または、仮想データv1−1が出力中であり、かつマスタデータm1が収集済になった場合は、データ結合処理部12aは、収集中のジャーナルデータj1に対してパイプライン処理によるデータ読み込みを行って、仮想データv1−1とマスタデータm1とを結合する。
〔ステップS27〕データ加工処理部12bは、データ結合処理部12aによって2回目にデータ結合された結果である仮想データv1−2を受信し、演算処理として、合計額によるソートを行う。
〔ステップS28〕データ配布処理部13は、データ加工処理部12bから出力された結果データr2−1を配布処理する。
図16は、結果データの一例を示す図である。結果データr2−1は、「商品コード」、「商品名」、「注文数」および「合計額」の項目を有する。図16の例では、結果データr2−1は、(商品コード、商品名、注文数、合計額)=(A0002、コーヒー、4、480)、(B1001、パン、8、640)、(B1002、弁当、5、2000)、(A0001、牛乳、20、4000)の情報が含まれ、合計額順にソートされている。
次に、メタデータの内容にもとづき、実行すべきデータ加工処理を、データ結合処理の途中で実行する場合について説明する。
図17は、結合処理対象のデータの一例を示す図である。ジャーナルデータj1−2は、「商品コード」と「注文数」の項目を有している。図17の例では、ジャーナルデータj1−2は、(商品コード、注文数)=(A0001、8)、(A0002、4)、(A0004、12)の情報を含む。
また、マスタデータm1−2は、「商品コード」、「配送日」および「出荷店」の項目を有している。図17の例では、マスタデータm1−2は、(商品コード、配送日、出荷店)=(A0001、04/01、大阪)、(A0002、04/03、東京)、(A0003、04/01、大阪)、(A0004、04/01、大阪)の情報を含む。
さらに、マスタデータm2−2は、(商品コード、商品名、値段)=(A0001、牛乳、200)、(A0002、コーヒー、150)、(A0003、パン、200)、(A0004、弁当、400)の情報を含む。
図18は、ETLの動作の一例を示す図である。商品コードをキーに商品名、出荷店を取得し、合計額と出荷店毎の集計を出力する例を示している。
〔ステップS31〕データ収集処理部11は、収集すべきデータの到着状況を認識する。図18の例では、データ収集処理部11は、ジャーナルデータj1−2は収集中、マスタデータm1−2は未到着、マスタデータm2−2は収集済と認識する。
〔ステップS32〕プロセス/スレッド制御部16は、未到着のデータが存在すれば、データ結合処理を複数回に分割設定する。図18の例では、3つのデータの内、1つのマスタデータm1−2が未到着なため、ジャーナルデータj1−2とマスタデータm2−2とでデータ結合を先行して実施できるように、データ結合処理を2回に分けることをデータ結合処理部12aに指示する。
〔ステップS33〕プロセス/スレッド制御部16は、定義管理部14で管理されているメタデータを参照し、収集したデータに対して、実行すべきデータ加工処理(演算、集計、ソート等)があるか否かを判断する。
プロセス/スレッド制御部16は、実行すべきデータ加工処理がある場合には、そのデータ加工処理を、複数回に分割したデータ結合処理の途中で実行できるか否かを、メタデータの内容にもとづき判断する。
プロセス/スレッド制御部16は、複数回のデータ結合処理の途中でデータ加工処理を実行可能と判断した場合、複数回のデータ結合処理の途中に該データ加工処理を挿入することを設定する。この場合、データ加工処理を実行するための情報が揃うデータ結合処理後に、該データ変換処理が実行されるように挿入することになる。
また、プロセス/スレッド制御部16は、複数回のデータ結合処理の途中でのデータ加工処理を実行不可と判断した場合は、データ結合処理がすべて終了した後に、該データ加工処理を実行するように設定する。
ステップS33について図18の例で説明すると、定義管理部14には、「演算」を定義するメタデータmd1と、「集計」を定義するメタデータmd2が管理されている。
プロセス/スレッド制御部16は、定義管理部14によって管理されているメタデータmd1、md2を参照して、データ加工処理として「演算」および「集計」を実行することを認識する。
また、メタデータmd1は、注文数と値段を乗算した合計額($合計額=$注文数×$値段)を「演算」と定義している。メタデータmd2は、出荷店、合計額から求める集計キー(集計キー=$出荷店、合計額)を「集計」と定義している。
ここで、メタデータmd1から“合計額”を算出するのに要する項目は、“注文数”と“値段”であることがわかる。この場合、プロセス/スレッド制御部16は、収集中のジャーナルデータj1−2には“注文数”の項目が存在し、収集済のマスタデータm2−2には“値段”の項目が存在することを認識する。
このため、プロセス/スレッド制御部16は、マスタデータm1−2の到着を待たずに、ジャーナルデータj1−2と、マスタデータm2−2との1回目のデータ結合処理の後で、データ加工処理(演算)を実行可能であることを認識する。
一方、メタデータmd2から“集計キー”を算出するのに要する項目は、“出荷店”と“合計額”であることがわかる。この場合、プロセス/スレッド制御部16は、“出荷店”の項目はマスタデータm1−2に存在するが、マスタデータm1−2は未到着であることを認識する。
このため、プロセス/スレッド制御部16は、マスタデータm1−2の到着を待ってデータ変換処理(集計)を行うこと、すなわち、マスタデータm1−2の到着後に行われる2回目のデータ結合処理の後に、データ加工処理(集計)を実行することを認識する。
〔ステップS34〕データ結合処理部12aは、1回目のデータ結合処理として、収集済のマスタデータm2−2と、収集中のジャーナルデータj1−2との結合処理を行う。
なお、データ結合処理部12aは、収集中のジャーナルデータj1−2に関しては、パイプライン処理によるデータ読み込みを行い、読み込んだ順からマスタデータm2−2と結合する。
〔ステップS35〕データ加工処理部12bは、1回目のデータ結合処理で得られる結果に対して、メタデータmd1で定義される演算の処理を実行して、仮想データv3を生成し、内部メモリに格納する。
図19は、仮想データの一例を示す図である。仮想データv3は、「商品コード」、「商品名」、「注文数」、「値段」、「合計額」、「配送日」および「出荷店」の項目を有する。
仮想データv3は、データ変換処理の途中のデータであり、図19の例では、(商品コード、商品名、注文数、値段、合計額、配送日、出荷店)=(A0001、牛乳、8、200、1600、−、−)、(A0002、コーヒー、4、150、600、−、−)、(A0004、弁当、12、400、4800、−、−)の情報が含まれている。なお、“−”が示す空き部分は、マスタデータm1−2が未到着のため、該当する項目の情報が未取得であることを表している。
〔ステップS36〕データ結合処理部12aは、仮想データv3の出力が完了するか、マスタデータm1−2が収集済になるまで2回目のデータ結合処理を待ち合わせる。
〔ステップS37〕データ結合処理部12aは、仮想データv3の出力状況と、マスタデータm1−2の収集状況とに応じて、パイプライン処理によるデータ読み込みを行う対象データを変更して、2回目のデータ結合処理として、仮想データv3と、マスタデータm1−2との結合を行う。
具体的には、仮想データv3が出力完了し、かつマスタデータm1−2が収集中の場合は、データ結合処理部12aは、マスタデータm1−2に対してパイプライン処理によるデータ読み込みを行って、仮想データv3とマスタデータm1−2とを結合する。
または、仮想データv3が出力中であり、かつマスタデータm1−2が収集済の場合は、データ結合処理部12aは、収集中のジャーナルデータj1−2に対してパイプライン処理によるデータ読み込みを行って、仮想データv3とマスタデータm1−2とを結合する。
〔ステップS38〕データ加工処理部12bは、2回目のデータ結合処理で得られる結果データに対して、メタデータmd2で定義される集計の処理を実行して結果データを生成する。
〔ステップS39〕データ配布処理部13は、データ加工処理部12bから出力された結果データr2−2を配布処理する。
図20は、結果データの一例を示す図である。結果データr2−2は、「商品コード」、「商品名」、「注文数」、「値段」、「合計額」、「配送日」、「出荷店」および「集計」の項目を有する。
結果データr2−2は、図20の例では、(商品コード、商品名、注文数、値段、合計額、配送日、出荷店)=(A0002、コーヒー、4、150、600、04/03、東京)、(A0001、牛乳、8、200、1600、04/01、大阪)、(A0004、弁当、12、400、4800、04/01、大阪)の情報が含まれている。また、(出荷店、集計)=(東京、600)、(大阪、6400)となって、店舗毎の集計金額が含まれている。
以上説明したように、サーバ10では、メタデータの定義にもとづいて、収集したデータの中の項目の有無を判断し、項目を含むデータに対する個別処理を先行して行うように、個別処理の実行順序を変えてデータ変換処理を実行する。これにより、データ変換処理の開始時期を早め、さらにデータ変換処理全体の処理速度を向上させることが可能になる。
次に全体フロー制御部15において、処理開始からプロセス/スレッド制御部16を起動するまでの動作についてフローチャートを用いて説明する。
図21は、全体フロー制御部の動作を示すフローチャートである。なお、全体フロー制御部15の処理開始の契機は多様なパターンがあり、例えば、データを受信したタイミングで処理を開始、または、ある時刻になったら処理を開始するなどがある。さらには、外部からの実行指示により処理を開始してもよい。
〔ステップS41〕全体フロー制御部15は、定義管理部14から、データ結合対象のデータに関するメタデータを取得する。
〔ステップS42〕全体フロー制御部15は、取得したメタデータの内容にもとづき、変換種別(結合/演算/集計/・・・)を認識し、変換リスト(図22、図23で後述)を作成する。なお、全体フロー制御部15では、変換リストの作成時に、変換リストに登録される情報から、その情報に該当する変換リストの項目を検索可能とする逆引き情報を作成しておいてもよい。
〔ステップS43〕全体フロー制御部15は、データの入力状態の認識用に、入力ソースリストを作成する(図22、図23で後述)。
〔ステップS44〕全体フロー制御部15は、プロセス/スレッド制御部16を起動する。
図22、図23は、変換リストと入力ソースリストの一例を示す図である。変換リストL1は、「順番」、「変換種別」、「フラグ」および「ソース情報」の項目を有する。
「順番」は、処理の実行順番を示す。「変換種別」は、例えば、“結合”、“演算”、“集計”などの変換処理を示す。「フラグ」は、該当欄の変換処理が未処理なら“OFF”、処理済なら“ON”を示す。「ソース情報」は、該当欄の変換処理で使用されるデータの種類を示す。
入力ソースリストL2は、「ソース」と「状態」の項目を有する。「ソース」は、データの種類を示し、「状態」は、データの収集状態または処理状態を示す。
状態St11において、入力ソースリストL2には、ジャーナルデータJ1およびマスタデータM1、M2の「状態」が“未到着”であることが示されている。また、変換リストL1では、“結合”、“演算”、“集計”の順にデータ変換処理を行うことが示されている。
“結合”のデータ変換処理では、ジャーナルデータJ1およびマスタデータM1、M2を使用すること、“演算”のデータ変換処理では、ジャーナルデータJ1と、マスタデータM2とを使用することが示されている。さらに、“集計”のデータ変換処理では、変換種別(演算)の結果を使用することが示されている。さらにまた、「フラグ」はすべて“OFF”になっている。
ここで、状態St11で、いくつかの入力データが到着し、データ結合処理を2回行うことが決定されて、状態St12に移行するものとする。
状態St12において、入力ソースリストL2には、ジャーナルデータJ1の「状態」は“収集中”、マスタデータM1の「状態」は“未到着”、マスタデータM2の「状態」は“収集済”となっている。
また、変換リストL1では、“結合(1回目)”、“演算”、“結合(2回目)”および“集計”というように変換種別に変更が生じ、“結合(1回目)”、“演算”、“結合(2回目)”、“集計”の実行順にデータ変換処理を行うことが示されている。
“結合(1回目)”のデータ変換処理では、ジャーナルデータJ1と、マスタデータM2とを使用する。また、“結合(1回目)”の処理は終了しているため、該当の「フラグ」は“ON”になっている。
“演算”のデータ変換処理では、ジャーナルデータJ1と、マスタデータM2とを使用する。また、“演算”の処理は終了しているため、該当の「フラグ」は“ON”になっている。
“結合(2回目)”のデータ変換処理では、変換種別(演算)の結果と、マスタデータM1とを使用する。“結合(2回目)”の処理は終了していないため、該当の「フラグ」は“OFF”になっている。
なお、“結合(2回目)”の処理が終了していないので、入力ソースリストL2中の仮想データVの「状態」は、“処理中”になっている(2回目のデータ結合処理が完了すれば、“処理完了”に変更される)。
“集計”のデータ変換処理では、変換種別(結合(2回目))の結果を使用する。“集計”の処理は終了していないため、該当の「フラグ」は“OFF”になっている。
次にプロセス/スレッド制御部16の動作についてフローチャートを用いて説明する。図24は、プロセス/スレッド制御部の動作を示すフローチャートである。
〔ステップS51〕プロセス/スレッド制御部16は、入力ソースリストL2を参照して、入力データの有無を認識する。入力データが有れば、処理がステップS52へ進められ、入力データが無ければステップS51の判断処理が繰り返される。
〔ステップS52〕プロセス/スレッド制御部16は、入力データの数を認識する。入力データ数が2以下の場合は、処理がステップS58へ進められ、入力データ数が3以上の場合は、処理がステップS53へ進められる。
〔ステップS53〕プロセス/スレッド制御部16は、未到着データの有無を認識する。未到着データが有れば、処理がステップS54へ進められ、無ければステップS58へ進められる。
〔ステップS54〕プロセス/スレッド制御部16は、変換リストL1の編集を行う。例えば、プロセス/スレッド制御部16は、入力データ数に応じて設定されるデータ結合処理の実行回数で、変換リストL1の変換種別(結合)の項目を分割する。
〔ステップS55〕プロセス/スレッド制御部16は、変換順序最適化処理を行う(図25で後述)。
〔ステップS56〕プロセス/スレッド制御部16は、入力ソースリストの編集を行う。例えば、プロセス/スレッド制御部16は、仮想データに関する情報を入力ソースリストに追加する。
〔ステップS57〕プロセス/スレッド制御部16は、残データ到着待ち用のプロセス/スレッド制御を起動する。
〔ステップS58〕プロセス/スレッド制御部16は、データ結合処理部12aとデータ加工処理部12bを呼び出す。
〔ステップS59〕プロセス/スレッド制御部16は、全データを処理したか否かを判断する。全データが処理された場合は、処理がステップS60へ進められ、全データが処理されていない場合は、ステップS59の判断処理が繰り返される。
〔ステップS60〕プロセス/スレッド制御部16は、データ配布処理部13を呼び出す。
図25は、変換順序最適化処理の動作を示すフローチャートである。
〔ステップS55−1〕プロセス/スレッド制御部16は、変換リストL1から、未処理のデータ変換処理を抽出する。
〔ステップS55−2〕プロセス/スレッド制御部16は、未処理のデータ変換処理を行うのに要するデータが存在しているか(揃っているか)否かを認識する。データが存在している場合は、処理がステップS55−3へ進められ、存在していない場合は、ステップS55−2の判断処理が繰り返される。
〔ステップS55−3〕プロセス/スレッド制御部16は、データ変換処理の実行順番を入れ替える。
〔ステップS55−4〕プロセス/スレッド制御部16は、フラグをONする。
〔ステップS55−5〕プロセス/スレッド制御部16は、後続のデータ変換処理の存在の有無を認識する。後続のデータ変換処理が存在している場合は、処理がステップS55−2へ戻り、存在していない場合は、処理を終了する。
以上、実施の形態を例示したが、実施の形態で示した各部の構成は同様の機能を有する他のものに置換することができる。また、他の任意の構成物や工程が付加されてもよい。さらに、前述した実施の形態のうちの任意の2以上の構成(特徴)を組み合わせたものであってもよい。
1 情報処理装置
1a 収集手段
1b 処理手段
rd1、rd2、rd3 レコードデータ
St1、St2、St3 状態

Claims (9)

  1. コンピュータに、
    複数の情報源からレコードデータを収集し、
    収集したレコードデータに対する処理を実行する際に、前記処理についての定義情報を参照して、前記処理が単一のレコードデータから結果データを生成可能である場合は、前記複数の情報源からの収集対象の全レコードデータの到着を待たずに前記処理を開始し、
    収集対象の全レコードデータのうちに参照を要するレコードデータが含まれ、前記参照を要するレコードデータにもとづいて前記処理としての変換処理が前記結果データを生成する際に、前記参照を要するレコードデータに未収集のレコードデータが存在する場合であっても、前記変換処理の一部の個別処理の実行を可能とするレコードデータが収集されている場合は、全レコードデータの収集を待たずに、前記個別処理を先行して行うように、前記変換処理を複数の個別処理に分割して実行し、
    前記定義情報にもとづいて、収集したレコードデータの中の項目により前記個別処理を実行できるか否かを判断し、前記項目により実行できると判断される前記個別処理を先行して行うように、前記個別処理の実行順序を変えて前記変換処理を実行する、
    ことを実行させる情報処理プログラム。
  2. 前記コンピュータに、前記処理において前記参照を要するレコードデータの収集が完了している場合は、前記複数の情報源からの収集対象の全レコードデータの到着を待たずに前記処理を開始することを実行させるための請求項1記載の情報処理プログラム。
  3. 前記コンピュータに、収集対象レコードデータの結合処理を行う場合、
    到着済みレコードデータに対して先行して結合処理を行って、仮想レコードデータを生成し、未到着であったレコードデータが到着した後に、当該レコードデータと前記仮想レコードデータとに対して後続の結合処理を行うことを実行させるための請求項1記載の情報処理プログラム。
  4. 前記到着済みレコードデータは、第1のレコードデータ、及び、第2のレコードデータであり、
    前記情報処理プログラムは、前記コンピュータに、前記第1のレコードデータが収集中で、前記第2のレコードデータが収集済の場合、前記第1のレコードデータをパイプライン処理で読み込み、前記パイプライン処理で読み込まれた部分から順に前記第2のレコードデータと結合処理することで、前記仮想レコードデータを生成して出力することを実行させるためのものである、請求項3記載の情報処理プログラム。
  5. 前記コンピュータに、前記仮想レコードデータの出力状況と、前記仮想レコードデータに結合すべき第3のレコードデータの収集状況とに応じて、前記パイプライン処理によるレコードデータ読み込みを行う対象レコードデータを変更して、前記仮想レコードデータと、前記第3のレコードデータとの結合処理を行うことを実行させるための請求項4記載の情報処理プログラム。
  6. 前記コンピュータに、
    前記仮想レコードデータの出力が完了し、かつ前記第3のレコードデータが収集中の場合は、前記第3のレコードデータに対して前記パイプライン処理によるレコードデータ読み込みを行って、前記仮想レコードデータと前記第3のレコードデータとを結合処理し、
    前記仮想レコードデータが出力中であり、かつ前記第3のレコードデータが収集済であり、かつ、前記第1のレコードデータが収集中である場合は、前記第1のレコードデータに対して前記パイプライン処理によるレコードデータ読み込みを行って、前記仮想レコードデータと前記第3のレコードデータとを結合処理することを実行させるための請求項5記載の情報処理プログラム。
  7. 前記コンピュータに、
    前記変換処理として、複数の結合処理と、加工処理とを行う際に、前記定義情報にもとづいて、
    収集したレコードデータに対して、実行すべき前記加工処理があるか否かを判断し、
    実行すべき前記加工処理がある場合には、該加工処理を、前記結合処理の途中で実行できるか否かを判断し、
    前記結合処理の途中での該加工処理を実行不可と判断した場合には、前記結合処理がすべて終了した後に、該加工処理を実行し、
    前記結合処理の途中で、該加工処理を実行可能と判断した場合には、前記結合処理の途中に該加工処理を挿入して実行することを実行させるための請求項1記載の情報処理プログラム。
  8. 複数の情報源からレコードデータを収集する収集手段と、
    収集したレコードデータに対する処理を実行する際に、前記処理についての定義情報を参照して、前記処理が単一のレコードデータから結果データを生成可能である場合は、前記複数の情報源からの収集対象の全レコードデータの到着を待たずに前記処理を開始し、収集対象の全レコードデータのうちに参照を要するレコードデータが含まれ、前記参照を要するレコードデータにもとづいて前記処理としての変換処理が前記結果データを生成する際に、前記参照を要するレコードデータに未収集のレコードデータが存在する場合であっても、前記変換処理の一部の個別処理の実行を可能とするレコードデータが収集されている場合は、全レコードデータの収集を待たずに、前記個別処理を先行して行うように、前記変換処理を複数の個別処理に分割して実行し、前記定義情報にもとづいて、収集したレコードデータの中の項目により前記個別処理を実行できるか否かを判断し、前記項目により実行できると判断される前記個別処理を先行して行うように、前記個別処理の実行順序を変えて前記変換処理を実行する処理手段と、
    を有する情報処理装置。
  9. 情報処理装置が、
    複数の情報源からレコードデータを収集し、
    収集したレコードデータに対する処理を実行する際に、前記処理についての定義情報を参照して、前記処理が単一のレコードデータから結果データを生成可能である場合は、前記複数の情報源からの収集対象の全レコードデータの到着を待たずに前記処理を開始し、
    収集対象の全レコードデータのうちに参照を要するレコードデータが含まれ、前記参照を要するレコードデータにもとづいて前記処理としての変換処理が前記結果データを生成する際に、前記参照を要するレコードデータに未収集のレコードデータが存在する場合であっても、前記変換処理の一部の個別処理の実行を可能とするレコードデータが収集されている場合は、全レコードデータの収集を待たずに、前記個別処理を先行して行うように、前記変換処理を複数の個別処理に分割して実行し、
    前記定義情報にもとづいて、収集したレコードデータの中の項目により前記個別処理を実行できるか否かを判断し、前記項目により実行できると判断される前記個別処理を先行して行うように、前記個別処理の実行順序を変えて前記変換処理を実行する、
    レコードデータ処理方法。
JP2015153178A 2015-08-03 2015-08-03 情報処理プログラム、情報処理装置およびレコードデータ処理方法 Active JP6708919B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015153178A JP6708919B2 (ja) 2015-08-03 2015-08-03 情報処理プログラム、情報処理装置およびレコードデータ処理方法
US15/218,419 US10445336B2 (en) 2015-08-03 2016-07-25 Apparatus and method to process pieces of collected data based on data arrival states

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015153178A JP6708919B2 (ja) 2015-08-03 2015-08-03 情報処理プログラム、情報処理装置およびレコードデータ処理方法

Publications (2)

Publication Number Publication Date
JP2017033330A JP2017033330A (ja) 2017-02-09
JP6708919B2 true JP6708919B2 (ja) 2020-06-10

Family

ID=57987116

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015153178A Active JP6708919B2 (ja) 2015-08-03 2015-08-03 情報処理プログラム、情報処理装置およびレコードデータ処理方法

Country Status (2)

Country Link
US (1) US10445336B2 (ja)
JP (1) JP6708919B2 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6646699B2 (ja) * 2018-03-09 2020-02-14 株式会社日立製作所 検索装置及び検索方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09251580A (ja) * 1996-03-15 1997-09-22 Toshiba Corp 販売データの加工処理方法
WO2006085315A2 (en) * 2005-02-08 2006-08-17 Amir Notea System and method for categorizing activities in computer-accessible environments
JP4255475B2 (ja) * 2006-01-04 2009-04-15 シャープ株式会社 データ駆動型情報処理装置
JP5033343B2 (ja) 2006-03-28 2012-09-26 株式会社野村総合研究所 ジョブ管理装置およびジョブ管理方法
JP5117355B2 (ja) * 2008-11-19 2013-01-16 株式会社日立製作所 データ集計処理方法及びシステム
US8782051B2 (en) * 2012-02-07 2014-07-15 South Eastern Publishers Inc. System and method for text categorization based on ontologies

Also Published As

Publication number Publication date
US20170039256A1 (en) 2017-02-09
JP2017033330A (ja) 2017-02-09
US10445336B2 (en) 2019-10-15

Similar Documents

Publication Publication Date Title
EP3503012A1 (en) Analytics engine for multiple blockchain nodes
US9959330B2 (en) Mechanism for updating OLAP system structure and OLTP system structure
US10635669B1 (en) Data engine integration and data refinement
JP2019520649A (ja) プロセス視覚化プラットフォーム
JP5600185B2 (ja) データベース内の大容量コレクションオブジェクトテーブルにアクセスするための方法
US10877971B2 (en) Logical queries in a distributed stream processing system
US9652203B1 (en) Application development framework using configurable data types
US10452757B2 (en) Persistent user personalization
EP2765510A1 (en) Data processing method, distributed processing system, and program
CA3089911A1 (en) Method and system for flexible pipeline generation
US9292405B2 (en) HANA based multiple scenario simulation enabling automated decision making for complex business processes
US20120124110A1 (en) Database, management server, and management program
US20130024438A1 (en) Database, business content data management server, and business content data management program
JP6708919B2 (ja) 情報処理プログラム、情報処理装置およびレコードデータ処理方法
US9720939B1 (en) Method and system for implementing categorically organized relationship effects
JP5096775B2 (ja) データ処理システム
JP7033609B2 (ja) プロセス定義およびプロセス実行トラッキングのためのユーザインターフェイスおよびランタイム環境
EP1933235A2 (en) Grid modeling tool
US20200089200A1 (en) Production management support apparatus and production management support method
JP2009134511A (ja) サイジング装置、サイジング方法、サイジング用プログラム及び記録媒体
JP2011203899A (ja) データ処理プログラム、データ処理装置およびデータ処理方法
CN111695749A (zh) 一种分组任务的生成方法和装置
JP2006251979A (ja) 可変項目検索システム
JP2011096154A (ja) 入力支援装置、入力支援方法及び入力支援プログラム
Gundarapu Industry 4.0: Data and Data Integration

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180413

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20190131

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190312

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190510

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20190510

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20190510

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20191112

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20191129

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: 20200421

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200504

R150 Certificate of patent or registration of utility model

Ref document number: 6708919

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150