JP2019049815A - データ変換プログラム、データ変換方法、およびデータ変換装置 - Google Patents

データ変換プログラム、データ変換方法、およびデータ変換装置 Download PDF

Info

Publication number
JP2019049815A
JP2019049815A JP2017173099A JP2017173099A JP2019049815A JP 2019049815 A JP2019049815 A JP 2019049815A JP 2017173099 A JP2017173099 A JP 2017173099A JP 2017173099 A JP2017173099 A JP 2017173099A JP 2019049815 A JP2019049815 A JP 2019049815A
Authority
JP
Japan
Prior art keywords
data
processing
conversion
processes
unit
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.)
Granted
Application number
JP2017173099A
Other languages
English (en)
Other versions
JP6930314B2 (ja
Inventor
唯 野間
Yui Noma
唯 野間
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 JP2017173099A priority Critical patent/JP6930314B2/ja
Priority to US16/121,794 priority patent/US10896026B2/en
Publication of JP2019049815A publication Critical patent/JP2019049815A/ja
Application granted granted Critical
Publication of JP6930314B2 publication Critical patent/JP6930314B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • GPHYSICS
    • G05CONTROLLING; REGULATING
    • G05BCONTROL OR REGULATING SYSTEMS IN GENERAL; FUNCTIONAL ELEMENTS OF SUCH SYSTEMS; MONITORING OR TESTING ARRANGEMENTS FOR SUCH SYSTEMS OR ELEMENTS
    • G05B19/00Programme-control systems
    • G05B19/02Programme-control systems electric
    • G05B19/04Programme control other than numerical control, i.e. in sequence controllers or logic controllers
    • G05B19/042Programme control other than numerical control, i.e. in sequence controllers or logic controllers using digital processors
    • G05B19/0423Input/output
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • G06N5/022Knowledge engineering; Knowledge acquisition
    • G06N5/025Extracting rules from data

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)
  • Computing Systems (AREA)
  • Artificial Intelligence (AREA)
  • Evolutionary Computation (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Automation & Control Theory (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Medical Informatics (AREA)
  • Stored Programmes (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

【課題】データ変換に用いる処理の探索時間を低減することを目的とする。
【解決手段】データ変換プログラムは、コンピュータに、第1データと、第1データの変換後データである第2データを取得し、処理ごとに定義された処理時間を示す属性に基づいて、第1データを第2データに変換する際に用いられる複数の処理の組み合わせを探索し、探索した複数の処理の組み合わせを表示する処理を実行させる。
【選択図】図9

Description

本発明は、データ変換プログラム、データ変換方法、およびデータ変換装置に関する。
企業が販売戦略を検討する際に、購買履歴等のデータ分析が行われる。例えば、支社や支部を多く持つ企業は、地域や顧客毎に、どのような商品が売れているのか分析し、販売戦略を練る。しかし、企業の営業拠点や購買部門によって、分析に用いるための購買履歴等のデータのファイルフォーマットや標記方法が異なる場合があるため、ファイルフォーマットとデータ表記の統一が行われる。また、気象データのような公開データと組み合わせて販売推移の分析を行う場合、自社のデータと公開データとの、ファイルフォーマットとデータ表記の統一が行われる。
関連する技術として、データ変換操作の空間を効率的に検索して、望ましい変換を実行するプログラムを生成するシステムが開示されている(例えば、非特許文献1を参照)。
また、関連する技術として、変換を発見するシステムであって、複数行、非機能、および間接変換を発見するためにWebテーブルを活用するシステムが開示されている(例えば、非特許文献2を参照)。
また、関連する技術として、グラフ上の2頂点間の最短経路を求めるアルゴリズムであるDijkstra法が用いられている(例えば、非特許文献3を参照)。
また、関連する技術として、各頂点からゴールまでの距離の推定値を返すヒューリスティック関数を用いたグラフ探索アルゴリズムであるA*法が用いられている(例えば、非特許文献4を参照)。
米国特許出願公開第2016/0299744号明細書 米国特許出願公開第2017/0075661号明細書 米国特許出願公開第2017/0161027号明細書
Zhongjun Jin et. al., "Foofah: Transforming Data By Example," SIGMOD’17. Z. Abedjan, et. al. "DataXFormer: A Robust Transformation Discovery System." ICDE 2016. Dijkstra, E. W. (1959). "A note on two problems in connexion with graphs". Numerische Mathematik. 1: 269-271. Hart, P. E.; Nilsson, N. J.; Raphael, B. "A Formal Basis for the Heuristic Determination of Minimum Cost Paths" (1968),IEEE Transactions on Systems Science and Cybernetics SSC4. 4 (2): 100-107.
変換前データに対して複数の処理を適用することにより変換後データが生成される場合、複数の処理を実行した際の処理の探索時間をより短くすることが好ましい。
例えば、データ変換の際に、変換前データ内に存在しない情報を用いる場合に、変換前データ以外のデータ(外部データ)を用いる場合がある。しかし、外部データを参照する処理は、外部データを参照しない処理と比べて処理時間が長い。よって、外部データを参照する処理数が増加するに応じて、データ変換に用いる処理の探索時間が増加する。
1つの側面として、本発明は、データ変換に用いる処理の探索時間を低減することを目的とする。
1つの態様では、データ変換プログラムは、コンピュータに、第1データと、前記第1データの変換後データである第2データを取得し、処理ごとに定義された処理時間を示す属性に基づいて、前記第1データを前記第2データに変換する際に用いられる複数の処理の組み合わせを探索し、探索した前記複数の処理の組み合わせを表示する処理を実行させる。
1つの側面によれば、データ変換に用いる処理の探索時間を低減することができる。
データ変換処理の比較例を示す図である。 データ変換システムの一例を示す図である。 処理種別テーブルの一例を示す図である。 処理の組み合わせの一例を示す図である。 データ変換処理手順を示す図である。 変換前の表示例を示す図である。 変換処理結果の表示例を示す図である。 実施形態の処理の流れの一例を示すフローチャート(その1)である。 実施形態の処理の流れの一例を示すフローチャート(その2)である。 実施形態の処理の流れの一例を示すフローチャート(その3)である。 実施形態の処理の流れの一例を示すフローチャート(その4)である。 図8BのステップS113におけるneighborFunc関数の処理の流れの第1の例を示すフローチャートである。 distbetween処理の流れの一例を示すフローチャートである。 図9のステップS209におけるFIFO処理の第1の例を示すフローチャートである。 図8DのステップS125の処理の一例を示すフローチャートである。 図8DのステップS126の処理の一例を示すフローチャートである。 図8BのステップS113におけるneighborFunc関数の処理の流れの第2の例を示すフローチャートである。 図9のステップS209におけるFIFO処理の第2の例を示すフローチャートである。 データ変換装置のハードウェア構成の一例を示す図である。
<実施形態のシステムの全体構成の一例>
以下、図面を参照して、実施形態について説明する。図1は、データ変換処理の比較例を示す。図1に示すように、比較例の処理を行う情報処理装置が、変換前データに対して、複数の処理を実行することにより変換後データを生成する。中間データは、変換前データから変換後データに変換する過程で生成されるデータであり、変換前に少なくとも一つの処理が適用されたデータである。
図1に示す変換前データは、電話番号であり、"Tel:"、"("、")"等の記号を含む。また、変換後データは、"XXX-XXX-XXXX"という形式の電話番号である。図1に示す矢印は、処理を示す。また、太い矢印は、重い処理を示し、細い矢印は、軽い処理を示す。重い処理は、例えば、処理にかかる時間が所定時間以上である処理である。また、軽い処理は、例えば、処理にかかる時間が所定時間未満である処理である。重い処理は、例えば、外部データを参照する処理である。
図1に示すように、変換前データに対して、複数の処理を実行して変換後データを作成する場合、実行される処理の組み合わせが多数になる可能性がある。特に、処理の組み合わせに重い処理を含む場合、処理の組み合わせの探索にかかる時間が長くなる。
<データ変換システムの一例>
図2は、データ変換システムの一例を示す図である。データ変換システムは、データ変換装置1と、表示装置2とを含む。データ変換装置1は、取得部11と探索部12とFIFO処理部13と変換部14と変換前データ記憶部15と変換後データ記憶部16と処理情報記憶部17と設定部18と表示制御部19とを含む。データ変換装置1は、コンピュータの一例である。
なお、変換部14と変換前データ記憶部15と変換後データ記憶部16と処理情報記憶部17は、データ変換装置1とは別の装置に含まれていてもよい。
取得部11は、変換前データ記憶部15に記憶される変換前データを取得する。また、取得部11は、該変換前データを変換したデータであり、且つ変換後データ記憶部16に記憶されている変換後データを取得する。取得部11が取得する変換前データは、変換前データ記憶部15に記憶される変換前データの一部であってよい。取得部11が取得する変換後データは、取得した変換前データに対応する変換後のデータであり、データ変換装置1に対するユーザの入力操作により、予め記憶されているとする。変換前データは、第1データの一例である。変換後データは、第2データの一例である。
探索部12は、処理ごとに定義された処理時間を示す属性に基づいて、変換前データを変換後データに変換する際に用いる複数の処理の組み合わせを探索する。探索部12は、探索の際に、取得部11が取得した変換前データおよび変換後データを用いる。
FIFO処理部13は、属性を示す数値を処理順に格納するキューを用いて、FIFO処理を実行する。
変換部14は、複数の処理の組み合わせに基づいて、変換対象データを変換する。変換対象データは、例えば、変換前データ記憶部15に記憶される全データである。
変換前データ記憶部15は、変換前データを記憶する。変換後データ記憶部16は、変換後データを記憶する。変換後データの一部は、予めユーザから入力される。残りの変換後データは、変換部14の変換により得られるデータである。
処理情報記憶部17は、後述する処理種別テーブルを記憶する。設定部18は、後述する処理種別テーブルに、処理毎の属性を設定する。また、処理情報記憶部17は、探索部12により探索された処理の組み合わせを記憶する
表示制御部19は、探索した複数の処理の組み合わせを表示装置2に表示する。また、表示制御部19は、変換部14が変換前データを変換して得られた変換後データを表示する。
図3は、処理種別テーブルの一例を示す図である。図3に示すように、処理種別テーブルでは、処理種別毎に、重い処理か軽い処理かを示す属性が対応づけられている。図3に示す例では、重い処理に"1"が対応づけられ、軽い処理に"0"が対応づけられている。例えば、分割処理は、変換前データである文字列のうち「,」または「:」が存在する位置で分割を行う処理であり、比較的短時間で実行可能であるため、軽い処理に分類されている。
図3に示す例では、重い処理は、「外部データ参照」のみであるが、重い処理として他の処理が設定されていてもよい。例えば、重い処理として、表の縦と横を入れ換える転置処理が設定されていてもよい。図3に示す処理種別毎の属性は、例えば、ユーザによって予め定義される。
外部データは、例えば、変換前データ、または中間データに、変換後データが含まれていない場合に用いられる。例えば、"ABCLtd."を"ABCLimited"に変換する場合、"Ltd."が"Limited."の略であることを示す外部データが用いられる。外部データは、変換前データ、中間データおよび変換後データ以外のデータであり、データ変換装置1に記憶されていてもよく、他の情報処理装置から取得されたデータであってもよい。
また、設定部18が、スタートノード(変換前データ)に対して処理を実行し、処理時間を計測することにより、処理時間に基づいて重い処理か軽い処理かを判定し、処理種別テーブルに"1"または"0"を設定してもよい。設定部18は、例えば、処理種別毎に処理時間を測定し、全処理の処理時間の平均値μおよび標準偏差σを算出する。そして、設定部18は、例えば、各処理種別の処理時間が、例えばμ+2σ以上であれば処理が重い処理であると判定し、属性に"1"を設定する。また、設定部18は、例えば、μ+2σ未満であれば処理が軽い処理であると判定し、属性に"0"を設定する。
設定部18は、各処理が重い処理であるか否かをユーザに問い合わせてもよい。例えば、表示制御部19が、表示装置2に図3に示す処理種別テーブルを表示させ、ユーザに重い処理か否かの選択を促すメッセージを表示させる。そして、設定部18は、ユーザからの入力に基づいて、属性を設定してもよい。
また、設定部18は、処理種別毎の処理時間を計測し、処理の種別毎の処理時間の平均値を算出し、処理種別毎の処理時間の平均値(平均処理時間)を記録してもよい。そして、表示制御部19は、図3に示すように、平均処理時間を表示してもよい。また、表示制御部19は、平均処理時間が大きい順に処理種別を表示してもよい。そして、設定部18は、ユーザからの入力に基づいて、属性を設定してもよい。
図4は、処理の組み合わせの例を示す図である。図4に示す処理の組み合わせは、処理番号と処理種別とパラメータとを含む。処理番号は、変換の際に実行される順序を示す。パラメータは、例えばJavaScript(登録商標) Object Notation(JSON)形式で表記される。変換ロジックは、処理の系列として保持され、任意のシリアライズ機能を用いて保持される。
探索部12は、探索処理を実行した後、処理の組み合わせを変換部14に送るとともに、例えば、図4に示す形式で、処理情報記憶部17に記憶する。
図5は、データ変換処理手順を示す図である。データ変換装置1は、変換前データに対して、複数の処理を実行することにより変換後データを出力する。中間データは、変換途中のデータを示す。図5に示すように、変換データおよび中間データの上部には、テーブル形式で示したデータと、FIFO処理で用いられるキューを示している。
探索部12は、例えば、変換前データと変換後データの例を取得し、変換前データと変換後データに変換する際に用いる処理の組み合わせを探索する。探索部12は、処理が重い処理である場合、キューに"1"を挿入し、処理が軽い処理である場合、FIFOのキューに"0"を挿入する。
図5に示す例では重い処理が外部データ参照処理であるとする。外部データ参照処理を実行する場合、データに外部データが付加されるため、テーブルの列が増加する。
探索部12は、処理を探索する際に、重い処理を示す"1"がFIFOに含まれておらず、かつ、探索中のデータに変換後データが含まれていない場合、重い処理を処理の候補に用いる。すなわち、重い処理が処理の候補から除外される可能性がある点で図1に示す比較例とは異なる。
図5に示す例では、中間データa01から中間データb01に変換するための重い処理、および中間データb04から中間データc01に変換するための重い処理が、処理の候補から除外される。
実施形態のデータ変換装置1は、所定条件を満たす場合に、重い処理を処理の候補に用いるが、所定条件を満たさない場合、重い処理を処理の候補から除外するため、処理の探索にかかる時間を低減することができる。
図6は、変換前の表示例を示す図である。図6に示す例では、変換前データおよび変換後データが電話番号である。変換前データは、"Tel:"、"("、")"等の記号を含む電話番号である。また、変換後データは、"XXX-XXX-XXXX"という形式で示される電話番号である。
表示制御部19は、例えば、全ての変換前データを表示し、ユーザに一定数の変換後データの入力を促すメッセージを表示する。そして、ユーザから、変換後データである電話番号が4つ入力されたとする。
そして、図6に示す例では、取得部11は、変換前データである4つの電話番号と、変換前データに対応する変換後データである4つの電話番号を取得する。そして、探索部12は、取得された変換前データと変換後データに基づいて、変換に用いる処理の組み合わせを探索する。
図7は、変換処理結果の表示例を示す図である。探索部12は、取得した変換前データと変換後データに基づいて、変換に用いる変換ロジックを出力する。表示制御部19は、探索部12から出力された変換ロジックを表示装置2に表示する。
図7に示すように、変換ロジックは、複数の処理(関数)の組み合わせである。図7に示す変換ロジックは、処理f1、f2、およびf3の組み合わせである。
さらに、表示制御部19は、変換部14が変換して得られた変換後データを表示する。図7に示す例では、表示制御部19は、変換前データに対応する全ての変換後データを表示する。
なお、変換前データまたは中間データの型は文字列だけでなく、数値型や日付型などが含まれていてもよい。本実施形態のデータ変換装置1は、全ての型を文字列型へ変換してから変換を実行することを想定している。
<実施形態の処理の流れの一例>
図8A〜図8Dは、実施形態の処理の流れの一例を示すフローチャートである。本実施形態の処理では、スタートノードを変換前データとし、ゴールノードを変換後データとして、グラフ探索アルゴリズムとしてのA*法を用いた探索を行う。該探索には、他の探索手法が適用されてもよい。
取得部11は、変換前データ"start"、変換後データ"end"、ヒューリスティック関数h、および近傍ノード出力関数neighborFuncを取得する(ステップS101)。
探索部12は、FIFOに用いる空のキュー"F"にM個の0を挿入する(ステップS102)。探索部12は、集合"openSet"を空にして、対("start",F)を挿入し、集合"closedSet"を空集合とする(ステップS103)。集合"openSet"は、計算中のノードを格納する。集合"closedSet"は、計算済みのノードを格納する。
探索部12は、連想配列"cameFrom"と、連想配列"cameFromWithOp"とを空にする(ステップS104)。連想配列"cameFrom"は、スタートノードからゴールノードまでの経路中のノード(データ)を格納する。連想配列"cameFromWithOp"は、スタートノードからゴールノードに到達するまでに実施される処理の候補を格納する。
探索部12は、連想配列"gScore"、および連想配列"fSrore"を空配列とし、gScore[("start",F)]に0を設定する(ステップS105)。探索部12は、ヒューリスティック関数hを用いて、fScore[("start",F)]にh("start","end")を設定する(ステップS106)。
ヒューリスティック関数hは、取得したノード間の最小コストの推定値を返す関数である。例えば、h("start","end")は、"start"から"end"に到達するまでの最小コストの推定値を返す。ヒューリスティック関数hには、例えば、非特許文献1に開示されている"Algorithm4:Table Edit Distance Algorithm"を適用してもよい。
探索部12は、openSetが空であるか判定する(ステップS107)。openSetが空である場合(ステップS107でYES)、失敗フラグであるブール値Falseを出力し(ステップS111)、処理を終了する。また、表示制御部19は、探索処理が失敗したことを表示装置2に表示してもよい。
openSetが空でない場合(ステップS107でNO)、探索部12は、openSetの中で、fScoreの値が最も小さい対(node,F)を探し、データ"current_node"をnodeとし、キュー"current_F"をFとする(ステップS108)。
探索部12は、"current_node"が"end"と同じであるか判定する(ステップS109)。ステップS109でYESである場合、ゴールノードまで探索したこととなるため、探索部12は、cameFromとcameFromWithOpとcurrent_Fとを処理情報記憶部17に記憶する(ステップS110)。
ステップS109でNOである場合、処理は「B」からステップ112に移行する。探索部12は、openSetから(current_node,current_F)を取り除き、closedSetに(current_node,current_F)を追加する(ステップS112)。探索部12は、neighborFunc(current_node,current_F,"end")を計算し、出力された対NLを対のリスト"NL"とし、出力されたリストoperatorListを処理のリスト"operatorList"とする(ステップS113)。ステップS113の処理について、詳細は後述する。
探索部12は、NLが空であるか判定する(ステップS114)。NLが空である場合(ステップS114でYES)、処理は「A」からステップS107に移行する。
NLが空でない場合(ステップS114でNO)、探索部12は、NLから取り出した対を(neighbor_node,neighbor_F)とし、operatorListから取り出した処理をoiとする(ステップS115)。
探索部12は、(neighbor_node,neighbor_F)がclosedSetに存在するか判定する(ステップS116)。ステップS116でYESの場合、処理は、ステップS114に戻る。
ステップS116でNOの場合、処理は、「D」からステップS117に移行する。探索部12は、(neighbor_node,neighbor_F)がopenSetに存在するか判定する(ステップS117)。ステップS117でNOの場合、探索部12は、(neighbor_node, neighbor_F)をopenSetに追加する(ステップS118)。
ステップS117でYESの場合、またはステップS118の処理後、探索部12は、スカラー値tentative_gScoreをgScore[(current_node,current_F)]+dist_between(current_node,neighbor_node)とする(ステップS119)。dist_between関数に関して、詳細は後述する。
探索部12は、gScore[(neighbor_node, neighbor_F)]がtentative_gScore以下であるか判定する(ステップS120)。ステップS120でYESの場合、処理は「C」からステップS114に戻る。
ステップS120でNOの場合、探索部12は、cameFrom[(neighbor_node,neighbor_F)]を(current_node,current_F)とする(ステップS121)。すなわち、ステップS121の処理は、(current_node,current_F)に処理を適用した結果、neighbor_node,neighbor_Fが得られることを示す。
探索部12は、cameFromWithOp[(neighbor_node,neighbor_F)]をoiとする(ステップS122)。なお、cameFromWithOp[(neighbor_node,neighbor_F)]は、neighbor_nodeに適用された処理を示す。すなわち、ステップS122の処理は、あるノード、キューの対に処理oiを作用させた結果、(neighbor_node,neighbor_F)が得られることを示す。
探索部12は、gScore[(neighbor_node, neighbor_F)]をtentative_gScoreとする(ステップS123)。
探索部12は、fScore[(neighbor_node,neighbor_F)]をgScore[(neighbor_node,neighbor_F)]+h(neighbor_node,"end")とする(ステップS124)。ステップS124の処理後、処理は、「C」からステップS114に移行する。
図8Aにおいて、ステップS110の処理後、処理は、「E」から、ステップS125に移行する。探索部12は、cameFromとcameFromWithOpとcurrent_Fとに基づいて、変換対象データdの変換に用いる処理の組み合わせを出力する(ステップS125)。ステップS125の処理について、詳細は後述する。
変換部14は、変換対象データdの変換に用いる処理の組み合わせを用いて、変換対象データdを変換する(ステップS126)。
表示制御部19は、変換対象データdの変換に用いた処理の組み合わせ(変換ロジック)および変換後データを表示装置2に表示する(ステップS127)。表示制御部19は、例えば、図7に示す形式で、変換ロジックおよび変換後データを表示装置2に表示する。
図9は、図8BのステップS113で用いられるneighborFunc関数の処理の流れの第1の例を示す。neighborFunc関数は、図8BのステップS113で呼び出される関数であり、探索部12により実現される。
探索部12は、neighborFunc関数にデータ"current_node"、キュー"current_F"、データ"end"を入力する(ステップS201)。探索部12は、対のリスト"NL"と、処理のリスト"operatorList"を空にする(ステップS202)。探索部12は、事前定義された処理のリストLのコピーをtmp_Lとする(ステップS203)。
探索部12は、current_Fに1が含まれるか判定する(ステップS204)。current_Fに1が含まれる場合、探索対象のノード(current_node)に適用される処理から所定回数(第1回数)前の処理までに、重い処理が含まれていることを意味する。所定回数は、キューに格納される数値の数に等しい。
ステップS204でNOの場合、current_nodeが"end"の要素を含むか判定する(ステップS205)。ステップS205でNOの場合、探索部12は、tmp_Lに「外部データ参照」を追加する(ステップS206)。なお、図3に示す処理種別テーブルにおいて、「外部データ参照」以外の重い処理が存在する場合、ステップS206において、探索部12は、tmp_Lに「外部データ参照」以外の重い処理も追加する。
すなわち、探索部12は、重い処理が、直前に探索した処理から所定回数前までの処理に含まれておらず、かつ、探索対象データに変換後データが含まれていない場合、探索対象データに適用する処理の候補に重い処理を用いる。
探索部12は、tmp_Lが空であるかを判定する(ステップS207)。tmp_Lが空でない場合(ステップS207でNO)、探索部12は、tmp_Lのうちのいずれかの処理oiを取り出す(ステップS208)。探索部12は、処理oiとキューFをFIFO処理部13に渡す。そして、FIFO処理部13は、FIFO処理を実行する(ステップS209)。FIFO処理部13は、FIFO処理を実行し、更新されたキューF2を出力する。ステップS209のFIFO処理について、詳細は後述する。
探索部12は、FIFO処理において更新されたキューF2を取得し、NLに、対(oi(current_node),F2)を追加する(ステップS210)。探索部12は、operatorListにoiを追加する(ステップS211)。ステップS211の処理後、処理は、ステップS207に移行する。
tmp_Lが空である場合(ステップS207でYES)、探索部12は、neighborFunc関数の出力値をNL,operatorListとする(ステップS212)。
図9に示す処理において、ステップS210で処理oiが実行されるが、処理oiが重い処理であった場合、探索処理の時間が増加する。データ変換装置1は、ステップS204〜S206において、所定の条件を満たさない場合に外部データ参照処理(重い処理)を適用しないため、探索処理を高速化することができる。また、図9に示す例を用いた場合、ステップS204の条件により、重い処理の実行間隔を所定回数以上とすることができる。
図10は、distbetween処理の流れの一例を示すフローチャートである。distbetween処理は、図8CのステップS119で呼び出される関数である。distbetween処理は、探索部12により実現される。
探索部12は、distbetween処理の出力値に1を設定する(ステップS301)。distbetween処理の出力値は、入力した2つノード間の距離(コスト)を示す。なお、本実施形態では、distbetween処理の出力値は1であるが入力したノードに応じて異なる値であってもよい。
図11は、図9のステップS209におけるFIFO処理の第1の例を示すフローチャートである。FIFO処理部13は、処理oiとFIFOのキューFを取得する(ステップS401)。FIFO処理部13は、FのコピーをF2とする(ステップS402)。
FIFO処理部13は、oiが外部データ参照処理であるか判定する(ステップS403)。なお、外部データ参照処理以外にも重い処理が存在する可能性がある。よって、ステップS403では、FIFO処理部13は、例えば、図3の処理種別テーブルを参照して、oiが重い処理であるか判定してもよい。
oiが外部データ参照処理でない場合(ステップS403でNO)、FIFO処理部13は、F2から、最も先に入力された要素を一つ取り出し、F2に0を追加する(ステップS404)。oiが外部データ参照処理である場合(ステップS403でYES)、F2から、最も先に入力された要素を一つ取り出し、F2に1を追加する(ステップS404)。
FIFO処理部13は、更新されたF2を探索部12に出力する(ステップS406)。
図12は、図8DのステップS125の処理の一例を示すフローチャートである。探索部12は、処理情報記憶部17に記憶した連想配列cameFrom、cameFromWithOpを取得し、変換後データ記憶部16から、変換後データdを取得する(ステップS501)。探索部12は、リストtotal_opを空にする
探索部12は、current_nodeをdとする(ステップS503)。探索部12は、(current_node,current_F)がcameFromに含まれるか判定する(ステップS504)。
ステップS504でYESの場合、処理opをcameFromWithOp[(current_node,current_F)]とする(ステップS505)。探索部12は、cameFrom[(current_node, current_F)]を(current_node2,current_F2)とする(ステップS506)。探索部12は、current_node2をcurrent_nodeとし、current_F2をcurrent_Fとする(ステップS507)。探索部12は、total_opの末尾にopを追加する(ステップS508)。
ステップS504でNOの場合、探索部12は、total_opを変換部14に出力する(ステップS509)。
以上の処理により、探索部12は、変換後データdから変換前データまで逆向きに経路を辿ることにより、処理の組み合わせ(変換ロジック)を示すtotal_opを生成し、変換部14に出力する。total_opには、変換処理の実行順とは逆の順序で処理が格納される。
図13は、図8DのステップS126の処理の一例を示すフローチャートである。変換部14は、探索部12から処理のリストtotal_opを取得し、変換前データ記憶部15から変換前データdを取得する(ステップS601)。変換部14は、total_opが空であるか判定する(ステップS602)。
total_opが空でない場合(ステップS602でNO)、変換部14は、total_opの末尾から処理opを取り出す(ステップS603)。ステップS603において、変換部14は、処理番号順に、処理opを取り出す。
変換部14は、dにopを実行したデータをd2とする(ステップS604)。変換部14は、d2をdとする(ステップS605)。total_opが空である場合(ステップS602でYES)、変換部14は、dを出力する(ステップS606)。ステップS616で、変換部14が出力するデータdは変換後データである。変換部14は、変換後データを変換後データ記憶部16に記憶するとともに、表示制御部19に出力する。
図14は、図8BのステップS113におけるneighborFunc関数の処理の流れの第2の例を示すフローチャートである。図14において、ステップS204’の処理が図9に示す処理と異なる。図14において、ステップS204’以外の処理は、図9と同様である。
ステップS204’では、探索部12は、current_Fに1がk回(第2回数)以上含まれるか判定する。current_Fに1が含まれる場合、探索中のノードに適用される処理から所定回数(第1回数)前の処理までに、重い処理が含まれていることを意味する。所定回数は、キューに格納される数値の数に等しい。
ステップS204’でNOの場合、current_nodeが"end"の要素を含むか判定する(ステップS205)。ステップS205でNOの場合、探索部12は、tmp_Lに「外部データ参照」を追加する(ステップS206)。
すなわち、探索部12は、重い処理が、直前に探索した処理から所定回数前までの処理にk回以上含まれておらず、かつ、探索対象データに変換後データが含まれていない場合、探索対象データに適用する処理の候補に重い処理を用いる。
図15は、図9のステップS209におけるFIFO処理の第2の例を示すフローチャートである。図15に示す処理は、ステップS404’およびステップS405’の処理が図9に示す処理と異なる。
ステップS404’において、探索部12は、F2の格納要素数を1つ増加しF2に0を追加する。また、ステップS405’において、探索部12は、F2の格納要素数を1つ増加しF2に1を追加する。ステップS404’およびS405’において、探索部12は、キューF2から要素を取り出す処理を行わない。よって、F2には、すでに追加された要素が全て含まれている。
図15の処理を用いた場合、探索部12は、図9のステップS204〜206において、探索部12は、重い処理が、探索済みの全処理に含まれておらず、かつ、探索対象データに変換後データが含まれていない場合、探索対象データの処理の候補に重い処理を用いることとなる。よって、データ変換装置1は、図15の処理を用いた場合、データ探索に用いられる全処理における重い処理を低減することができる。
<データ変換装置のハードウェア構成の一例>
次に、図16の例を参照して、データ変換装置1のハードウェア構成の一例を説明する。図16の例に示すように、バス100に対して、プロセッサ111とRandom Access Memory(RAM)112とRead Only Memory(ROM)113とが接続される。また、該バス100に対して、補助記憶装置114と媒体接続部115と通信インタフェース116と入力インタフェース118とが接続される。
プロセッサ111は、RAM112に展開されたプログラムを実行する。実行されるプログラムとしては、実施形態における処理を行うデータ変換プログラムが適用されてもよい。
ROM113は、RAM112に展開されるプログラムを記憶する不揮発性の記憶装置である。補助記憶装置114は、種々の情報を記憶する記憶装置であり、例えばハードディスクドライブや半導体メモリ等が適用されてもよい。補助記憶装置114に実施形態の処理を行うデータ変換プログラムが記録されていてもよい。
媒体接続部115は、可搬型記録媒体117と接続可能に設けられている。可搬型記録媒体117には、可搬型のメモリや光学式ディスク(例えば、Compact Disc(CD)やDigital Versatile Disc(DVD))、半導体メモリ等が適用されてもよい。可搬型記録媒体117に実施形態の処理を行うデータ変換プログラムが記録されていてもよい。
図2に示す変換前データ記憶部15、変換後データ記憶部16および処理情報記憶部17は、RAM112や補助記憶装置114等により実現されてもよい。図2に示す取得部11は、通信インタフェース116または入力インタフェース118により実現されてもよい。入力インタフェース118は、例えば、マウス、キーボード、またはタッチパネルディスプレイである。図2に示す探索部12、FIFO処理部13、変換部14、設定部18、および表示制御部19は、RAM112に展開されたデータ変換プログラムをプロセッサ111が実行することにより実現されてもよい。
RAM112、ROM113、補助記憶装置114および可搬型記録媒体117は、何れもコンピュータ読み取り可能な有形の記憶媒体の一例である。これらの有形な記憶媒体は、信号搬送波のような一時的な媒体ではない。
<その他>
本実施形態は、以上に述べた実施の形態に限定されるものではなく、本実施形態の要旨を逸脱しない範囲内で種々の構成または実施形態を取ることができる。
1 データ変換装置
2 表示装置
11 取得部
12 探索部
13 FIFO処理部
14 変換部
15 変換前データ記憶部
16 変換後データ記憶部
17 処理情報記憶部
18 設定部
19 表示制御部
100 バス
111 プロセッサ
112 RAM
113 ROM
114 補助記憶装置
115 媒体接続部
116 通信インタフェース
117 可搬型記録媒体
118 入力インタフェース

Claims (9)

  1. コンピュータに、
    第1データと、前記第1データの変換後データである第2データを取得し、
    処理ごとに定義された処理時間を示す属性に基づいて、前記第1データを前記第2データに変換する際に用いられる複数の処理の組み合わせを探索し、
    探索した前記複数の処理の組み合わせを表示する
    処理を実行させるデータ変換プログラム。
  2. 前記コンピュータに、
    前記複数の処理の組み合わせに基づいて、変換対象データを変換する
    処理を実行させることを特徴とする請求項1記載のデータ変換プログラム。
  3. 前記コンピュータに、
    複数の処理の組み合わせに含まれる処理を、実行処理順に探索する際に、処理時間が所定値より長いことを示す属性が定義されたいずれかの処理が、直前に探索した処理から第1回数前までの処理に含まれておらず、かつ、探索対象データに前記第2データが含まれていない場合、前記探索対象データに適用する処理の候補に前記いずれかの処理を用いる
    処理を実行させることを特徴とする請求項1または2記載のデータ変換プログラム。
  4. 前記コンピュータに、
    複数の処理の組み合わせに含まれる処理を、実行処理順に探索する際に、処理時間が所定値より長いことを示す属性が定義されたいずれかの処理が、直前に探索した処理から第1回数前までの処理に第2回数以上含まれておらず、かつ、探索対象データに前記第2データが含まれていない場合、前記探索対象データに適用する処理の候補に前記いずれかの処理を用いる
    処理を実行させることを特徴とする請求項1または2記載のデータ変換プログラム。
  5. 前記コンピュータに、
    複数の処理の組み合わせに含まれる処理を、実行処理順に探索する際に、処理時間が所定値より長いことを示す属性が定義されたいずれかの処理が、探索済みの全処理に含まれておらず、かつ、探索対象データに前記第2データが含まれていない場合、前記探索対象データに適用する処理の候補に前記いずれかの処理を用いる
    処理を実行させることを特徴とする請求項1または2記載のデータ変換プログラム。
  6. 前記コンピュータに、
    処理の種別毎に処理時間を計測し、前記処理時間に基づいて、前記属性を設定する
    処理を実行させることを特徴とする請求項1乃至5記載のデータ変換プログラム。
  7. 前記コンピュータに、
    処理の種別毎に処理時間を計測し、処理の種別毎の処理時間の平均値を算出し、前記処理の種別と前記処理時間の平均値とを表示し、ユーザからの入力に基づいて、前記属性を設定する
    処理を実行させることを特徴とする請求項1乃至5記載のデータ変換プログラム。
  8. コンピュータが、
    第1データと、前記第1データの変換後データである第2データを取得し、
    処理ごとに定義された処理時間を示す属性に基づいて、前記第1データを前記第2データに変換する際に用いられる複数の処理の組み合わせを探索し、
    探索した前記複数の処理の組み合わせを表示する
    処理を実行することを特徴とするデータ変換方法。
  9. 第1データと、前記第1データの変換後データである第2データを取得する取得部と、
    処理ごとに定義された処理時間を示す属性に基づいて、前記第1データを前記第2データに変換する際に用いられる複数の処理の組み合わせを探索する探索部と、
    探索した前記複数の処理の組み合わせを表示する表示制御部と、
    を備えることを特徴とするデータ変換装置。
JP2017173099A 2017-09-08 2017-09-08 データ変換プログラム、データ変換方法、およびデータ変換装置 Active JP6930314B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2017173099A JP6930314B2 (ja) 2017-09-08 2017-09-08 データ変換プログラム、データ変換方法、およびデータ変換装置
US16/121,794 US10896026B2 (en) 2017-09-08 2018-09-05 Data conversion method and data conversion apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2017173099A JP6930314B2 (ja) 2017-09-08 2017-09-08 データ変換プログラム、データ変換方法、およびデータ変換装置

Publications (2)

Publication Number Publication Date
JP2019049815A true JP2019049815A (ja) 2019-03-28
JP6930314B2 JP6930314B2 (ja) 2021-09-01

Family

ID=65631121

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2017173099A Active JP6930314B2 (ja) 2017-09-08 2017-09-08 データ変換プログラム、データ変換方法、およびデータ変換装置

Country Status (2)

Country Link
US (1) US10896026B2 (ja)
JP (1) JP6930314B2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385870B2 (en) 2020-05-21 2022-07-12 Fujitsu Limited Non-transitory computer-readable recording medium, data transformation device, and data transformation method

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10831647B2 (en) * 2017-09-20 2020-11-10 Sap Se Flaky test systems and methods

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075844A (ja) * 1999-08-31 2001-03-23 Nec Corp データ変換装置及びその記録媒体
US20060080115A1 (en) * 2004-10-08 2006-04-13 Winfried Schwarzmann System and method for the assembly of programs
JP2006099308A (ja) * 2004-09-29 2006-04-13 Hitachi Ltd コンポーネントベース・アプリケーション構築方法
JP2016062300A (ja) * 2014-09-18 2016-04-25 日本電気株式会社 ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2932920B2 (ja) * 1993-11-30 1999-08-09 富士ゼロックス株式会社 情報格納装置
US20060010175A1 (en) * 2004-06-17 2006-01-12 International Business Machines Corporation Apparatus, system, and method for automated conversion of content having multiple representation versions
JP4629768B2 (ja) * 2008-12-03 2011-02-09 インターナショナル・ビジネス・マシーンズ・コーポレーション 並列化処理方法、システム、及びプログラム
US9400639B2 (en) 2012-06-22 2016-07-26 Microsoft Technology Licensing, Llc Generating programs using context-free compositions and probability of determined transformation rules
US9891895B2 (en) 2015-09-14 2018-02-13 Microsoft Technology Licensing, Llc User interaction models for disambiguation in programming-by-example
US10528328B2 (en) 2015-12-08 2020-01-07 Microsoft Technology Licensing, Llc Learning from input patterns in Programing-By-Example

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2001075844A (ja) * 1999-08-31 2001-03-23 Nec Corp データ変換装置及びその記録媒体
JP2006099308A (ja) * 2004-09-29 2006-04-13 Hitachi Ltd コンポーネントベース・アプリケーション構築方法
US20060080115A1 (en) * 2004-10-08 2006-04-13 Winfried Schwarzmann System and method for the assembly of programs
JP2016062300A (ja) * 2014-09-18 2016-04-25 日本電気株式会社 ソースコード生成装置、ソースコード生成方法およびソースコード生成プログラム

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
ABEDJAN, ZIAWASCH ほか: "DataXFormer: A robust transformation discovery system", 2016 IEEE 32ND INTERNATIONAL CONFERENCE ON DATA ENGINEERING (ICDE), JPN6021021648, 16 May 2016 (2016-05-16), pages 1134 - 1145, XP032914255, ISSN: 0004521827, DOI: 10.1109/ICDE.2016.7498319 *
JIN, ZHONGJUN ほか: "Foofah: Transforming data by example", PROCEEDINGS OF THE 2017 ACM INTERNATIONAL CONFERENCE ON MANAGEMENT OF DATA, JPN6021021646, 14 May 2017 (2017-05-14), pages 683 - 698, XP058540472, ISSN: 0004521826, DOI: 10.1145/3035918.3064034 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11385870B2 (en) 2020-05-21 2022-07-12 Fujitsu Limited Non-transitory computer-readable recording medium, data transformation device, and data transformation method

Also Published As

Publication number Publication date
US10896026B2 (en) 2021-01-19
JP6930314B2 (ja) 2021-09-01
US20190079735A1 (en) 2019-03-14

Similar Documents

Publication Publication Date Title
JP5494653B2 (ja) アクセス制御ポリシテンプレート生成装置、システム、方法およびプログラム
KR101780933B1 (ko) 침해 자원 사이의 연관 관계 시각화 방법 및 그 장치
JP2009266092A (ja) テストケース生成装置およびその生成方法、ならびにテストケース生成のためのプログラム
JP2008033728A (ja) 重複データ検出プログラム、重複データ検出方法および重複データ検出装置
JP6930314B2 (ja) データ変換プログラム、データ変換方法、およびデータ変換装置
JP2011034457A (ja) データマイニングシステム、データマイニング方法及びデータマイニング用プログラム
JP5108956B2 (ja) 経路計算順決定方法、プログラムおよび計算装置
US20190205361A1 (en) Table-meaning estimating system, method, and program
WO2016056236A1 (ja) 情報処理装置、情報処理方法、及び、記録媒体
WO2018078735A1 (ja) 情報処理装置、情報処理方法および情報処理プログラム
WO2010016366A1 (ja) ユーザビリティ評価装置、ユーザビリティ評価方法及びプログラム
JP2018014000A (ja) テスト支援プログラム、テスト支援装置、及びテスト支援方法
JP6549786B2 (ja) データクレンジングシステム、方法、及び、プログラム
US20190294637A1 (en) Similar data search device, similar data search method, and recording medium
JP6984729B2 (ja) 意味推定システム、方法およびプログラム
JPWO2011016281A1 (ja) ベイジアンネットワーク構造学習のための情報処理装置及びプログラム
JP6123372B2 (ja) 情報処理システム、名寄せ判定方法及びプログラム
JP6988991B2 (ja) 意味推定システム、方法およびプログラム
JP2017076894A (ja) 経路探索装置及び経路探索方法
JP2007057065A (ja) 管網解析装置及び管網解析方法
JP6407489B2 (ja) 転送装置、調整装置およびパラメータ調整方法
JP2020126499A (ja) 情報可視化装置、情報可視化方法、及びプログラム
US11860910B2 (en) Information provision system, method, and program
WO2022249364A1 (ja) 経路決定装置、経路決定方法、及びプログラム
JP4957656B2 (ja) 情報処理装置及び情報処理プログラム

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20200611

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20210430

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20210608

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20210624

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20210624

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20210624

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20210726

R150 Certificate of patent or registration of utility model

Ref document number: 6930314

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150