JP7060797B2 - テーブル生成方法、テーブル生成装置およびテーブル生成プログラム - Google Patents

テーブル生成方法、テーブル生成装置およびテーブル生成プログラム Download PDF

Info

Publication number
JP7060797B2
JP7060797B2 JP2018101494A JP2018101494A JP7060797B2 JP 7060797 B2 JP7060797 B2 JP 7060797B2 JP 2018101494 A JP2018101494 A JP 2018101494A JP 2018101494 A JP2018101494 A JP 2018101494A JP 7060797 B2 JP7060797 B2 JP 7060797B2
Authority
JP
Japan
Prior art keywords
slot
column
input
target
allocation
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
JP2018101494A
Other languages
English (en)
Other versions
JP2019207469A (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 JP2018101494A priority Critical patent/JP7060797B2/ja
Priority to US16/411,956 priority patent/US11080258B2/en
Publication of JP2019207469A publication Critical patent/JP2019207469A/ja
Application granted granted Critical
Publication of JP7060797B2 publication Critical patent/JP7060797B2/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/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24553Query execution of query operations
    • G06F16/24558Binary matching operations
    • G06F16/2456Join operations
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/2282Tablespace storage structures; Management thereof
    • 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/21Design, administration or maintenance of databases
    • G06F16/211Schema design and management
    • G06F16/213Schema design and management with details for schema evolution support
    • 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/22Indexing; Data structures therefor; Storage structures
    • G06F16/221Column-oriented storage; Management thereof
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Stored Programmes (AREA)

Description

本発明はテーブル生成方法、テーブル生成装置およびテーブル生成プログラムに関する。
現在、種々の情報がデータベース(DB:Database)を用いて管理されている。例えば、データベースの構築に用いられるスクリプトを、データベース設計データから自動的に生成するスクリプト・ファイル生成装置の提案がある。この提案では、データベース設計データは、作成すべきデータベースのサイズ、データベースを構成するテーブルのテーブル名およびサイズ、テーブルに含まれる項目の項目名およびサイズを含む。スクリプト・ファイル生成装置は、データベース構築のためのスクリプト・ファイルのテンプレート・データを含むマクロの所定の位置に、データベース設計データに含まれるデータを記述することで、データベース構築のためのスクリプト・ファイルを生成する。
特開2003-345594号公報
あるテーブルから別のテーブルを生成する既存のスクリプトを、新たなテーブルの生成に再利用することが考えられる。例えば、情報処理装置が、ユーザによる新たなテーブルの列名の指定に応じて、既存のスクリプトを既存のテーブルに適用し、新たなテーブルを生成することが考えられる。すると、ユーザによるスクリプトの記述作業を省け、便利である。しかし、既存のスクリプトは、当初のテーブル生成で用いられた特定のテーブルの列構造に合わせた記述となっている。このため、既存のスクリプトに対して、当該特定のテーブル以外の既存のテーブルをそのまま入力として利用できないことが多く、既存のスクリプトの再利用可能性は低い。
1つの側面では、本発明は、既存のスクリプトの再利用を容易にするテーブル生成方法、テーブル生成装置およびテーブル生成プログラムを提供することを目的とする。
1つの態様では、テーブル生成方法が提供される。このテーブル生成方法では、コンピュータが、第1の入力テーブルから第1の出力テーブルを生成するスクリプトと、第1の入力テーブルに含まれる列と第1の出力テーブルに含まれる列との間の制約条件を示す制約モデルと、生成すべき目的テーブルに含まれる列の列構造を示す目的テーブル情報と、目的テーブルの生成に使用する元テーブルとを取得し、元テーブルの列構造を変換した第2の入力テーブルと、目的テーブル情報で示される、目的テーブルの列構造を変換した第2の出力テーブルとが制約条件を満たすように、元テーブルを第2の入力テーブルに変換すると共に、第2の出力テーブルに含まれる列と、目的テーブル情報で示される、目的テーブルの列構造に含まれる列との間の対応関係を示す割り当て情報を生成し、スクリプトと第2の入力テーブルとから第2の出力テーブルを生成し、割り当て情報に基づいて第2の出力テーブルを目的テーブルに変換する。
また、1つの態様では、テーブル生成装置が提供される。
また、1つの態様では、テーブル生成プログラムが提供される。
1つの側面では、既存のスクリプトの再利用を容易にする。
第1の実施の形態のテーブル生成装置を示す図である。 第2の実施の形態のテーブル生成装置のハードウェア例を示すブロック図である。 スクリプトと制約モデルとの関係を示す図である。 テーブル生成装置の機能例を示すブロック図である。 元テーブルの例を示す図である。 スクリプトの例を示す図である。 制約モデルの例を示す図である。 目的テーブル情報の例を示す図である。 テーブル生成の処理例を示すフローチャートである。 スロット割り当ての処理例を示すフローチャートである。 スロット割り当ての処理例(続き)を示すフローチャートである。 テーブル生成の具体例を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。 テーブル生成の具体例(続き)を示す図である。
以下、本実施の形態について図面を参照して説明する。
[第1の実施の形態]
第1の実施の形態を説明する。
図1は、第1の実施の形態のテーブル生成装置を示す図である。テーブル生成装置10は、既存のスクリプトを再利用して、既存のテーブルから新たなテーブル(目的テーブル)を生成する。
テーブル生成装置10は、記憶部11および処理部12を有する。記憶部11は、RAM(Random Access Memory)などの揮発性の半導体メモリでもよいし、HDD(Hard Disk Drive)やフラッシュメモリなどの不揮発性のストレージでもよい。処理部12は、例えば、CPU(Central Processing Unit)やDSP(Digital Signal Processor)などのプロセッサである。ただし、処理部12は、ASIC(Application Specific Integrated Circuit)やFPGA(Field Programmable Gate Array)などの特定用途の電子回路を含んでもよい。プロセッサは、RAMなどのメモリ(記憶部11でもよい)に記憶されたプログラムを実行する。複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うこともある。
記憶部11は、既存のスクリプト、既存のスクリプトの制約モデルおよび既存のテーブルを記憶する。既存のスクリプトは、スクリプト31を含む。スクリプト31は、第1の入力テーブルから第1の出力テーブルを生成するコマンドである。
例えば、スクリプト31は、「入力1」および「入力2」で示される2つの入力テーブルの結合演算により出力テーブルを生成するスクリプトを示す。ここで、列は、図中において、該当のテーブルの左端の列を1列目とし、右側へ順番に2列目、3列目、・・・と数えるものとする。スクリプト31は、「入力1」で示される1つ目の入力テーブルの1列目の属性(「入力2」で示される2つ目の入力テーブルの1列目の属性)を結合キーとして、両入力テーブルを結合することを示す。そして、スクリプト31は、結合結果から、1つ目の入力テーブルの1,2列目に相当する列と2つ目の入力テーブルの2列目に相当する列とをこの順に選択した出力テーブルを生成することを示す。ただし、スクリプトは、上記以外の演算(例えば、結合キーや選択対象の列を列名(属性名)により指定した結合演算など)によって入力テーブルから出力テーブルを生成するものでもよい。また、スクリプトは、1つの入力テーブルから1つの出力テーブルを生成するものでもよい。
制約モデル32は、スクリプト31に関して、第1の入力テーブルに含まれる列と第1の出力テーブルに含まれる列との制約条件を示す。ここで、1つの列を、1つの「スロット」と言い、スロットを識別する番号を「スロット番号」と言うこととする。すると、スクリプト31に関して、1つ目の入力テーブル、2つ目の入力テーブル、および、出力テーブルの各列をスロット番号によって区別できる。例えば、1つ目の入力テーブルの1列目はスロット番号「1」、同2列目はスロット番号「2」である。また、2つ目の入力テーブルの1列目はスロット番号「3」、同2列目はスロット番号「4」である。更に、出力テーブルの1列目はスロット番号「5」、同2列目はスロット番号「6」、同3列目はスロット番号「7」である。制約モデル32は、スロット番号で識別されるスロットに対応するノードと、ノード間を結ぶエッジとを含むグラフによって表される。エッジは、当該エッジで結ばれる2つのノードに対応する列名が同じであることを示す。
スクリプト31の例では、1つ目の入力テーブルの1列目の列名と、2つ目の入力テーブルの1列目の列名と、出力テーブルの1列目の列名とは同じである。このため、制約モデル32では、スロット番号「1」、「3」、「5」の3つのノードが相互にエッジで結ばれる。また、スクリプト31の例では、1つ目の入力テーブルの2列目の列名と、出力テーブルの2列目の列名とは同じである。このため、制約モデル32では、スロット番号「2」、「6」の2つのノードがエッジで結ばれる。更に、スクリプト31の例では、2つ目の入力テーブルの2列目の列名と、出力テーブルの3列目の列名とは同じである。このため、制約モデル32では、スロット番号「4」、「7」の2つのノードがエッジで結ばれる。
元テーブル41,42は、記憶部11に予め記憶される既存のテーブルの例である。元テーブル41は、列名がname(1列目)、type(2列目)およびID(IDentifier)(3列目)の列を含む。元テーブル42は、列名がID(1列目)、addr(addressの略)(2列目)およびtel(telphoneの略)(3列目)の列を含む。既存のテーブルは、テーブル生成装置10の外部に接続されたストレージに格納されていてもよい。
処理部12は、目的テーブル情報21を取得し、目的テーブル22を生成する。目的テーブル情報21は、新たに生成すべき目的テーブル22に含まれる列を示す。例えば、目的テーブル情報21は、目的テーブル22の各列の列名と各列の並び順とを示す情報を含む。処理部12は、目的テーブル情報21が入力されると、スクリプトと、当該スクリプトに関する制約モデルと、目的テーブル22の生成に利用する元テーブルとを取得する。処理部12は、既存のテーブルの中から目的テーブル情報21に含まれる列名を全て含む元テーブルの組み合わせを選択する。
処理部12は、元テーブルの列構造を変換した第2の入力テーブルと目的テーブルの列構造を変換した第2の出力テーブルとが制約条件を満たすように、元テーブルを第2の入力テーブルに変換する。それと共に、処理部12は、第2の出力テーブルに含まれる列と目的テーブルに含まれる列との間の対応関係を示す割り当て情報を生成する。
ここで、元テーブルから第2の入力テーブルへの変換は、元テーブルに含まれる列の列名の変更および列順序の変更の少なくとも一方を含む。また、元テーブルから第2の入力テーブルへの変換は、元テーブルに含まれる2以上の列を1つの列に統合することを含むこともある。この場合、第2の出力テーブルから目的テーブルへの変換は、第2の出力テーブルに含まれる1つの列を2以上の列に分割することを含む。
例えば、目的テーブル情報21では、name、addr、telおよびIDの列が、この並び順で指定されているとする。また、処理部12は、目的テーブル情報21に対し、元テーブル41,42を取得する。更に、処理部12は、スクリプト31および制約モデル32を取得する。
そして、処理部12は、元テーブル41,42の列構造を変換した第2の入力テーブルと目的テーブル22の列構造を変換した第2の出力テーブルとが制約条件を満たすように、元テーブル41,42を第2の入力テーブルに変換する。テーブル43は、元テーブル41の列構造を変換した第2の入力テーブルである。また、テーブル44は、元テーブル42の列構造を変換した第2の入力テーブルである。更に、テーブル45は、目的テーブル情報21で示される目的テーブル22の列構造を変換した第2の出力テーブルである(ただし、この段階ではテーブル45は生成されていない)。
具体的には、テーブル43は、IDおよびnameの列を元テーブル41から選択し、1列目がID、2列目がnameとなるように列順序を変更したテーブルである。テーブル43の列構造は、制約モデル32のスロット番号「1」、「2」に対応する。また、テーブル44は、ID、addrおよびtelの列を元テーブル42から選択し、addrおよびtelの列を1つの列(列名を「addr tel」とし、元の2つの列の値をスペースで区切って1つの値とする)に統合したテーブルである。テーブル44の列構造は、制約モデル32のスロット番号「4」、「5」に対応する。また、テーブル45は、目的テーブル情報21により示される目的テーブル22の列のうちのaddrおよびtelの列を1つの列に統合し、1列目がID、2列目がname、3列目がaddr telとなるように列順序を変更したテーブルである。テーブル45における列の統合の方法は、テーブル44における列の統合の方法と同じである。テーブル45の列構造は、制約モデル32のスロット番号「5」、「6」、「7」に対応する。
処理部12は、制約モデル32におけるスロット番号「1」、「3」、「5」の各スロットに、IDの列を割り当てる。また、処理部12は、スロット番号「2」、「6」の各スロットに、nameの列を割り当てる。更に、処理部12は、スロット番号「4」、「7」の各スロットに、addr telの列を割り当てる。割り当て情報33は、これらの割り当ての結果を示す。
このように、処理部12は、制約モデル32で示される制約条件が満たされるように、元テーブル41,42を、テーブル43,44に変換する。また、処理部12は、制約モデル32における各スロットに対する属性の割り当て結果を示す割り当て情報33を生成し、記憶部11に格納する。割り当て情報33のスロット番号「5」、「6」、「7」に対応するスロットは、目的テーブル情報21で示される目的テーブル22の列構造を変換した結果を示す。このため、割り当て情報33は、第2の出力テーブル(テーブル45)に含まれる列と目的テーブル22に含まれる列との間の対応関係を示す情報であると言える。
処理部12は、スクリプトと第2の入力テーブルとから第2の出力テーブルを生成し、割り当て情報に基づいて第2の出力テーブルを目的テーブルに変換する。例えば、処理部12は、スクリプト31とテーブル43,44とからテーブル45を生成し、割り当て情報33に基づいてテーブル45を目的テーブル22に変換する。テーブル43,44を入力としてスクリプト31を実行した場合、テーブル45が得られることになる。テーブル45には、列名が付与されていなくてもよい。処理部12は、テーブル45を再変換して、目的テーブル22を得る。
具体的には、割り当て情報33によれば、テーブル45は、1列目がID、2列目がname、3列目がaddr telである。このため、処理部12は、テーブル45の2列目を1列目、テーブル45の3列目の値のスペースの前側を2列目、同スペースの後ろ側を3列目、テーブル45の1列目を4列目に入れ替えて、目的テーブル情報21で示される列名を付与する。こうして、処理部12は、テーブル45を再変換することで、目的テーブル22を得る。
テーブル生成装置10によれば、第1の入力テーブルから第1の出力テーブルを生成するスクリプトと、第1の入力テーブルに含まれる列と第1の出力テーブルに含まれる列との間の制約条件を示す制約モデルと、生成すべき目的テーブルに含まれる列を示す目的テーブル情報と、目的テーブルの生成に使用する元テーブルとが取得される。元テーブルの列構造を変換した第2の入力テーブルと目的テーブルの列構造を変換した第2の出力テーブルとが制約条件を満たすように、元テーブルが第2の入力テーブルに変換されると共に、第2の出力テーブルに含まれる列と目的テーブルに含まれる列との間の対応関係を示す割り当て情報が生成される。スクリプトと第2の入力テーブルとから第2の出力テーブルが生成され、割り当て情報に基づいて第2の出力テーブルが目的テーブルに変換される。
これにより、既存のスクリプトの再利用を容易にする。例えば、既存のスクリプトは、スクリプト31で示されるように、特定のテーブルの列構造に合わせた記述となっている。このため、特定のテーブル以外の他のテーブルと既存のスクリプトで想定されている列構造に齟齬がある(例えば、列の順序、列名および列の数などが相違する)と、他のテーブルに既存のスクリプトを再利用できない。したがって、他の入力テーブルを用いて新たなテーブルを生成する際に、既存のスクリプトを再利用できる可能性は低い。
そこで、テーブル生成装置10は、既存のスクリプトに付加された入出力テーブルに関する制約モデル32に従って、元テーブルの列構造を変換して入力し、得られた出力テーブルの列構造を目的構造に再変換することで、既存のスクリプトの再利用を容易にする。このため、ユーザは、目的テーブル22に含まれる列を示す目的テーブル情報21をテーブル生成装置10に入力することで、新たなスクリプトを記述しなくても、テーブル生成装置10に目的テーブル22を生成させることができる。
[第2の実施の形態]
次に、第2の実施の形態を説明する。
図2は、第2の実施の形態のテーブル生成装置のハードウェア例を示すブロック図である。
テーブル生成装置100は、CPU101、RAM102、HDD103、画像信号処理部104、入力信号処理部105、媒体リーダ106および通信インタフェース107を有する。なお、CPU101は、第1の実施の形態の処理部12に対応する。RAM102またはHDD103は、第1の実施の形態の記憶部11に対応する。
CPU101は、プログラムの命令を実行するプロセッサである。CPU101は、HDD103に記憶されたプログラムやデータの少なくとも一部をRAM102にロードし、プログラムを実行する。なお、CPU101は複数のプロセッサコアを含んでもよい。また、テーブル生成装置100は複数のプロセッサを有してもよい。以下で説明する処理は複数のプロセッサまたはプロセッサコアを用いて並列に実行されてもよい。また、複数のプロセッサの集合を「マルチプロセッサ」または単に「プロセッサ」と言うことがある。
RAM102は、CPU101が実行するプログラムやCPU101が演算に用いるデータを一時的に記憶する揮発性の半導体メモリである。なお、テーブル生成装置100は、RAM以外の種類のメモリを備えてもよく、複数個のメモリを備えてもよい。
HDD103は、OS(Operating System)やミドルウェアやアプリケーションソフトウェアなどのソフトウェアのプログラム、および、データを記憶する不揮発性の記憶装置である。なお、テーブル生成装置100は、フラッシュメモリやSSD(Solid State Drive)などの他の種類の記憶装置を備えてもよく、複数の不揮発性の記憶装置を備えてもよい。
画像信号処理部104は、CPU101からの命令に従って、テーブル生成装置100に接続されたディスプレイ111に画像を出力する。ディスプレイ111としては、CRT(Cathode Ray Tube)ディスプレイ、液晶ディスプレイ(LCD:Liquid Crystal Display)、プラズマディスプレイ、有機EL(OEL:Organic Electro-Luminescence)ディスプレイなど、任意の種類のディスプレイを用いることができる。
入力信号処理部105は、テーブル生成装置100に接続された入力デバイス112から入力信号を取得し、CPU101に出力する。入力デバイス112としては、マウス・タッチパネル・タッチパッド・トラックボールなどのポインティングデバイス、キーボード、リモートコントローラ、ボタンスイッチなどを用いることができる。また、テーブル生成装置100に、複数の種類の入力デバイスが接続されていてもよい。
媒体リーダ106は、記録媒体113に記録されたプログラムやデータを読み取る読み取り装置である。記録媒体113として、例えば、磁気ディスク、光ディスク、光磁気ディスク(MO:Magneto-Optical disk)、半導体メモリなどを使用できる。磁気ディスクには、フレキシブルディスク(FD:Flexible Disk)やHDDが含まれる。光ディスクには、CD(Compact Disc)やDVD(Digital Versatile Disc)が含まれる。
媒体リーダ106は、例えば、記録媒体113から読み取ったプログラムやデータを、RAM102やHDD103などの他の記録媒体にコピーする。読み取られたプログラムは、例えば、CPU101によって実行される。なお、記録媒体113は可搬型記録媒体であってもよく、プログラムやデータの配布に用いられることがある。また、記録媒体113やHDD103を、コンピュータ読み取り可能な記録媒体と言うことがある。
通信インタフェース107は、ネットワーク20に接続され、ネットワーク20を介して他のコンピュータと通信を行うインタフェースである。通信インタフェース107は、例えば、スイッチやルータなどの通信装置とケーブルで接続される。
図3は、スクリプトと制約モデルとの関係を示す図である。
入力テーブルT1,T2を入力として、出力テーブルT3を出力するスクリプトを考える。一例として、入力テーブルT1,T2に対する結合演算により出力テーブルT3を生成するスクリプトが考えられる。ここで、以下の説明では、各テーブルにおける列名(属性名)を、ラベルと言うことがある。また、各テーブルにおける列を、スロットと言うことがある。
入力テーブルT1に含まれるラベルは、「支店名」および「売上」である。入力テーブルT2に含まれるラベルは、「支店名」および「電話番号」である。出力テーブルT3のラベルは、「支店名」、「売上」および「電話番号」である。
この場合、テーブル生成装置100は、当該スクリプトを再利用するための制約条件を表す制約モデルM1を、入力テーブルT1,T2および出力テーブルT3の各ラベルの関係から得ることができる。例えば、入力テーブルT1の2つのスロットを「スロット1」、「スロット2」とする。入力テーブルT2の2つのスロットを「スロット3」、「スロット4」とする。出力テーブルT3の3つのスロットを「スロット5」、「スロット6」、「スロット7」とする。例えば、制約モデルM1の情報は、1つのスロットを1つのノードとし、2つのノードのラベルが一致するという関係を当該2つのノードを結ぶエッジとしたグラフによって表される。
制約モデルM1は、3つの制約を含む。第1の制約は、スロット1,3,5のラベル(例えば、「支店名」)が一致することである。第2の制約は、スロット2,6のラベル(例えば、「売上」)が一致することである。第3の制約は、スロット4,7のラベル(例えば、「電話番号」)が一致することである。入出力テーブルがこれらの3つの制約を満たせば、当該スクリプトを、他の出力テーブルの生成にも再利用できる可能性がある。
テーブル生成装置100は、複数のスクリプトを予め記憶する。また、テーブル生成装置100は、各スクリプトに対応付けて、各スクリプトの制約モデルを予め記憶する。テーブル生成装置100は、複数のスクリプトを再利用して、ユーザにより入力された列構造をもつテーブル(目的テーブルと言うことがある)を自動生成する機能を提供する。
図4は、テーブル生成装置の機能例を示すブロック図である。
テーブル生成装置100は、テーブル記憶部120、スクリプト記憶部130、目的テーブル記憶部140、UI(User Interface)部150および生成制御部160を有する。テーブル記憶部120、スクリプト記憶部130および目的テーブル記憶部140は、RAM102またはHDD103の記憶領域を用いて実現される。UI部150および生成制御部160は、RAM102に記憶されたプログラムをCPU101が実行することで実現される。
テーブル記憶部120は、複数のテーブルを予め記憶する。テーブル記憶部120は、例えば、RDB(Relational DataBase)である。テーブル記憶部120に記憶された既存のテーブルは、目的テーブルの生成元となるテーブルの候補である。ここで、目的テーブルの生成元のテーブルを、元テーブルと言う。
スクリプト記憶部130は、複数のスクリプトと、複数のスクリプトそれぞれに対応する制約モデルの情報とを予め記憶する。1つのスクリプトに対して1つの制約モデルが対応付けられる。スクリプトの記述の方式には、例えば、ラベルを指定して演算内容を記述するラベル方式(例えば、SQL(Structured Query Language))や、列番号を指定して演算内容を記述するスロット位置方式などが挙げられる。
目的テーブル記憶部140は、目的テーブルの列を示す目的テーブル情報を記憶する。目的テーブル情報は、ユーザによって入力される。また、目的テーブル記憶部140は、生成制御部160によって生成された目的テーブルを記憶する。
UI部150は、ユーザによる目的テーブル情報の入力を受け付ける。また、UI部150は、生成制御部160により目的テーブル情報に基づいて生成された目的テーブルをディスプレイ111に表示させる。
生成制御部160は、UI部150から目的テーブル情報を取得し、目的テーブル記憶部140に格納する。生成制御部160は、目的テーブル情報に応じた目的テーブルを生成し、テーブル記憶部120に格納する。生成制御部160は、テーブル生成部161およびスロット割り当て部162を有する。
テーブル生成部161は、目的テーブル情報に基づいて、テーブル記憶部120から元テーブルを選択する。テーブル生成部161は、元テーブルおよび目的テーブル情報に応じたスクリプトの選択を、スロット割り当て部162に依頼する。テーブル生成部161は、スロット割り当て部162により選択されたスクリプトに応じて、元テーブルの列構造を変換し、変換後の元テーブルを入力としてスクリプトを実行する。テーブル生成部161は、スクリプトの実行結果として得られたテーブルの列構造を、目的テーブル情報に合わせて再変換することで、目的テーブルを生成し、目的テーブル記憶部140に格納する。
スロット割り当て部162は、元テーブルおよび目的テーブル情報に含まれる各ラベルを、スクリプトの制約モデルにおける各スロットに割り当てる割り当て処理を行い、今回の目的テーブルの生成に、当該スクリプトを利用できるかを確認する。スロット割り当て部162は、スクリプト毎に順番に割り当て処理を行い、利用可能なスクリプトを特定すると、当該スクリプトを示す情報と、割り当て結果を示す割り当て情報とをテーブル生成部161に提供する。割り当て情報は、スクリプト記憶部130に格納され、スクリプトの実行結果から目的テーブルを生成する際に用いられる。
図5は、元テーブルの例を示す図である。
テーブル121,122は、テーブル記憶部120に記憶される元テーブルの例である。テーブル121は、案件名、状態および案件コードのラベルで示される3つの列を含む。テーブル121は、案件名「PC発注」、状態「完了」、案件コード「111112」のレコード(行)を含む。テーブル121は、案件名「HDD発注」、状態「発注」、案件コード「111111」のレコードを含む。
テーブル122は、案件コード、支店名および担当のラベルで示される3つの列を含む。テーブル122は、案件コード「111111」、支店名「A支店」、担当「Xさん」のレコードを含む。テーブル122は、案件コード「111112」、支店名「C支店」、担当「Yさん」のレコードを含む。
テーブル記憶部120には、テーブル121,122以外の他のテーブルも予め記憶されている。
図6は、スクリプトの例を示す図である。
図6(A)は、ラベル方式のスクリプトの例を示す。スクリプト131は、図3で例示した入力テーブルT1,T2から出力テーブルT3を生成するラベル方式のスクリプトである。スクリプト131は、入力テーブルT1(「入力1」)および入力テーブルT2(「入力2」)の結合演算により、出力テーブルT3を得る。
図6(B)は、スロット位置方式のスクリプトの例を示す。スクリプト132は、図3で例示した入力テーブルT1,T2から出力テーブルT3を生成するスロット位置方式のスクリプトである。スクリプト132は、スクリプト131と同様に、入力テーブルT1(「入力1」)および入力テーブルT2(「入力2」)の結合演算により、出力テーブルT3を得る。スロット位置方式では、各テーブルの先頭(図中の左端)から数えた列番号によって、結合キーとなる列や、選択対象の列が指定される。
このように、スクリプトは、ラベル方式で記述されてもよいし、スロット位置方式で記述されてもよい。また、スクリプト記憶部130には、スクリプト131,132以外の他のスクリプトも予め記憶されている。
図7は、制約モデルの例を示す図である。
制約モデル133は、スクリプト131の制約モデルを示す。制約モデル133のグラフ構造は、図3で例示した制約モデルM1と同様である(スクリプト132の制約モデルも制約モデルM1と同様である)。制約モデル133における各スロットのスロット番号は、制約モデルM1における各スロットのスロット番号と同じとする。
制約モデル133は、スロット1,3,5のラベルが一致すること、スロット2,6のラベルが一致すること、スロット4,7のラベルが一致すること、を示す。また、制約モデル133は、各スロットのラベルの情報を保持する。スロット1のラベルは「支店名」である。スロット2のラベルは「売上」である。スロット3のラベルは「支店名」である。スロット4のラベルは「電話番号」である。スロット5のラベルは「支店名」である。スロット6のラベルは「売上」である。スロット7のラベルは「電話番号」である。
ここで、スクリプト132は、スロット位置方式である。このため、スクリプト132の制約モデルは、ラベルを保持しない。したがって、生成制御部160は、制約モデルがラベルを保持するか否かによって、当該制約モデルに対応するスクリプトの記述方法が、ラベル方式か、スロット位置方式かを区別可能である。
なお、スクリプトとして、結合演算を用いるものを例示したが、スクリプトは、結合演算以外の演算で、出力テーブルを生成するものでもよい。例えば、スクリプトは、入力テーブルの所定のスロットの値の統計値(例えば、平均値など)を求め、当該統計値を含む出力テーブルを生成するものでもよい。この場合、例えば、入力テーブルのラベル「XX」(XXは任意の文字列を示す)に対し、出力テーブルのラベル「平均XX」が対応付けられるという制約モデルの情報を当該スクリプトに対応付けてスクリプト記憶部130に格納しておく。また、スクリプトは、1つの入力テーブルから1つの出力テーブルを生成するものでもよい。
このように、制約モデルによって示される制約条件は、ある列の列名と他の列の列名とが同一であること、および、ある列の列名と他の列の列名との差分が所定の語であることの少なくとも一方を含み得る。
図8は、目的テーブル情報の例を示す図である。
目的テーブル情報141は、ユーザにより入力され、目的テーブル記憶部140に格納される。目的テーブル情報141は、目的テーブルのラベルとして、「案件名」、「支店名」、「担当」および「案件コード」が、この並び順で指定されたことを示す。
次に、テーブル生成装置100によりテーブル生成の処理手順を説明する。
図9は、テーブル生成の処理例を示すフローチャートである。
(S10)UI部150は、目的テーブル情報141を受け付ける。テーブル生成部161は、目的テーブル情報141をUI部150から取得し、目的テーブル記憶部140に格納する。
(S11)テーブル生成部161は、目的テーブル情報141に対して、元テーブルとスクリプトとの集合の新候補があるか否かを判定する。新候補がある場合、ステップS12に処理が進む。新候補がない場合、テーブル生成の処理が終了する(この場合、目的テーブルを自動生成しない)。ここで、テーブル生成部161は、目的テーブル情報141に基づいて、元テーブルの候補を特定する。例えば、テーブル生成部161は、目的テーブル情報141に含まれるラベルを全て含む元テーブルの組み合わせを候補として特定することが考えられる。また、テーブル生成部161は、スクリプトを1つずつ順番に候補として選択することが考えられる。
(S12)スロット割り当て部162は、スロット割り当て処理を実行する。スロット割り当て処理の詳細は後述される。
(S13)テーブル生成部161は、スロット割り当て部162によるスロット割り当て処理の結果に応じて、該当のスクリプトに対する制約モデルで示される全ての制約を満たすスロットの割り当てがあるか否かを判定する。全ての制約を満たすスロットの割り当てがある場合、ステップS14に処理が進む。全ての制約を満たすスロットの割り当てがない場合、ステップS11に処理が進む。例えば、テーブル生成部161は、スロット割り当て部162から割り当て情報を取得できた場合は、全ての制約を満たすスロットの割り当てがあると判定する。テーブル生成部161は、スロット割り当て部162から割り当て情報を取得できなかった場合は、全ての制約を満たすスロットの割り当てがないと判定する。
(S14)テーブル生成部161は、スクリプトの入力指定がラベル方式であるか否かを判定する。ラベル方式である場合、ステップS15に処理が進む。スロット位置方式である場合、ステップS16に処理が進む。前述のように、テーブル生成部161は、制約モデルにラベルの情報が保持されているか否かに応じて、当該制約モデルに対応するスクリプトの記述方法がラベル方式であるかスロット位置方式であるかを判定する。
(S15)テーブル生成部161は、割り当て情報に基づいて元テーブルのラベルを書き換える。そして、ステップS17に処理が進む。
(S16)テーブル生成部161は、割り当て情報に基づいて元テーブルのスロットを入れ替える。そして、ステップS17に処理が進む。
(S17)テーブル生成部161は、ステップS15のラベル書き換え後の元テーブル、または、ステップS16のスロット入れ替え後の元テーブルに対してスクリプトを実行し、スクリプト実行結果を得る。
(S18)テーブル生成部161は、割り当て情報に基づいて、スクリプト実行結果のスロットを入れ替える。
(S19)テーブル生成部161は、ステップS18の結果に、目的テーブル情報141で示されるラベルを付与することで、目的テーブルを生成し、目的テーブル記憶部140に格納する。
(S20)UI部150は、生成された目的テーブルをテーブル生成部161から取得し、出力する。例えば、UI部150は、ディスプレイ111に目的テーブルを表示させる。
図10は、スロット割り当ての処理例を示すフローチャートである。スロット割り当ての処理は、ステップS12で実行される。
(S30)スロット割り当て部162は、目的テーブル情報141の各スロットと元テーブルの各スロットとの関係を調べる。具体的には、スロット割り当て部162は、目的テーブル情報141のスロットおよび元テーブルのスロットのうち、ラベルが一致するスロットを確認する。ここで、目的テーブル情報141および元テーブルのスロットと区別するために、制約モデルにおけるスロットを「条件スロット」と言うこととする。スロット割り当て部162は、選択中のスクリプトに対応する制約モデルの条件スロットのラベルが空である割り当て情報を生成し、スクリプト記憶部130に格納する。
(S31)スロット割り当て部162は、割り当て情報を参照して、元テーブルまたは目的テーブル情報141のスロット(あるいは、当該スロットに対応するラベル)を未割り当ての条件スロットがあるか否かを判定する。未割り当ての条件スロットがある場合、ステップS32に処理が進む。未割り当ての条件スロットがない場合、ステップS39に処理が進む。
(S32)スロット割り当て部162は、未割り当て、かつ、制約の最も厳しい条件スロットを選択する。ここで、制約が厳しいとは、制約モデルにおいて、該当の条件スロットに対応するノードに多くのエッジが接続されていることを示す。すなわち、制約の最も厳しい条件スロットとは、最も多くのエッジが接続されているノードに対応する条件スロットである。スロット割り当て部162は、最も多くのエッジが接続されているノードが複数の場合、その中で、割り当て候補のスロットが最も少ない条件スロットを制約の最も厳しい条件スロットとする。
(S33)スロット割り当て部162は、選択した条件スロットの制約を満たす、割り当て済でないテーブル(元テーブルまたは目的テーブル情報141)のスロットを、当該条件スロットに対する割り当て候補とする。
(S34)スロット割り当て部162は、制約モデルのうち、選択した条件スロットと同一のテーブル内に割り当て済の条件スロットがあるか否かを判定する。同一のテーブル内に割り当て済の条件スロットがある場合、ステップS35に処理が進む。同一のテーブル内に割り当て済の条件スロットがない場合、ステップS36に処理が進む。
(S35)スロット割り当て部162は、元テーブルの列構造に基づいて、該当の条件スロットに割り当て済のスロットとテーブルが同一でない割り当て候補を割り当て候補から除外する。すなわち、スロット割り当て部162は、該当の条件スロットに割り当て済のスロットが属するテーブルを割り当て候補の抽出元として選択する。
(S36)スロット割り当て部162は、ステップS32で選択した条件スロットと割り当て済の条件スロットとの間に制約があるか否かを判定する。制約がある場合、ステップS42に処理が進む。制約がない場合、ステップS37に処理が進む。
(S37)スロット割り当て部162は、同一テーブル毎に候補スロットの全組み合わせそれぞれを条件スロットに割り当てて、続きを実行する。
(S38)スロット割り当て部162は、未処理の組み合わせを1つ選択する。そして、ステップS31に処理が進む。
(S39)スロット割り当て部162は、現割り当てで該当の制約モデルにおける全ての制約が満たされ、目的テーブル情報141のスロットが全て割り当て済であるか否かを判定する。現割り当てで全ての制約が満たされ、目的テーブル情報141のスロットが全て割り当て済の場合、ステップS40に処理が進む。それ以外の場合、ステップS41に処理が進む。
(S40)スロット割り当て部162は、現在の割り当て情報を出力する。具体的には、スロット割り当て部162は、スクリプト記憶部130に割り当て情報を格納する。スロット割り当て部162は、テーブル生成部161に割り当て情報を提供する。そして、スロット割り当ての処理が終了する。
(S41)スロット割り当て部162は、現在の割り当ては解ではないと判定する。そして、ステップS47に処理が進む。
図11は、スロット割り当ての処理例(続き)を示すフローチャートである。
(S42)スロット割り当て部162は、ステップS32で選択した条件スロットと割り当て済の条件スロットとの間の制約と関連する割り当て済スロットの集合(スロット集合)を取得する。
(S43)スロット割り当て部162は、スロット候補(条件スロットへの割り当て候補であるスロット)と関係のあるスロットが、取得したスロット集合の中に含まれていないスロット候補を割り当て候補から除外する。
(S44)スロット割り当て部162は、スロット候補が取り出したスロット集合のサイズ以上であるか否かを判定する。スロット候補が取り出したスロット集合のサイズ以上の場合、ステップS45に処理が進む。スロット候補が取り出したスロット集合のサイズ未満の場合、ステップS46に処理が進む。
(S45)スロット割り当て部162は、条件スロットに割り当てるスロットとして、取り出したスロット集合と同数を候補スロットから選択した組み合わせを作成し、それぞれの組み合わせで続きの実行を行う。そして、ステップS38に処理が進む。
(S46)スロット割り当て部162は、現在の割り当てに解はないと判定する。
(S47)スロット割り当て部162は、未処理の組み合わせがあるか否かを判定する。未処理の組み合わせがある場合、ステップS38に処理が進む。未処理の組み合わせがない場合、ステップS48に処理が進む。
(S48)スロット割り当て部162は、現在のスクリプトに対する解はないと判定する。この場合、スロット割り当て部162は、割り当て情報をテーブル生成部161に提供しない。そして、スロット割り当ての処理が終了する。
このようにして、スロット割り当て部162は、スロット割り当ての処理を実行することで、割り当て情報を生成する。
すなわち、制約モデルは、入力テーブルに含まれる列の位置を示す入力スロットと、出力テーブルに含まれる列の位置を示す出力スロットと、入力スロットおよび出力スロットに対して規定された制約条件とを含む。そして、スロット割り当て部162は、元テーブルに含まれる列の列名および目的テーブルに含まれる列の列名に基づいて、元テーブルの列および目的テーブルの列の間の制約関係を推定する。そして、スロット割り当て部162は、制約モデルが示す制約条件と推定した制約関係とに基づいて、元テーブルに含まれる列を入力スロットに割り当てると共に目的テーブルに含まれる列を出力スロットに割り当てる割り当て処理を行う。割り当て処理により、目的テーブルの生成に該当のスクリプトを利用可能であるか否かを適切に判定できる。
割り当て処理では、スロット割り当て部162は、入力スロットおよび出力スロットを含む複数のスロットのうち、他のスロットとの間に存在する制約の個数が多いスロットから優先して、元テーブルの列または目的テーブルの列の割り当てを決定する。これにより、スロットの割り当ての組み合わせの数を効率的に削減でき、スロット割り当てを高速化できる。
また、割り当て処理では、スロット割り当て部162は、入力スロットおよび出力スロットを含む複数のスロットの中から1つのスロットを選択し、選択したスロットに割り当てる元テーブルの列または目的テーブルの列を、推定した制約関係に基づいて絞り込む。これにより、スロットの割り当ての組み合わせの数を効率的に削減でき、スロット割り当てを高速化できる。
更に、元テーブルは複数存在し、入力スロットは複数存在することもある。この場合、割り当て処理では、スロット割り当て部162は、複数の入力スロットのうち第1の入力スロットに対して複数の元テーブルの中の第1の列を割り当てた後、複数の入力スロットのうち第2の入力スロットに対して割り当てる複数の元テーブルの中の第2の列を、第1の列が属する元テーブルと第2の列が属する元テーブルの同一性に基づいて絞り込む。これにより、スロットの割り当ての組み合わせの数を効率的に削減でき、スロット割り当てを高速化できる。
次に、上記の手順によるテーブル生成の具体例を説明する。以下の説明では、テーブル生成装置100に対して、目的テーブル情報141が入力された場合を例示する。テーブル生成部161は、テーブル121,122を元テーブルとして選択する。また、テーブル生成部161は、目的テーブル情報141に対して、テーブル121,122およびスクリプト131をスロット割り当ての処理対象として選択する。
図12は、テーブル生成の具体例を示す図である。
スロット割り当て部162は、テーブル121,122の各ラベルおよび目的テーブル情報141で示される各ラベルの一致を確認する(ステップST1)。図中では、一致が確認されたスロット同士をエッジで結んでいる。
スロット割り当て部162は、スクリプト131の制約モデル133に基づいて、割り当て情報134を生成し、スクリプト記憶部130に格納する。この段階では、割り当て情報134における各条件スロットへのスロットの割り当てはない。スロット割り当て部162は、未割り当て、かつ、制約の最も厳しい条件スロット5を選択する(ステップST2)。ここで、条件スロット1,3,5は、それぞれ制約が2つであり、最多である。また、条件スロット1,3の割り当て候補は2つ(ラベル「案件コード」がテーブル121,122に計2つ存在する)、条件スロット5の割り当て候補は1つである。したがって、スロット割り当て部162は、条件スロット5を割り当て対象とする。
スロット割り当て部162は、選択した条件スロット5の制約を満たす、割り当て済でないテーブルのスロットを候補とする(ステップST3)。条件スロット5は、スクリプトによる出力テーブルに属する。このため、スロット割り当て部162は、目的テーブル情報141のうち、条件スロット5の2つの制約を満たす、割り当て済でないラベル「案件コード」のスロットを、条件スロット5に対する割り当て候補とする。
図13は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、スロット5の割り当て候補を全て作成する(ステップST4)。ここで、割り当て候補には、「空」(割り当てるスロットを1つも選ばないケース)を含む。したがって、この段階では、スロット割り当て部162は、ラベル「案件コード」と、「空」とを、スロット5の割り当て候補として作成する。
スロット割り当て部162は、スロット5に対して、まず、ラベル「案件コード」のスロットを割り当てる(ステップST5)。スロット割り当て部162は、スロット5に対してラベル「案件コード」を割り当てたことを割り当て情報134に記録する。
次に、スロット割り当て部162は、割り当て対象の条件スロットとして、条件スロット1を選択する(ステップST6)。なお、スロット割り当て部162は、制約の最も厳しい条件スロットが複数ある場合、その中から任意の順序で、割り当て対象の条件スロットを選択することができる。
図14は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、選択した条件スロット1の制約を満たす、割り当て済でないテーブルのスロットを候補とする(ステップST7)。条件スロット1は元テーブルに属するスロットである。条件スロット1に対応する元テーブルは、テーブル121,122の何れか一方である。このため、スロット割り当て部162は、テーブル121,122のうち、条件スロット1の2つの制約を満たす、割り当て済でないラベル「案件コード」の2つのスロットを、条件スロット1に対する割り当て候補とする。
ここで、テーブル121,122それぞれのラベル「案件コード」を区別するために、以下では便宜的に、テーブル121の当該ラベルを「案件コード(1)」、テーブル122の当該ラベルを「案件コード(2)」のように表記する。表記は便宜的なものであり、「案件コード」、「案件コード(1)」および「案件コード(2)」の何れのラベルも同じ内容である。なお、この段階において、条件スロット1と同一のテーブル(条件スロット1,2を含むテーブル)内に割り当て済の条件スロットはない。
スロット割り当て部162は、条件スロット1の割り当て候補を全て作成する(ステップST8)。ここで、スロット割り当て部162は、制約モデル133に基づいて、割り当て済の条件スロット5と条件スロット1との間にラベルが一致するという制約があることを検出する。そこで、スロット割り当て部162は、割り当て情報134から、条件スロット5に割り当てたラベル「案件コード」を取得する。ステップST7において、取得された条件スロット1に対する割り当て候補は、何れも条件スロット5に割り当て済のラベル「案件コード」に一致する。したがって、スロット割り当て部162は、条件スロット1の割り当て候補として、ラベル「案件コード(1)」および「案件コード(2)」を作成する。
スロット割り当て部162は、条件スロット1に対して、ラベル「案件コード(1)」のスロットを割り当てる(ステップST9)。スロット割り当て部162は、条件スロット1に対して、ラベル「案件コード(1)」のスロットを割り当てたことを割り当て情報134に記録する。
図15は、テーブル生成の具体例(続き)を示す図である。
次に、スロット割り当て部162は、割り当て対象の条件スロットとして、条件スロット3を選択する(ステップST10)。
スロット割り当て部162は、条件スロット3に対する割り当て候補として、テーブル122のラベル「案件コード(2)」のスロットを特定する。条件スロット3は、条件スロット1,5とラベルが一致するという制約をもつ。ラベル「案件コード(2)」は、「案件コード」および「案件コード(1)」に一致する。したがって、スロット割り当て部162は、条件スロット3にラベル「案件コード(2)」を割り当てる(ステップST11)。スロット割り当て部162は、条件スロット3に対して、ラベル「案件コード(2)」のスロットを割り当てたことを割り当て情報134に記録する。
一致関係を2つもつ条件スロットに対する割り当てが完了したので、次に、スロット割り当て部162は、一致関係を1つもつ条件スロットを割り当て対象として選択する。例えば、スロット割り当て部162は、条件スロット2を次の割り当て対象として選択する(ステップST12)。
図16は、テーブル生成の具体例(続き)を示す図である。
条件スロット2と同じテーブルに属する条件スロット1は割り当て済である。割り当て情報134によれば、条件スロット1には、ラベル「案件コード(1)」のスロットが割り当てられている。したがって、スロット割り当て部162は、ラベル「案件コード(1)」を含むテーブル121とは異なるテーブルに属するスロット(テーブル122のラベル「支店名」、「担当」のスロット)を割り当て候補から除外する。なお、条件スロット2は、割り当て済の条件スロットとの間に、制約モデル133に基づく制約をもたない。この場合、条件スロット2の割り当て候補は、テーブル121のラベル「案件名」のスロットとなる(ステップST13)。
スロット割り当て部162は、条件スロット2に対する割り当て候補を全て作成する(ステップST14)。具体的には、スロット割り当て部162は、条件スロット2の割り当て候補として、「空」およびラベル「案件名」を作成する。
スロット割り当て部162は、条件スロット2に対して、「空」を割り当てる(ステップST15)。スロット割り当て部162は、条件スロット2に対して「空」を割り当てたことを割り当て情報134に記録する。
図17は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、条件スロット2が割り当て済となり、条件スロット6の制約が他の条件スロットよりも厳しくなったので、次の割り当て対象を条件スロット6とする。制約モデル133によれば、条件スロット6は、条件スロット2のラベルに一致する。したがって、スロット割り当て部162は、条件スロット2に「空」を割り当てたので、条件スロット6に「空」を割り当てる(ステップST16)。
スロット割り当て部162は、次の割り当て対象を条件スロット7とする(ステップST17)。
条件スロット7は、スクリプトによる出力テーブルに属する。このため、スロット割り当て部162は、目的テーブル情報141のうち、割り当て済でないラベル「案件名」、「支店名」、「担当」に対応する3つのスロットを条件スロット7に対する割り当て候補とする(ステップST18)。なお、この段階において、条件スロット7は、割り当て済の他の条件スロットとの間に制約をもたない。
図18は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、条件スロット7に対して選択した割り当て候補を用いて、条件スロット7の全ての割り当て候補(候補スロットの全組み合わせ)を作成する(ステップST19)。この場合、全ての割り当て候補は次の8つである(「空」も含む)。
第1には、ラベル「案件名」のスロット、ラベル「支店名」のスロットおよびラベル「担当」のスロットを合わせたスロット集合である。第2には、ラベル「案件名」のスロットおよびラベル「支店名」のスロットを合わせたスロット集合である。第3には、ラベル「案件名」のスロットおよびラベル「担当」のスロットを合わせたスロット集合である。第4には、ラベル「支店名」のスロットおよびラベル「担当」のスロットを合わせたスロット集合である。第5には、ラベル「案件名」のスロットである。第6には、ラベル「支店名」のスロットである。第7には、ラベル「担当」のスロットである。第8には、「空」である。
ここで、第1のスロット(ラベルを「ラベル1」とする)と第2のスロット(ラベルを「ラベル2」とする)とを合わせたスロット集合のラベルを、「ラベル1 ラベル2」のように、元の2つのラベルをスペースで区切って1つのラベルとする。ただし、区切り文字はスペース以外でもよい。
スロット割り当て部162は、ステップST19で作成された8つの割り当て候補のうち、ラベル「案件名」のスロット、ラベル「支店名」のスロットおよびラベル「担当」のスロットを合わせたスロット集合を、条件スロット7に割り当てる(ステップST20)。スロット割り当て部162は、目的テーブル情報141のラベル「案件名」のスロット、ラベル「支店名」のスロットおよびラベル「担当」のスロットを合わせたスロット集合を条件スロット7に割り当てたことを割り当て情報134に記録する。
スロット割り当て部162は、一致制約が1つであり、スロットが未割り当てである条件スロット4を次の割り当て対象に選択する(ステップST21)。
図19は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、一致制約を1つもつテーブル121のラベル「案件名」のスロット、テーブル122のラベル「支店名」のスロット、および、テーブル122のラベル「担当」のスロットを、条件スロット4の割り当て候補として特定する(ステップST22)。
条件スロット4と同じテーブルに属する条件スロット3は割り当て済である。割り当て情報134によれば、条件スロット3には、ラベル「案件コード(2)」のスロットが割り当てられている。したがって、スロット割り当て部162は、ラベル「案件コード(2)」を含むテーブル122とは異なるテーブルに属するスロット(具体的には、テーブル121に属するラベル「案件名」のスロット)を割り当て候補から除外する(ステップST23)。
スロット割り当て部162は、割り当て情報134に基づいて、条件スロット4とラベルが一致するという制約をもつ条件スロット7に対して、ラベル「案件名」、「支店名」、「担当」のスロット集合が割り当てられていることを検出する。この場合、条件スロット7に対して割り当てられたスロット集合のサイズは3である。また、この段階における割り当て候補は、ラベル「支店名」のスロットおよびラベル「担当」のスロットである。すなわち、候補数は2であり、条件スロット7に対して割り当て済のスロット集合のサイズ3よりも小さい。したがって、スロット割り当て部162は、現在の割り当てでは、解がないと判定する(ステップST24)。
図20は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、条件スロット7に対する割り当てまで遡る。スロット割り当て部162は、条件スロット7に対し、ラベル「案件名」およびラベル「支店名」のスロット集合を割り当てる(ステップST25)。スロット割り当て部162は、ラベル「案件名」およびラベル「支店名」のスロット集合を条件スロット7に割り当てたことを割り当て情報134に記録する。
そして、スロット割り当て部162は、一致制約を1つもつテーブル121のラベル「案件名」のスロット、テーブル122のラベル「支店名」のスロット、および、テーブル122のラベル「担当」のスロットを、条件スロット4の割り当て候補として特定する。条件スロット4と同じテーブルに属する条件スロット3は割り当て済である。割り当て情報134によれば、条件スロット3には、ラベル「案件コード(2)」のスロットが割り当てられている。したがって、スロット割り当て部162は、ラベル「案件コード(2)」を含むテーブル122とは異なるテーブルに属するスロット(テーブル121に属するラベル「案件名」のスロット)を割り当て候補から除外する。また、スロット割り当て部162は、条件スロット4とラベルが一致するという制約をもつ条件スロット7に割り当て済のスロットに含まれないスロット(テーブル122のラベル「担当」のスロット)を割り当て候補から除外する(ステップST26)。
スロット割り当て部162は、割り当て情報134に基づいて、条件スロット4とラベルが一致するという制約をもつ条件スロット7に対して、ラベル「案件名」および「支店名」のスロット集合が割り当てられていることを検出する。この場合、条件スロット7に対して割り当てられたスロット集合のサイズは2である。また、この段階における割り当て候補は、ラベル「支店名」のスロットである。すなわち、候補数は1であり、条件スロット7に対して割り当て済のスロット集合のサイズ2よりも小さい。したがって、スロット割り当て部162は、現在の割り当てでは、解がないと判定する(ステップST27)。
図21は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、同様にして、条件スロット7に対する割り当てを試行する。スロット割り当て部162は、ラベル「支店名」およびラベル「担当」のスロット集合を条件スロット7に割り当てる。スロット割り当て部162は、ラベル「支店名」およびラベル「担当」のスロット集合を条件スロット7に割り当てたことを割り当て情報134に記録する。
この場合、条件スロット7に割り当てられたラベル「支店名」およびラベル「担当」のスロット集合は、テーブル122におけるラベル「支店名」およびラベル「担当」のスロット集合に一致する。したがって、スロット割り当て部162は、当該ラベル「支店名」およびラベル「担当」のスロット集合を条件スロット4に割り当てる(ステップST28)。スロット割り当て部162は、ラベル「支店名」およびラベル「担当」のスロット集合を条件スロット4に割り当てたことを割り当て情報134に登録する。
この段階で、割り当て情報134の全ての条件スロットが割り当て済となる。しかし、この段階の割り当て情報134では、出力テーブルの条件スロットに割り当てられているスロットが、ラベル「案件コード」、「支店名」および「担当」のスロットであり、目的テーブル情報141に含まれるラベル「案件名」のスロットが含まれていない。したがって、スロット割り当て部162は、この段階の割り当て情報134は解ではないと判定する。
スロット割り当て部162は、その後も同様にして、条件スロット7に対する割り当てを試行するが、全てのケースで解なしとなる(ステップST29)。このため、スロット割り当て部162は、条件スロットに対する割り当て結果を更に遡って、割り当て処理をやり直す。スロット割り当て部162は、割り当て情報134における条件スロット7に対するラベルの割り当て結果をクリアする。
スロット割り当て部162は、条件スロット6の割り当てに戻るが、他の割り当て候補が存在しない。スロット割り当て部162は、割り当て情報134における条件スロット6に対するラベルの割り当て結果をクリアする。そして、スロット割り当て部162は、条件スロット2の割り当てに戻り、他の割り当て候補であるラベル「案件名」のスロットの割り当てを試す(ステップST30)。
図22は、テーブル生成の具体例(続き)を示す図である。
スロット割り当て部162は、以降も同様にして、条件スロット6,7,4に対する割り当てを行い、全ての条件スロットに対する割り当てが完了する(ステップST31)。具体的には、条件スロット6に対して、ラベル「案件名」のスロットが割り当てられる。条件スロット7に対して、ラベル「支店名」およびラベル「担当」のスロット集合が割り当てられる。条件スロット4に対して、ラベル「支店名」およびラベル「担当」のスロット集合が割り当てられる。スロット割り当て部162は、この割り当て結果を、割り当て情報134に記録する。
割り当て情報134によれば、この段階の割り当て結果は、制約モデル133で示される全ての制約を満たしており、出力テーブル側の条件スロットが目的テーブル情報141に含まれる全てのスロットを含んでいる。したがって、スロット割り当て部162は、スロット割り当ての処理を完了し、割り当て情報134をテーブル生成部161に提供する。
テーブル生成部161は、割り当て情報134に基づいて、テーブル121,122の列構造を変換する(ステップST32)。
割り当て情報134によれば、ラベル「案件コード(1)」のスロットおよびラベル「案件名」のスロットをもつテーブルが入力テーブルとなっている。したがって、テーブル生成部161は、テーブル121からラベル「案件名」のスロットとラベル「案件コード」のスロットとを選択し、「案件コード」、「案件名」の順にスロットの順序を入れ替えたテーブル121aを生成する。ただし、スクリプトの記述がラベル方式の場合にはスロットの順序の入れ替えを行わなくてもよい(ラベルによって列の指定が可能なため)。
また、テーブル生成部161は、テーブル121aのラベル変換を行う。スクリプト131によれば、条件スロット1の「案件コード(1)」に対応するラベルは「支店名」である。したがって、テーブル生成部161は、テーブル121aのラベル「案件コード」を「支店名」に変更する。スクリプト131によれば、条件スロット2の「案件名」に対応するラベルは「売上」である。したがって、テーブル生成部161は、テーブル121aのラベル「案件名」を「売上」に変更する。テーブル121bは、テーブル生成部161によるテーブル121aに対するこれらのラベル変換の結果である。
更に、割り当て情報134によれば、ラベル「案件コード(2)」のスロットおよびラベル「支店名 担当」をもつテーブルが入力テーブルとなっている。このため、テーブル生成部161は、テーブル122からラベル「案件コード」のスロットと、ラベル「支店名」のスロットと、ラベル「担当」のスロットとを選択する。そして、テーブル生成部161は、これらのスロットのうち、ラベル「支店名」のスロットとラベル「担当」のスロットとを、この順に1つのスロットに統合したテーブル122aを生成する。
ここで、テーブル生成部161は、1つにまとめられたスロットのラベルを、元のスロットのラベルをスペースで区切ったラベル(例えば、「支店名 担当」)とする。テーブル生成部161は、1つにまとめられたスロットに設定される値を、元の2つのスロットに設定された2つの値を、順序を維持してスペースで区切った値とする(例えば、「「支店名」の値 「担当」の値」のように1つの値とする)。
また、テーブル生成部161は、テーブル122aのラベル変換を行う。スクリプト131によれば、条件スロット3の「案件コード(2)」に対応するラベルは「支店名」である。したがって、テーブル生成部161は、テーブル122aのラベル「案件コード」を「支店名」に変更する。スクリプト131によれば、条件スロット4の「案件名」に対応するラベルは「電話番号」である。したがって、テーブル生成部161は、テーブル122aのラベル「支店名 担当」を「電話番号」に変更する。テーブル122bは、テーブル生成部161によるテーブル122aに対するこれらのラベル変換の結果である。
図23は、テーブル生成の具体例(続き)を示す図である。
テーブル生成部161は、テーブル121b,122bに対して、スクリプト131を実行し、当該実行結果の列構造を、割り当て情報134に基づいて再変換することで目的テーブル143を生成する(ステップST33)。
具体的には、テーブル生成部161は、テーブル121b,122bに対して、スクリプト131を実行し、その実行結果として、テーブル142を生成する。テーブル生成部161は、テーブル142を目的テーブル記憶部140に格納する。テーブル142は、ラベルを含まなくてもよい。スクリプト131によれば、テーブル142は、列の先頭(図中の左端)からラベル「支店名」、「売上」および「電話番号」に相当するスロットを含む。
テーブル生成部161は、割り当て情報134に基づいてテーブル142の列構造を再変換する。割り当て情報134によれば、割り当て情報134の条件スロット5に相当するテーブル142の1列目のスロットはラベル「案件コード」のスロットに対応する。また、割り当て情報134の条件スロット6に相当するテーブル142の2列目のスロットはラベル「案件名」のスロットに対応する。更に、割り当て情報134の条件スロット7に相当するテーブル142の3列目のスロットはラベル「支店名 担当」のスロットに対応する。
このため、テーブル生成部161は、目的テーブル情報141で指定された列構造となるように、次のようにテーブル142の列構造を変換する。第1に、テーブル生成部161は、テーブル142の2番目のスロットを目的テーブルの1番目のスロットとする。第2に、テーブル生成部161は、テーブル142の3番目のスロットを区切り文字であるスペースの箇所で2つのスロットに分割する。そして、テーブル生成部161は、区切り文字の前方に対応するスロットを目的テーブルの2番目のスロットとし、区切り文字の後方に対応するスロットを目的テーブルの3番目のスロットとする。第3に、テーブル生成部161は、テーブル142の1番目のスロットを目的テーブルの4番目のスロットとする。こうして、テーブル生成部161は、テーブル142の列構造を再変換することで、目的テーブル143を生成する。テーブル生成部161は、生成した目的テーブル143を目的テーブル記憶部140に格納する。
そして、UI部150は、テーブル生成部161により生成された目的テーブル143をディスプレイ111に表示させる。ユーザは、ディスプレイ111の表示内容により、目的テーブル情報141に対して生成された目的テーブル143を確認することができる。
これにより、既存のスクリプトの再利用を容易にすることができる。例えば、既存のスクリプトは、スクリプト131,132で示されるように、特定のテーブルの列構造に合わせた記述となっている。このため、特定のテーブル以外の他のテーブルと既存のスクリプトで想定されている列構造に齟齬がある(例えば、列の順序、列名および列の数などが相違する)と、他のテーブルに既存のスクリプトを再利用できない。したがって、他の入力テーブルを用いて新たなテーブルを生成する際に、既存のスクリプトを再利用できる可能性は低い。
そこで、テーブル生成装置100は、既存のスクリプトに付加された入出力テーブルに関する制約モデルに従って、元テーブルの列構造を変換して入力し、得られた出力テーブルの列構造を目的構造に再変換することで、既存のスクリプトの再利用を容易にする。このため、ユーザは、目的テーブル情報141をテーブル生成装置100に入力することで、新たなスクリプトを記述しなくても、テーブル生成装置100に目的テーブル143を生成させることができる。また、過去に実行したスクリプトを流用できるケースが増加する。
更に、スロット割り当て部162によるスロット割り当て処理では、割り当てる順番によっては、スロット割り当ての候補数が大量になり組み合わせ爆発を引き起こす可能性が高まる。一例として、テーブル121,122、スクリプト131、制約モデル133および目的テーブル情報141において、条件スロット2から割り当て処理を行うことを考える。この場合、条件スロット2は、同一ラベルが出力テーブル側に1つなので、テーブル121,122の5つのスロット(ラベル「案件名」、「案件コード(1)」、「案件コード(2)」、「支店名」、「担当」のスロット)が候補となる。5つのスロットを割り当てるか割り当てないかを決める組み合わせは2の5乗=32通りである。次に、条件スロット7への割り当てを行うことを考える。条件スロット7は、同一ラベルが入力テーブル側に1つなので、目的テーブル情報141で示される4つのスロット(ラベル「案件名」、「支店名」、「担当」、「案件コード」のスロット)が候補となる。その組み合わせは、2の4乗=16通りである。先の割り当てと合わせると、組み合わせの数は、32×16=512通りである。同様に割り当てを継続すると、組み合わせが膨大になる。
そこで、スロット割り当て部162は、制約が厳しく、候補が少ない条件スロットから優先的に割り当てを行う。制約が厳しいとは、次の場合を指す。第1に、制約モデルにおいて、条件数が多い(該当の条件スロットに対応するノードに多くのエッジが接続されている)ことである。第2に、割り当て候補のスロットが少ないことである。第3に、ラベル単体の条件が指定されていること(例えば、目的テーブル情報のラベルに「平均」の文字列が含まれるなど)も挙げられる。
このように、スロット割り当て部162は、制約の厳しい条件スロットを優先的に割り当て対象とすることで、割り当て候補のスロットを効率的に削減できる。これにより、スロット割り当て部162によるスロット割り当ての組み合わせの数を減らせ、スロット割り当てを高速に行える。その結果、テーブル生成装置100による目的テーブルの生成を高速化できる。
また、スロット割り当て部162は、図15,16のステップST12,ST13や図19のステップST22,ST23で例示したように、割り当て対象の条件スロットと同じテーブルに属する割り当て済の他の条件スロットの割り当て元のテーブルとは異なるテーブルの割り当て候補のスロットを、割り当て候補から除外する。また、このような制限によって、割り当て候補を絞り込み可能な条件スロットを優先的に割り当て対象とする。このようにして、スロット割り当て部162は、割り当て候補のスロットを効率的に削減できる。これにより、スロット割り当て部162によるスロット割り当ての組み合わせの数を減らせ、スロット割り当てを高速に行える。その結果、テーブル生成装置100による目的テーブルの生成を高速化できる。
なお、第1の実施の形態の情報処理は、処理部12にプログラムを実行させることで実現できる。また、第2の実施の形態の情報処理は、CPU101にプログラムを実行させることで実現できる。プログラムは、コンピュータ読み取り可能な記録媒体113に記録できる。
例えば、プログラムを記録した記録媒体113を配布することで、プログラムを流通させることができる。また、プログラムを他のコンピュータに格納しておき、ネットワーク経由でプログラムを配布してもよい。コンピュータは、例えば、記録媒体113に記録されたプログラムまたは他のコンピュータから受信したプログラムを、RAM102やHDD103などの記憶装置に格納し(インストールし)、当該記憶装置からプログラムを読み込んで実行してもよい。
10 テーブル生成装置
11 記憶部
12 処理部
21 目的テーブル情報
22 目的テーブル
31 スクリプト
32 制約モデル
33 割り当て情報
41,42 元テーブル
43,44,45 テーブル

Claims (10)

  1. コンピュータが、
    第1の入力テーブルから第1の出力テーブルを生成するスクリプトと、前記第1の入力テーブルに含まれる列と前記第1の出力テーブルに含まれる列との間の制約条件を示す制約モデルと、生成すべき目的テーブルに含まれる列の列構造を示す目的テーブル情報と、前記目的テーブルの生成に使用する元テーブルとを取得し、
    前記元テーブルの列構造を変換した第2の入力テーブルと、前記目的テーブル情報で示される、前記目的テーブルの列構造を変換した第2の出力テーブルとが前記制約条件を満たすように、前記元テーブルを前記第2の入力テーブルに変換すると共に、前記第2の出力テーブルに含まれる列と、前記目的テーブル情報で示される、前記目的テーブルの列構造に含まれる列との間の対応関係を示す割り当て情報を生成し、
    前記スクリプトと前記第2の入力テーブルとから前記第2の出力テーブルを生成し、前記割り当て情報に基づいて前記第2の出力テーブルを前記目的テーブルに変換する、
    テーブル生成方法。
  2. 前記制約モデルは、前記第1の入力テーブルに含まれる列の位置を示す入力スロットと、前記第1の出力テーブルに含まれる列の位置を示す出力スロットと、前記入力スロットおよび前記出力スロットに対して規定された前記制約条件とを含み、
    前記コンピュータは更に、
    前記元テーブルに含まれる列の列名および前記目的テーブルに含まれる列の列名に基づいて、前記元テーブルの列および前記目的テーブルの列の間の制約関係を推定し、
    前記制約モデルが示す前記制約条件と前記推定した制約関係とに基づいて、前記元テーブルに含まれる列を前記入力スロットに割り当てると共に前記目的テーブルに含まれる列を前記出力スロットに割り当てる割り当て処理を行う、
    請求項1記載のテーブル生成方法。
  3. 前記割り当て処理では、前記入力スロットおよび前記出力スロットを含む複数のスロットのうち、他のスロットとの間に存在する制約の個数が多いスロットから優先して、前記元テーブルの列または前記目的テーブルの列の割り当てを決定する、
    請求項2記載のテーブル生成方法。
  4. 前記割り当て処理では、前記入力スロットおよび前記出力スロットを含む複数のスロットの中から1つのスロットを選択し、前記選択したスロットに割り当てる前記元テーブルの列または前記目的テーブルの列を、前記推定した制約関係に基づいて絞り込む、
    請求項2記載のテーブル生成方法。
  5. 前記元テーブルは複数存在し、前記入力スロットは複数存在し、
    前記割り当て処理では、前記複数の入力スロットのうち第1の入力スロットに対して前記複数の元テーブルの中の第1の列を割り当てた後、前記複数の入力スロットのうち第2の入力スロットに対して割り当てる前記複数の元テーブルの中の第2の列を、前記第1の列が属する元テーブルと前記第2の列が属する元テーブルの同一性に基づいて絞り込む、
    請求項2記載のテーブル生成方法。
  6. 前記元テーブルから前記第2の入力テーブルへの変換は、前記元テーブルに含まれる列の列名の変更および列順序の変更の少なくとも一方を含む、
    請求項1記載のテーブル生成方法。
  7. 前記元テーブルから前記第2の入力テーブルへの変換は、前記元テーブルに含まれる2以上の列を1つの列に統合することを含み、
    前記第2の出力テーブルから前記目的テーブルへの変換は、前記第2の出力テーブルに含まれる1つの列を2以上の列に分割することを含む、
    請求項1記載のテーブル生成方法。
  8. 前記制約条件は、ある列の列名と他の列の列名とが同一であること、および、前記ある列の列名と前記他の列の列名との差分が所定の語であることの少なくとも一方を含む、
    請求項1記載のテーブル生成方法。
  9. 第1の入力テーブルから第1の出力テーブルを生成するスクリプトと、前記第1の入力テーブルに含まれる列と前記第1の出力テーブルに含まれる列との間の制約条件を示す制約モデルと、目的テーブルの生成に使用する元テーブルとを記憶する記憶部と、
    前記目的テーブルに含まれる列の列構造を示す目的テーブル情報を取得し、前記元テーブルの列構造を変換した第2の入力テーブルと、前記目的テーブル情報で示される、前記目的テーブルの列構造を変換した第2の出力テーブルとが前記制約条件を満たすように、前記元テーブルを前記第2の入力テーブルに変換すると共に、前記第2の出力テーブルに含まれる列と、前記目的テーブル情報で示される、前記目的テーブルの列構造に含まれる列との間の対応関係を示す割り当て情報を生成し、前記スクリプトと前記第2の入力テーブルとから前記第2の出力テーブルを生成し、前記割り当て情報に基づいて前記第2の出力テーブルを前記目的テーブルに変換する処理部と、
    を有するテーブル生成装置。
  10. コンピュータに、
    第1の入力テーブルから第1の出力テーブルを生成するスクリプトと、前記第1の入力テーブルに含まれる列と前記第1の出力テーブルに含まれる列との間の制約条件を示す制約モデルと、生成すべき目的テーブルに含まれる列の列構造を示す目的テーブル情報と、前記目的テーブルの生成に使用する元テーブルとを取得し、
    前記元テーブルの列構造を変換した第2の入力テーブルと、前記目的テーブル情報で示される、前記目的テーブルの列構造を変換した第2の出力テーブルとが前記制約条件を満たすように、前記元テーブルを前記第2の入力テーブルに変換すると共に、前記第2の出力テーブルに含まれる列と、前記目的テーブル情報で示される、前記目的テーブルの列構造に含まれる列との間の対応関係を示す割り当て情報を生成し、
    前記スクリプトと前記第2の入力テーブルとから前記第2の出力テーブルを生成し、前記割り当て情報に基づいて前記第2の出力テーブルを前記目的テーブルに変換する、
    処理を実行させるテーブル生成プログラム。
JP2018101494A 2018-05-28 2018-05-28 テーブル生成方法、テーブル生成装置およびテーブル生成プログラム Active JP7060797B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2018101494A JP7060797B2 (ja) 2018-05-28 2018-05-28 テーブル生成方法、テーブル生成装置およびテーブル生成プログラム
US16/411,956 US11080258B2 (en) 2018-05-28 2019-05-14 Table generation based on scripts for existing tables

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2018101494A JP7060797B2 (ja) 2018-05-28 2018-05-28 テーブル生成方法、テーブル生成装置およびテーブル生成プログラム

Publications (2)

Publication Number Publication Date
JP2019207469A JP2019207469A (ja) 2019-12-05
JP7060797B2 true JP7060797B2 (ja) 2022-04-27

Family

ID=68613952

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2018101494A Active JP7060797B2 (ja) 2018-05-28 2018-05-28 テーブル生成方法、テーブル生成装置およびテーブル生成プログラム

Country Status (2)

Country Link
US (1) US11080258B2 (ja)
JP (1) JP7060797B2 (ja)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008197976A (ja) 2007-02-14 2008-08-28 Fujitsu Ltd 連結情報生成プログラム及び連結情報生成方法
JP2012027690A (ja) 2010-07-23 2012-02-09 Fujitsu Ltd 情報統合プログラム、装置及び方法
WO2016080413A1 (ja) 2014-11-19 2016-05-26 株式会社インフォメックス データ検索装置、プログラム、及び記録媒体
JP2017041006A (ja) 2015-08-18 2017-02-23 富士通株式会社 項目値対応づけ処理方法、項目値対応づけ処理プログラムおよび情報処理装置

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0367368A (ja) * 1989-08-04 1991-03-22 Nec Corp 複数表データ統合方式
JP4112282B2 (ja) 2002-05-28 2008-07-02 株式会社日本総合研究所 関係データベース構築装置および方法
US7136868B2 (en) * 2003-06-06 2006-11-14 Microsoft Corporation Database object script generation method and system
US20120078923A1 (en) * 2010-09-29 2012-03-29 Microsoft Corporation Scripting using new ordering algorithm
CN104657396B (zh) * 2013-11-25 2020-04-24 腾讯科技(深圳)有限公司 数据迁移方法及装置
US10546055B2 (en) * 2016-10-20 2020-01-28 Microsoft Technology Licensing, Llc Join with format modification by example
US10691655B2 (en) * 2016-10-20 2020-06-23 Microsoft Technology Licensing, Llc Generating tables based upon data extracted from tree-structured documents
US10394815B2 (en) * 2016-10-20 2019-08-27 Microsoft Technology Licensing, Llc Join with predictive granularity modification by example
US10713384B2 (en) * 2016-12-09 2020-07-14 Massachusetts Institute Of Technology Methods and apparatus for transforming and statistically modeling relational databases to synthesize privacy-protected anonymized data
US20180218368A1 (en) * 2017-01-31 2018-08-02 First Data Corporation Data transformation engine
GB201704973D0 (en) * 2017-03-28 2017-05-10 Gb Gas Holdings Ltd Data replication system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008197976A (ja) 2007-02-14 2008-08-28 Fujitsu Ltd 連結情報生成プログラム及び連結情報生成方法
JP2012027690A (ja) 2010-07-23 2012-02-09 Fujitsu Ltd 情報統合プログラム、装置及び方法
WO2016080413A1 (ja) 2014-11-19 2016-05-26 株式会社インフォメックス データ検索装置、プログラム、及び記録媒体
JP2017041006A (ja) 2015-08-18 2017-02-23 富士通株式会社 項目値対応づけ処理方法、項目値対応づけ処理プログラムおよび情報処理装置

Also Published As

Publication number Publication date
US11080258B2 (en) 2021-08-03
JP2019207469A (ja) 2019-12-05
US20190361862A1 (en) 2019-11-28

Similar Documents

Publication Publication Date Title
US9646030B2 (en) Computer-readable medium storing program and version control method
JP4141556B2 (ja) 構造化文書管理方法及びその実施装置並びにその処理プログラムを記録した媒体
US8104026B2 (en) Compiler register allocation and compilation
US7730099B2 (en) Storage and retrieval of richly typed hierarchical network models
US7877680B2 (en) Auto-generation and auto-versioning of a multi-sourced dynamic document
US10901804B2 (en) Apparatus and method to select services for executing a user program based on a code pattern included therein
US20070043693A1 (en) Systems and methods for storing a dataset having a hierarchical data structure in a database
CN106991100B (zh) 数据导入方法及装置
JP2018084907A (ja) ジョブ消費電力推定プログラム、並列処理装置およびジョブ消費電力推定方法
US5742809A (en) Database generic composite structure processing system
US10721305B2 (en) Presenting content using decoupled presentation resources
CN113688612A (zh) 文档间的内容多模式共享
JP5640432B2 (ja) 分散処理装置、分散処理プログラムおよび分散処理方法
JP7060797B2 (ja) テーブル生成方法、テーブル生成装置およびテーブル生成プログラム
CN112835638A (zh) 一种基于嵌入式应用程序的配置信息管理方法及装置
US7240074B2 (en) Storage medium having object-oriented program
CN113849183A (zh) 使用虚拟工件的字节码转换
JP2006065706A (ja) アプリケーション要件設計支援システムおよび方法
JP4846736B2 (ja) 並列処理支援装置
CN1828596A (zh) 在数据库内部表示的文件系统
CN112100989A (zh) 文档编辑方法、文档编辑系统以及计算机存储介质
CN112148746A (zh) 生成数据库表结构文档的方法、装置、电子装置和存储介质
JP4905989B2 (ja) メタデータ検索装置
Liu et al. A Parallel IFC Normalization Algorithm for Incremental Storage and Version Control
Hsieh et al. A method for web application data migration based on RESTful API: A case study of ezScrum

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20210210

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20210218

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210218

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20211209

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20211214

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20220210

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20220328

R150 Certificate of patent or registration of utility model

Ref document number: 7060797

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150