(57)【特許請求の範囲】
【請求項１】
系統情報を管理するための方法であって、
２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報を受け取るステップであって、前記論理データセットのうちの少なくとも１つが、前記データ処理プログラムのうちの少なくとも１つのランタイムで物理データセットに解決される、ステップと、
１又は２以上のランタイムアーチファクトを受け取るステップであって、それぞれのランタイムアーチファクトが、前記２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含む、ステップと、
前記１又は２以上のランタイムアーチファクト及び前記系統情報を解析し、該解析の結果に基づいて前記系統情報に対する１又は２以上の修正候補を決定するステップであって、少なくとも１つの修正候補が、前記解析の結果に少なくとも部分的に基づく、前記２又は３以上の論理データセットのうちの少なくとも１つの表現に対する修正を含み、前記結果が、１又は２以上の物理データセットに関連付けられる、ステップとを含む、前記方法。
【請求項２】
１又は２以上の修正候補が、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムと２又は３以上の論理データセットのうちの論理データセットとの間の新しい間接的な系統の関係を追加する修正候補を含む、請求項１に記載の方法。
【請求項３】
１又は２以上の修正候補が、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムと２又は３以上の論理データセットのうちの論理データセットとの間の新しい直接的な系統の関係を追加する第１の修正候補を含む、請求項１に記載の方法。
【請求項４】
ランタイムアーチファクト及び系統情報を解析するステップが、２若しくは３以上のデータ処理プログラムの以前の実行のログを解析して、前記２若しくは３以上のデータ処理プログラムから読み取られた物理データセット又は前記２若しくは３以上のデータ処理プログラムによって書き込まれた物理データセットを決定することを含む、請求項３に記載の方法。
【請求項５】
ランタイムアーチファクト及び系統情報を解析するステップが、前記系統情報内に表され、同じ物理データセットに関連付けられる２又は３以上の論理データセットのうちの２つの異なる論理データセットを特定することをさらに含む、請求項４に記載の方法。
【請求項６】
第１の修正候補が、２つの異なる論理データセットの間の新しい系統の関係の生成を含む、請求項５に記載の方法。
【請求項７】
第１の修正候補が、２つの異なる論理データセットを新しい組み合わされた論理データセットに統合させることを含む新しい系統の関係の生成を含む、請求項５に記載の方法。
【請求項８】
２又は３以上のデータ処理プログラムのうちのそれぞれのデータ処理プログラムが、１又は２以上のパラメータ値の集合に従ってインスタンス化されたジェネリックデータ処理プログラムのインスタンスである、請求項１に記載の方法。
【請求項９】
１又は２以上のランタイムアーチファクト及び系統情報を解析するステップが、
２又は３以上のデータ処理プログラムのうちの第１のデータ処理プログラムの以前の実行の１又は２以上のログを解析して、１又は２以上のパラメータ値の第１の集合に従って前記第１のデータ処理プログラムの第１のインスタンス化において使用された第１のパラメータセットを決定することと、
前記第１のパラメータセットから少なくともいくつかのパラメータを選択することと、
前記第１のデータ処理プログラムを前記１又は２以上のパラメータ値の集合に従ってインスタンス化したジェネリックデータ処理プログラムのインスタンス及び前記少なくともいくつかのパラメータに基づいて、前記第１のデータ処理プログラムの前記第１のインスタンス化が前記系統情報内に表されないと決定することとを含む、請求項８に記載の方法。
【請求項１０】
第１のパラメータセットから少なくともいくつかのパラメータを選択することが、ユーザから受け取った情報に基づいてパラメータを選択することを含む、請求項９に記載の方法。
【請求項１１】
第１のパラメータセットから少なくともいくつかのパラメータを選択することが、１又は２以上の予め定義された規則に基づいてパラメータを選択することを含む、請求項９に記載の方法。
【請求項１２】
１又は２以上の予め定義された規則のうちの第１の規則が、日付の形態のパラメータ値を有するパラメータが選択されるパラメータから除外されることを規定する、請求項１１に記載の方法。
【請求項１３】
１又は２以上の予め定義された規則のうちの第１の規則が、ジェネリックデータ処理プログラムの論理において変換されるパラメータ値を有するパラメータが選択されるパラメータに含められることを規定する、請求項１１に記載の方法。
【請求項１４】
系統情報に対する１又は２以上の修正候補が、２又は３以上のデータ処理プログラムのうちの第１のデータ処理プログラムと２又は３以上の論理データセットのうちの論理データセットとの間の新しい系統の関係を追加する第１の修正候補を含む請求項９に記載の方法。
【請求項１５】
コンピュータ可読媒体に非一時的形態で記憶された系統情報を管理するためのソフトウェアであって、コンピューティングシステムに、
２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報を受け取ることであって、前記論理データセットのうちの少なくとも１つが、前記データ処理プログラムのうちの少なくとも１つのランタイムで物理データセットに解決される、受け取ることと、
１又は２以上のランタイムアーチファクトを受け取ることであって、それぞれのランタイムアーチファクトが、前記２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含む、受け取ることと、
前記１又は２以上のランタイムアーチファクト及び前記系統情報を解析し、該解析の結果に基づいて前記系統情報に対する１又は２以上の修正候補を決定することであって、少なくとも１つの修正候補が、前記解析の結果に少なくとも部分的に基づく、前記２又は３以上の論理データセットのうちの少なくとも１つの表現に対する修正を含み、前記結果が、１又は２以上の物理データセットに関連付けられる、解析し、決定することとを行わせるための命令を含む、前記ソフトウェア。
【請求項１６】
系統情報を管理するためのコンピューティングシステムであって、
２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報、並びに１又は２以上のランタイムアーチファクトを受け取るように構成された入力デバイス又はポートであって、それぞれのランタイムアーチファクトが、前記２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含み、前記論理データセットのうちの少なくとも１つが、前記データ処理プログラムのうちの少なくとも１つのランタイムで物理データセットに解決される、入力デバイス又はポートと、
前記１又は２以上のランタイムアーチファクト及び前記系統情報を解析し、該解析の結果に基づいて前記系統情報に対する１又は２以上の修正候補を決定するように構成された少なくとも１つのプロセッサであって、少なくとも１つの修正候補が、前記解析の結果に少なくとも部分的に基づく、前記２又は３以上の論理データセットのうちの少なくとも１つの表現に対する修正を含み、前記結果が、１又は２以上の物理データセットに関連付けられる、少なくとも１つのプロセッサとを含む、前記コンピューティングシステム。
【請求項１７】
解析の結果が、少なくとも１つのデータ処理プログラムのランタイムで少なくとも１つの論理データセットが解決された少なくとも１つの物理データセットの特定を含む請求項１に記載の方法。
【請求項１８】
系統情報に対する、１又は２以上の修正候補のうちの選択される一つを適用することをさらに含む、請求項１に記載の方法。
【請求項１９】
選択される修正候補が、解析を実行するコンピューティングシステムによって自動的に選択され系統情報に適用される、請求項１８に記載の方法。
【請求項２０】
選択される修正候補が、１又は２以上の修正候補を提示した後に受け取られるユーザ入力に少なくとも部分的に基づいて選択される、請求項１８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年７月１８日に出願した米国特許出願第６２／０２６，２２８号明細書の優先権を主張するものである。
【０００２】
本明細書は、パラメータセットの管理に関する。
【背景技術】
【０００３】
データ処理システムにおいては、データがシステムを通り抜けるときのそのデータの系統（lineage）のレポートに特定の種類のユーザがアクセスすることができることが望ましいことが多い。極めて広く、多くの用途の中でもとりわけ、そのような「データ系統」のレポートは、リスクを減らし、遵守義務を確認し、ビジネスプロセスを能率化し、データを保護するために使用され得る。データ系統のレポートは正しくかつ完全であることが重要である。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様においては、概して、パラメータ値の集合を管理して、パラメータ値のそれらの集合を使用してインスタンス化されたジェネリック（generic）コンピュータプログラムのインスタンスの間の関係を反映する系統情報が、より正確で完全なデータ系統のレポートの生成を可能にする。
【０００５】
別の態様においては、概して、系統情報を管理するための方法が、２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報を受け取るステップと、１又は２以上のランタイムアーチファクトを受け取るステップであって、それぞれのランタイムアーチファクトが、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含む、ステップと、１又は２以上のランタイムアーチファクト及び系統情報を解析して、系統情報に対する１又は２以上の修正候補を決定するステップとを含む。
【０００６】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【０００７】
１又は２以上の修正候補は、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムと２又は３以上の論理データセットのうちの論理データセットとの間の新しい間接的な系統の関係を追加する修正候補を含む。
【０００８】
１又は２以上の修正候補は、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムと２又は３以上の論理データセットのうちの論理データセットとの間の新しい直接的な系統の関係を追加する第１の修正候補を含む。
【０００９】
ランタイムアーチファクト及び系統情報を解析するステップは、２若しくは３以上のデータ処理プログラムの以前の実行のログを解析して、２若しくは３以上のデータ処理プログラムから読み取られた物理データセット又は２若しくは３以上のデータ処理プログラムによって書き込まれた物理データセットを決定することを含む。
【００１０】
ランタイムアーチファクト及び系統情報を解析するステップは、系統情報内に表され、同じ物理データセットに関連付けられる２又は３以上の論理データセットのうちの２つの異なる論理データセットを特定することをさらに含む。
【００１１】
第１の修正候補は、２つの異なる論理データセットの間の新しい系統の関係の生成を含む。
【００１２】
第１の修正候補は、２つの異なる論理データセットを新しい組み合わされた論理データセットに統合させることを含む新しい系統の関係の生成を含む。
【００１３】
２又は３以上のデータ処理プログラムのうちのそれぞれのデータ処理プログラムは、１又は２以上のパラメータ値の集合に従ってインスタンス化されたジェネリックデータ処理プログラムのインスタンスである。
【００１４】
１又は２以上のランタイムアーチファクト及び系統情報を解析するステップは、２又は３以上のデータ処理プログラムのうちの第１のデータ処理プログラムの以前の実行の１又は２以上のログを解析して、１又は２以上のパラメータ値の第１の集合に従って第１のデータ処理プログラムの第１のインスタンス化において使用された第１のパラメータセットを決定することと、第１のパラメータセットから少なくともいくつかのパラメータを選択することと、第１のデータ処理プログラムのジェネリックバージョン及び少なくともいくつかのパラメータに基づいて、第１のデータ処理プログラムの第１のインスタンス化が系統情報内に表されないと決定することとを含む。
【００１５】
第１のパラメータセットから少なくともいくつかのパラメータを選択することは、ユーザから受け取った情報に基づいてパラメータを選択することを含む。
【００１６】
第１のパラメータセットから少なくともいくつかのパラメータを選択することは、１又は２以上の予め定義された規則に基づいてパラメータを選択することを含む。
【００１７】
１又は２以上の予め定義された規則のうちの第１の規則は、日付の形態のパラメータ値を有するパラメータが選択されるパラメータから除外されることを規定する。
【００１８】
１又は２以上の予め定義された規則のうちの第１の規則は、ジェネリックデータ処理プログラムの論理において変換されるパラメータ値を有するパラメータが選択されるパラメータに含められることを規定する。
【００１９】
系統情報に対する１又は２以上の修正候補は、２又は３以上のデータ処理プログラムのうちの第１のデータ処理プログラムと２又は３以上の論理データセットのうちの論理データセットとの間の新しい系統の関係を追加する第１の修正候補を含む。
【００２０】
別の態様においては、概して、系統情報を管理するためのソフトウェアが、コンピュータ可読媒体に非一時的形態で記憶され、ソフトウェアは、コンピューティングシステムに、２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報を受け取ることと、１又は２以上のランタイムアーチファクトを受け取ることであって、それぞれのランタイムアーチファクトが、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含む、受け取ることと、１又は２以上のランタイムアーチファクト及び系統情報を解析して、系統情報に対する１又は２以上の修正候補を決定することとを行わせるための命令を含む。
【００２１】
別の態様においては、概して、系統情報を管理するためのコンピューティングシステムが、２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報、並びに１又は２以上のランタイムアーチファクトを受け取るように構成された入力デバイス又はポートであって、それぞれのランタイムアーチファクトが、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含む、入力デバイス又はポートと、１又は２以上のランタイムアーチファクト及び系統情報を解析して、系統情報に対する１又は２以上の修正候補を決定するように構成された少なくとも１つのプロセッサとを含む。
【００２２】
別の態様においては、概して、系統情報を管理するためのコンピューティングシステムが、２又は３以上のデータ処理プログラム及び２又は３以上の論理データセットの間の１又は２以上の系統の関係を表す系統情報、並びに１又は２以上のランタイムアーチファクトを受け取るための手段であって、それぞれのランタイムアーチファクトが、２又は３以上のデータ処理プログラムのうちのデータ処理プログラムの以前の実行に関連する情報を含む、手段と、１又は２以上のランタイムアーチファクト及び系統情報を解析して、系統情報に対する１又は２以上の修正候補を決定するための手段とを含む。
【００２３】
態様は、以下の利点のうちの１又は２以上を含む可能性がある。
【００２４】
本明細書において説明される手法を使用してパラメータセットを発見し、発見されたパラメータセットを使用してパラメータセットの既存の集合を増強することによって、既存のパラメータセットの増強された集合を使用して生じさせられたデータ系統のレポートが、データ処理システムの真のデータ系統をより正確に表す。特に、前に見落とされたであろうデータ処理システムに関するデータ系統の部分が、データ系統のレポートに含められる。
【００２５】
一部の例においては、パラメータセット発見手法の結果が、コンピュータプログラムのインスタンスの実行のログエントリを増強する（つまり、発見されたパラメータセットについての情報によってログエントリを増強する）ためにやはり使用され得る。増強されたログエントリは、コンピュータプログラム及び／又はデータセットの間の論理的なつながりが物理的なつながりに対応することを確認するために有利に使用され得る。この確認の結果は、ユーザに提示されるデータ系統がコンピュータプログラム並びにそれらのコンピュータプログラムの入力及び出力の間の正しい系統の関係を示すことを保証する。
【００２６】
本発明のその他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００２７】
【図１】パラメータセットの発見のためのシステムのブロック図である。
【図２】部分グラフ及びそれらの部分グラフの関連するパラメータセットを含むデータフローグラフである。
【図３】図２のデータフローグラフのランタイムの構成の図である。
【図４】図２のデータフローグラフの静的解析（static analysis）の構成の図である。
【図５】パラメータセットの発見のための方法の流れ図である。
【図６】パラメータセットの発見のための方法の例示的な動作の前半の図である。
【図７】パラメータセットの発見のための方法の例示的な動作の後半の図である。
【図８】第１の部分グラフ及び第２の部分グラフを含む例示的なデータフローグラフである。
【図９】データフローグラフの論理データセットが物理データセットに解決される図８のデータフローグラフである。
【図１０】図８のデータフローグラフに関するデータ系統のレポートを示す図である。
【図１１】第１の部分グラフ及び第２の部分グラフを含み、重複論理データセット（duplicate logical dataset）を有する例示的なデータフローグラフである。
【図１２】データフローグラフの論理データセットが物理データセットに解決される図１１の例示的なデータフローグラフである。
【図１３】図１１のデータフローグラフに関する、データ系統の断絶を含むデータ系統のレポートを示す図である。
【図１４】データ系統のレポート内のデータ系統の断絶の影響を軽減するための第１の技術を示す図である。
【図１５】データ系統のレポート内のデータ系統の断絶の影響を軽減するための第２の技術を示す図である。
【図１６】データ系統のレポート内のデータ系統の断絶の影響を軽減するための第３の技術を示す図である。
【図１７】データ系統のレポート内のデータ系統の断絶の影響を軽減するための第４の技術を示す図である。
【図１８】データ系統のレポート内のデータ系統の断絶の影響を軽減するための第５の技術を示す図である。
【図１９】データ系統のレポート内のデータ系統の断絶の影響を軽減するための第６の技術を示す図である。
【発明を実施するための形態】
【００２８】
図１は、本明細書において説明されるパラメータセット発見技術が使用され得るデータ処理システム１００の例を示す。システムは、一部の実施形態において、（データ処理構成要素又はデータセットを表す）頂点間の（作業要素（work element）、すなわち、データのフローを表す）有向リンクによって接続された頂点を含むデータフローグラフ１１７としてアプリケーションを開発するためのシステムである開発環境１１８を含む。例えば、そのような環境は、参照により本明細書に組み込まれる「Managing Parameters for Graph-Based Applications」と題された米国特許出願公開第２００７／００１１６６８号明細書により詳細に説明されている。そのようなグラフに基づく計算を実行するためのシステムは、参照により本明細書に組み込まれる「EXECUTING COMPUTATIONS EXPRESSED AS GRAPHS」と題された米国特許第５，９６６，０７２号明細書に説明されている。このシステムによって作成されるデータフローグラフ１１７は、プロセス間で情報を移動するため及びプロセスに関する実行の順序を定義するためにグラフの構成要素によって表される個々のプロセスに情報を出し入れするための方法を提供する。このシステムは、任意の利用可能な方法からプロセス間通信の方法を選択するアルゴリズムを含む（例えば、グラフのリンクに従った通信パスは、ＴＣＰ／ＩＰ若しくはＵＮＩＸドメインソケットを使用するか、又はプロセス間でデータを渡すために共有メモリを使用する可能性がある）。開発環境１１８を使用して開発者１２０によって作成されたデータフローグラフ１１７は、システム１００のその他のモジュールによるその後の使用のために、開発環境１１８によってアクセスされ得るデータストレージシステム１１６に記憶され得る。
【００２９】
実行環境１０４は、パラメータ解決モジュール１０６及び実行モジュール１１２を含む。実行環境１０４は、例えば、ＵＮＩＸオペレーティングシステムのバージョンなどの好適なオペレーティングシステムの制御下の１又は２以上の多目的コンピュータでホストされる可能性がある。例えば、実行環境１０４は、ローカルの（例えば、対称型マルチプロセッシング（ＳＭＰ，symmetric multi-processing）コンピュータなどのマルチプロセッサシステム）又はローカルに分散された（例えば、クラスタ若しくは超並列処理（ＭＰＰ，massively parallel processing）システムとして接続された複数のプロセッサか、或いは遠隔の又は遠隔に分散された（例えば、ローカルエリアネットワーク（ＬＡＮ，local area network）及び／若しくは広域ネットワーク（ＷＡＮ，wide-area network）を介して接続された複数のプロセッサ）か、或いはこれらの任意の組合せかのいずれかの複数の中央演算処理装置（ＣＰＵ，central processing unit）或いはプロセッサコアを用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含む可能性がある。
【００３０】
パラメータ解決モジュール１０６は、データストレージシステム１１６からデータフローグラフ１１７の規定を受け取り、実行モジュール１１２によって実行するためにデータフローグラフ（複数可）１１７を準備するために（下でより詳細に説明されるように）データフローグラフ１１７に関するパラメータを解決する。実行モジュール１１２は、パラメータ解決モジュール１０６から準備されたデータフローグラフ１１７を受け取り、それらのデータフローグラフ１１７を使用してデータソース１０２からのデータを処理し、出力データ１１４を生じさせる。出力データ１１４は、実行環境１０４によってアクセスされ得るデータソース１０２若しくはデータストレージシステム１１６に戻して記憶されるか、又はその他の方法で使用される可能性がある。概して、データソース１０２は、ストレージデバイス、又はオンラインデータストリームへの接続などのデータの１又は２以上のソースを含む可能性があり、それらの１又は２以上のソースのそれぞれは、さまざまなフォーマット（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブフォーマット）のいずれかでデータを記憶又は提供し得る。
【００３１】
データソース１０２を提供するストレージデバイスは、実行環境１０４のローカルにあり、例えば、実行環境１０４をホストするコンピュータに接続されたストレージ媒体（例えば、ハードドライブ１０８）に記憶される可能性があり、又は実行環境１０４のリモートにあり、例えば、（例えば、クラウドコンピューティングインフラストラクチャによって提供される）リモート接続を介して実行環境１０４をホストするコンピュータと通信するリモートシステム（例えば、メインフレーム１１０）でホストされる可能性がある。
【００３２】
システム１００は、企業ユーザ１２１（例えば、データ設計者又はビジネスユーザ）によってアクセスされ得るメタデータ環境モジュール１１９も含む。メタデータ環境モジュール１１９は、データフローグラフ１１７（又はそれらのデータフローグラフ１１７を特徴付けるメタデータ並びにそれらのデータフローグラフ１１７が参照する入力及び出力データセット）を処理してデータフローグラフ１１７に関するデータ系統を生じさせるデータ系統モジュール１１５を含む。企業ユーザ１２１は、データフローグラフ１１７の検証及び遵守の検査などの理由でデータ系統を見る可能性がある。特定のデータアイテム（例えば、データセット、又はデータセット内のフィールド）についてのデータ系統情報は、データ処理システムによって実行される処理から生じる依存関係に基づき、本明細書において使用される用語「データ系統」は、概して、その他の関連するデータアイテムと、それらのデータアイテムを消費するか又は生じさせる処理エンティティとを含む集合を指す。データ系統のレポート（データ系統図とも呼ばれる）は、ノードがデータアイテム及び処理エンティティを表し、リンクがそれらの間の依存関係を表すグラフの形態のデータ系統の図式的表現を含む可能性がある。データ系統のレポートを生じさせ、表示することができる一部のシステムは、上流端のデータの根本的なソースから下流端において生成される最終データまでエンドツーエンドのデータ系統を自動的に提示することができる。特定のデータアイテムから上流のパス上のノードは、そのデータアイテムに関する「ディペンデンシ（dependency）」と呼ばれることがあり、特定のデータアイテムから下流のパス上のノードは、そのデータアイテムに関する「インパクト（impact）」と呼ばれることがある。「データ系統」は上流のディペンデンシのみを指すために使用されることがあるが、本明細書において使用されるとき、「データ系統」は、特定の文脈に応じて上流のディペンデンシ及び／又は下流のインパクトのどちらか又は両方を指す可能性がある。
【００３３】
１  データフローグラフの概要
図２を参照すると、図１の開発環境１１８を使用して生じさせられたデータフローグラフ２１７の例が、ｇａｔｈｅｒ．ｍｐと命名された第１の部分グラフ２０２と、ｐｒｏｃｅｓｓ．ｍｐと命名された第２の部分グラフ２０４とを含む。
【００３４】
第１の部分グラフ２０２は、第１の論理データセットＤＳ１  ２０６及び第２の論理データセットＤＳ２  ２０８を入力として受け取り、第１の及び第２の論理データセット２０６、２０８からのデータを処理し、処理の結果を第３の論理データセットＤＳ３  ２１０に書き込む。第２の部分グラフ２０４は、（たまたま第３の論理データセット２１０と同じ物理ファイルを指す）第４の論理データセットＤＳ４  ２１２を入力として受け取り、第４の論理データセット２１２からのデータを処理し、処理の結果をテーブル２１４に書き込む。
【００３５】
４つの論理データセット２０６、２０８、２１０、２１２のそれぞれは、ランタイムで物理ファイルへのパスに解決するパラメータ表記されたパスに関連付けられる。特に、第１の論理データセット２０６は、パラメータ表記されたパス／＄｛ＦＥＥＤ｝／ｉｎｖ＿＄｛ＤＡＴＥ｝．ｄａｔを使用して特定され、第２の論理データセット２０８は、パラメータ表記されたパス／＄｛ＦＥＥＤ｝／ｃｕｓｔ＿＄｛ＤＡＴＥ｝．ｄａｔを使用して特定され、第３の論理データセット２１０は、パラメータ表記されたパス／ｔｒａｎｓ＿＄｛ＤＡＴＥ｝．ｄａｔを使用して特定され、第４の論理データセット２１２は、パラメータ表記されたパス／ｔｒａｎｓ＿＄｛ＤＡＴＥ｝．ｄａｔを使用して特定される。
【００３６】
第１の部分グラフ２０２は、２つのパラメータP1 = FEED及びP2 = DATEを引数として受け取り、下でより詳細に説明されるように、パラメータを使用して、パラメータ表記されたパス内のＦＥＥＤ及びＤＡＴＥプレースホルダを受け取られたＦＥＥＤ及びＤＡＴＥパラメータ値で置き換えることによって、パスを、第１の論理データセット２０６、第２の論理データセット２０８、及び第３の論理データセット２１０のそれぞれの物理的位置に解決する。さらに、第１の部分グラフ２０２は、ＤＡＴＥパラメータの「静的解析」値を含む。下でより詳細に説明されるように、ＤＡＴＥパラメータの静的解析値は、データフローグラフ２１７の静的解析中に（つまり、データフローグラフ２１７のデータ系統が決定されるときに）パラメータ値として使用されるプレースホルダの値である。
【００３７】
同様に、第２の部分グラフ１０４は、単一のパラメータP1 = DATEを受け取り、そのパラメータを使用して、第４の論理データセット２１２に関するパラメータ表記されたパス内のＤＡＴＥプレースホルダを受け取られたＤＡＴＥパラメータの値で置き換えることによって、パスを、第４の論理データセット２１２の物理的位置に解決する。さらに、第２の部分グラフ２０４は、ＤＡＴＥパラメータの「静的解析」値を含む。下でより詳細に説明されるように、ＤＡＴＥパラメータの静的解析値は、データフローグラフ２１７の静的解析中に（つまり、データフローグラフ２１７のデータ系統が決定されるときに）パラメータ値として使用されるプレースホルダの値である。
【００３８】
データフローグラフ２１７及びその部分グラフの動作はそれが受け取るパラメータに依存するので、データフローグラフ及びその部分グラフは、「ジェネリック」データフローグラフ又は「ジェネリック」コンピュータプログラムと呼ばれることがある。
【００３９】
１．１  パラメータ
概して、上述のパラメータは、「設計時」パラメータ又は「ランタイム」パラメータのどちらかとして指定される可能性がある。上述のようにパス解決のために使用されることに加えて、設計時パラメータは、それらのパラメータの関連するデータフローグラフの論理的な動作に影響を与える。対称的に、ランタイムパラメータは、ジョブ毎にグラフに供給され、グラフの論理的な動作に影響を与えない。一部の例において、データフローグラフの論理的な動作は、グラフの機能とグラフによって利用される論理データセットとの両方を指す。
【００４０】
図２において、ＦＥＥＤパラメータは、ｇａｔｈｅｒ．ｍｐ部分グラフの論理的な動作に影響を与える設計時パラメータである。例えば、ＦＥＥＤパラメータの１つの値に関して、第１の部分グラフ２０２内のソート構成要素２１６が、そのソート構成要素２１６が受け取るデータを昇順にソートする可能性がある一方、ＦＥＥＤパラメータの別の異なる値は、ソート構成要素２１６にデータを降順にソートさせる可能性がある。一部の例において、設計時パラメータを含むデータフローグラフは、そのデータフローグラフの論理的な動作が設計時パラメータの供給された値に基づいて変わるので、「ジェネリックグラフ」と呼ばれる。
【００４１】
ＤＡＴＥパラメータは、部分グラフ２０２の論理的な動作に影響を与えず、ジョブ毎に供給されるランタイムパラメータである。
【００４２】
１．２  パラメータセット
一部の例においては、データフローグラフに関するパラメータのよく使用される集合は、ディスクに保存され、容易に再利用され得る「パラメータセット」（「ｐｓｅｔ」と呼ばれることがある）として記憶される。例えば、図２において、第１の部分グラフ２０２は、その部分グラフ２０２に関連する３つのｐｓｅｔ、ＰＳＥＴ＿ｍｅｘｉｃｏ２１８、ＰＳＥＴ＿ｃａｎａｄａ２２０、及びＰＳＥＴ＿ｕｓａ２２２を有する。ＰＳＥＴ＿ｍｅｘｉｃｏ２１８は、よく使用されるＦＥＥＤパラメータ値「ｍｅｘｉｃｏ」と、今日の日付を返す関数であるよく使用されるＤＡＴＥパラメータ値「ｔｏｄａｙ（）」とを含む。ＰＳＥＴ＿ｃａｎａｄａ２２０は、よく使用されるＦＥＥＤパラメータ値「ｃａｎａｄａ」と、よく使用されるＤＡＴＥパラメータ値「ｔｏｄａｙ（）」とを含む。ＰＳＥＴ＿ｕｓａ２２２は、よく使用されるＦＥＥＤパラメータ値「ｕｓａ」と、よく使用されるＤＡＴＥパラメータ値「ｔｏｄａｙ（）」とを含む。
【００４３】
同様に、第２の部分グラフ２０４は、その部分グラフ２０４に関連する単一のｐｓｅｔ、ＰＳＥＴ２２３を有する。ＰＳＥＴ２２３は、今日の日付を返す関数であるよく使用されるＤＡＴＥパラメータ値「ｔｏｄａｙ（）」を含む。
【００４４】
２  パラメータ解決モジュール
一部の例においては、データフローグラフ１１７が実行モジュール１１２によって実行される前に、図１のパラメータ解決モジュール１０６が、データフローグラフ１１７（並びにそれに関連する部分グラフ２０２、２０４）に関連する１又は２以上のｐｓｅｔを特定し、１又は２以上のｐｓｅｔ内のいくつかの一意の設計時パラメータを決定する。所与のデータフローグラフに関するそれぞれの一意の設計時パラメータに関して、パラメータ解決モジュール１０６は、データフローグラフの別々の実行可能なインスタンスをインスタンス化する。例えば、図３を参照すると、図２のデータフローグラフ２１７に関して、第１の部分グラフ２０２、ｇａｔｈｅｒ．ｍｐの３つのインスタンスがインスタンス化され（ＰＳＥＴ＿ｍｅｘｉｃｏ−＞ｇａｔｈｅｒ．ｍｐ２０２ａ、ＰＳＥＴ＿ｃａｎａｄａ−＞ｇａｔｈｅｒ．ｍｐ２０２ｂ、ＰＳＥＴ＿ｕｓａ−＞ｇａｔｈｅｒ．ｍｐ２０２ｃ）、各インスタンスは、図２のｐｓｅｔの３つの一意のフィードパラメータ、すなわちｍｅｘｉｃｏ、ｃａｎａｄａ、ｕｓａのうちの異なる１つに従って構成される。第２の部分グラフ２０４はいかなる設計時パラメータも含まない単一のｐｓｅｔ２２３のみに関連付けられるので、第２の部分グラフ２０４の単一のインスタンス（ｐｒｏｃｅｓｓ．ｍｐ２０４ａ）のみが、実行時にインスタンス化される。
【００４５】
部分グラフ２０２、２０４の適切なインスタンスがパラメータ解決モジュール１０６によってインスタンス化されると、パラメータ解決モジュール１０６は、データセットに関するパラメータ表記されたパス内のパラメータ値のプレースホルダをｐｓｅｔからの実際のパラメータ値で置き換え、パスをデータセットの物理的位置に解決する。例えば、第１の部分グラフ２０２のＰＳＥＴ＿ｍｅｘｉｃｏ−＞ｇａｔｈｅｒ．ｍｐインスタンス２０２ａに関して、第１のデータセット２０６に関するパスは、ＦＥＥＤパラメータ値が「ｍｅｘｉｃｏ」であり、ＤＡＴＥパラメータ値が「０３１０１４」であるので、／ｍｅｘｉｃｏ／ｉｎｖ＿０３１０１４に解決される。
【００４６】
パラメータ解決モジュール１０６が、データフローグラフ２１７の部分グラフ２０２、２０４を含むデータフローグラフ２１７をインスタンス化し、物理パスをデータフローグラフ２１７のデータセットに解決すると、データフローグラフ２１７は、実行モジュール１１２によって実行するために準備される。実行中、第１の部分グラフ２０２の３つのインスタンス２０２ａ、２０２ｂ、２０２ｃは、それらのインスタンスのそれぞれの入力データセットからデータを読み、データを処理し、処理されたデータを／ｔｒａｎｓ＿０３１０１４．ｄａｔ物理ファイルに記憶する。第２の部分グラフ２０２のインスタンス２０４ａに関する入力データセット（例えば、ＤＳ４  ２１２）は第１の部分グラフの出力データセットと同じ物理ファイルに解決するので、／ｔｒａｎｓ＿０３１０１４．ｄａｔ物理ファイルは、ｐｒｏｃｅｓｓ．ｍｐのインスタンスによって読まれ、それから処理され、テーブル２１４に記憶される。
【００４７】
３  データ系統モジュール
図４を参照すると、一部の例においては、データフローグラフ２１７を実行するのではなく、図１のデータ設計者又はビジネスユーザ１２１は、データがデータフローグラフ２１７を通り抜けるときのそのデータの系統を調べることを必要とする可能性がある。そのようにするために、図１のデータ系統モジュール１１５は、データフローグラフ２１７を解析して、データ設計者又はビジネスユーザ１２１に対して提示するためのデータ系統のレポートを生じさせるように構成される。
【００４８】
一部の例においては、データフローグラフ２１７に関するデータ系統を決定する際の第１のステップとして、データ系統モジュール１１５は、データフローグラフ２１７の個々の部分グラフ２０２、２０４を特定する。特定された部分グラフ２０２、２０４のそれぞれに関して、データ系統モジュール１１５は、部分グラフ２０２、２０４に関連する１又は２以上のｐｓｅｔ２１８、２２０、２２２、２２３を特定し、それから、部分グラフ２０２、２０４に関する１又は２以上のｐｓｅｔ２１８、２２０、２２２、２２３内のいくつかの一意の設計時パラメータを決定する。それぞれの一意の設計時パラメータに関して、パラメータ解決モジュールは、部分グラフ２０２、２０４の別々のインスタンスをインスタンス化する。
【００４９】
一部の例において、データ系統モジュール１１５は、実際の物理ファイル及びそれらの物理ファイルが記憶するデータはデータ系統の解析と無関係であるという仮定の下で動作する。このため、データセットの物理的位置を解決するために使用されるいかなるランタイムパラメータ値も必要なく、プレースホルダの値によって置き換えられ得る。上述のように、部分グラフに関連するそれぞれのランタイムパラメータに関して、対応するプレースホルダの静的解析パラメータ値が部分グラフに含まれる。例えば、図２においては、両方のデータフローグラフ２０２、２０４がＤＡＴＥランタイムパラメータを含むので、それらのデータフローグラフ２０２、２０４は、両方とも、プレースホルダの静的解析パラメータ値「ＭＭＤＤＹＹ」も含む。
【００５０】
データ系統モジュール１１５がデータフローグラフ２１７を解析してデータ系統を決定するとき、データフローグラフ内のＤＡＴＥパラメータのすべてのインスタンスが、プレースホルダの値「ＭＭＤＤＹＹ」によって置き換えられ、図４に示されるように、一時的データセットオブジェクト４５２を生成する。それから、さまざまな部分グラフのインスタンスと一時的データセットオブジェクトとの間の相互接続が特定され、データ設計者又はビジネスユーザにデータ系統として提示される。例えば、第１の部分グラフ２０２のインスタンス２０２ａ、２０２ｂ、２０２ｃの解析は、第１の部分グラフ２０２のインスタンスのすべてが／ｔｒａｎｓ＿ＭＭＤＤＹＹ．ｄａｔデータセットオブジェクトによって表されるデータセットにデータを書き込むことを示す。そして、解析は、第２のデータフローグラフ２０４のインスタンス２０４ａが／ｔｒａｎｓ＿ＭＭＤＤＹＹ．ｄａｔデータセットオブジェクトによって表されるデータセットから読み取ることを示す。この情報に基づいて、データフローグラフ２１７のデータ系統は、第１の部分グラフ２０２のインスタンス２０２ａ、２０２ｂ、２０２ｃの出力が第２の部分グラフ２０４のインスタンス２０４ａの入力に供給されることを示す。
【００５１】
４  論理ｐｓｅｔ発見及び生成方法
一部の例においては、所与のデータフローグラフが、前に記憶されたｐｓｅｔからではなく実行コマンドに与えられる引数としてパラメータ値を受け取る実行コマンドを使用して実行される。上述の方法は記憶されたｐｓｅｔのみを使用してデータ系統を決定するので、データフローグラフを実行するための実行コマンドに与えられる引数に由来するパラメータ値に関連するｐｓｅｔは、データ系統内に表されない。これは、不完全な又は誤ったデータ系統が企業の設計者又は監査人に提供される結果をもたらす可能性がある。
【００５２】
図５は、データフローグラフのインスタンスの実行に関連するログ内で特定されたパラメータの集合に基づいて生成された論理パラメータセット（ｐｓｅｔ）によってデータフローグラフに関する既存の論理ｐｓｅｔのリポジトリを増強するための方法を示す流れ図である。一部の例において、図５において説明される方法は、図１のデータ系統モジュール１１５によって実施される。
【００５３】
４．１  グラフパラメータ
初めに、データフローグラフの一例（例えば、図１の第１の部分グラフ２０２）は、２つのパラメータ（Ｐ１及びＰ２）を含み、これらのパラメータのそれぞれは、「設計時」パラメータ又は「ランタイム」パラメータのどちらかとして指定され得る。上述のように、設計時パラメータは、グラフの論理的な動作に影響を与える（例えば、グラフによって実行される変換を変え得る）パラメータである一方、ランタイムパラメータは、ジョブ毎に変わり（例えば、日付）、グラフの論理的な動作に影響を与えないパラメータである。
【００５４】
４．２  パラメータの分類
グラフ２０２は、グラフ２０２のパラメータを解析してパラメータ分類結果４２６を生じさせるパラメータ分類ステップ４２４に提供される。パラメータ分類結果４２６内で、各パラメータは、設計時パラメータ又はランタイムパラメータのどちらかとして分類される。流れ図に示された例示的な場合、Ｐ１は、設計時パラメータとして分類され、Ｐ２は、ランタイムパラメータとして分類される。
【００５５】
一部の例において、データフローグラフに関するパラメータは、設計時パラメータ又はランタイムパラメータのどちらかであるものとして（例えば、ユーザによって）予め分類される。（例えば、レガシーデータフローグラフに関する）その他の例において、データフローグラフに関するパラメータは、設計時パラメータ又はランタイムパラメータのどちらかであるものとして予め分類されない。そのような場合、パラメータ分類ステップ４２４は、すべてのパラメータが設計時パラメータであると仮定する可能性がある。後の再分類ステップにおいては、所与のパラメータがログエントリの集合（例えば、下で説明されるジョブログデータストア（job log data store））内に（例えば、所与の閾値を超える）多数の一意の値を有すると判定される場合、所与のパラメータはランタイムパラメータとして再分類され得る。代替的に、再分類は、データ系統感度解析（data lineage sensitivity analysis）に基づく可能性がある。特に、パラメータがデータフローグラフ内のデータ系統（すなわち、データフローグラフ内のデータセット又は構成要素のインパクト又はディペンデンシ）を変えることなくさまざまな異なる値をとり得る場合、パラメータはランタイムパラメータとして分類され得る。例えば、グラフ内のデータセット（例えば、図３のＤＳ１、ＤＳ２、ＤＳ３）の関連するレコードフォーマット又はその他の特徴がパラメータのさまざまな値によって影響を受けない場合、そのパラメータは、ランタイムパラメータとして再分類される。すべての内部のインパクト及びディペンデンシを解決することを含むより包括的なデータ系統感度解析、並びにデータセットのレコードフォーマットに関連するインパクト及びディペンデンシだけを解決することを含むより制限されたデータ系統感度解析などのこのデータ系統感度解析の変更形態が、使用され得る。
【００５６】
（例えば、レガシーデータフローグラフに関する）一部の例において、パラメータは、設計時部分とランタイム部分との両方を含む可能性がある。例えば、ファイル名パラメータ「／ｍｅｘｉｃｏ／ｉｎｖ＿０３１０１４．ｄａｔ」は、設計時部分（すなわち、「ｍｅｘｉｃｏ」）及びランタイム部分（すなわち、「０３１０１４」）を含むのでハイブリッドパラメータである可能性がある。そのような例においては、ユーザが、ハイブリッドパラメータからそれぞれの設計時パラメータ及びランタイムパラメータを抽出し、分類するためにパラメータ分類ステップ４２４によって使用される正規表現又は何らかのその他の種類の文字列解析規則を与える可能性がある。
【００５７】
４．３  ジョブログデータストア
方法は、それぞれがデータフローグラフ２０２のインスタンスの実行に関連する情報を含むいくつかのジョブログエントリ（job log entry）４２９を含むジョブログデータストア４２８を利用する。情報の中でもとりわけ、ジョブログエントリの少なくとも一部は、データフローグラフ２０２をインスタンス化するために使用された実行コマンドのレコードを含む。所与のジョブログエントリに関する実行コマンドは、実行コマンドに引数として与えられたグラフ名及びパラメータ値を含む。概して、ジョブログデータストア４２８のジョブログエントリの少なくとも一部は、いかなるパラメータセットにもアクセスすることなくデータフローグラフをインスタンス化するが、その代わりに、実行コマンドに与えられる引数としてパラメータ値を受け取る。
【００５８】
４．４  処理ループ
ジョブログデータストア４２８及びパラメータ分類結果４２６は、処理ループ４３０に与えられ、処理ループ４３０は、ジョブログデータストア４２８のそれぞれのジョブログエントリ４２９に関して、グラフ実行コマンドに関する新しい論理ｐｓｅｔを生じさせ、新しい論理ｐｓｅｔが既存の論理ｐｓｅｔのリポジトリ４４８内に既に存在するかどうかを判定し、新しい論理ｐｓｅｔがまだ存在しない場合、新しい論理ｐｓｅｔをリポジトリ４４８に追加する。
【００５９】
４．４．１  初期コマンドライン論理ｐｓｅｔ構築
処理ループ４３０内では、パラメータ分類結果４２６及びジョブログデータストア４２８からのジョブログエントリＪｎ４３２が、論理ｐｓｅｔ構築ステップ４３４に与えられ、論理ｐｓｅｔ構築ステップ４３４は、パラメータ分類結果４２６に従ってジョブログエントリ４３２を解析して論理ｐｓｅｔ４３６を生じさせる。そのようにする際に、論理ｐｓｅｔ構築ステップ４３４は、ジョブログエントリ４３２に含まれるグラフ実行コマンドを解析して、グラフ実行コマンドへの引数として含まれるパラメータ値を抽出する。論理ｐｓｅｔ構築ステップ４３４は、ジョブログエントリ４３２に含まれるプロジェクトスコープも抽出する。一部の例において、プロジェクトスコープは、データフローグラフが実行されているプロジェクトの指示、データフローグラフに関する内部パラメータの指示、並びにデータフローグラフによって使用された環境設定、グローバル変数、及び構成変数の指示を含む。
【００６０】
論理ｐｓｅｔ構築ステップ４３４は、抽出されたプロジェクトスコープを論理ｐｓｅｔ４３６に自動的に含める。そして、論理ｐｓｅｔ構築ステップ４３４は、それぞれの抽出されたパラメータ値をパラメータ分類結果４２６内の対応するパラメータとマッチングする。抽出されたパラメータ値がパラメータ分類結果４２６内の設計時パラメータに対応すると論理ｐｓｅｔ構築ステップ４３４が判定する場合、論理ｐｓｅｔ構築ステップ４３４は、抽出された設計時パラメータの値を論理ｐｓｅｔ４３６に含める。抽出されたパラメータ値がパラメータ分類結果４２６内のランタイムパラメータに対応すると論理ｐｓｅｔ構築ステップ４３４が判定する場合、抽出されたパラメータ値は、論理ｐｓｅｔ４３６に含められない。
【００６１】
４．４．２  ｐｓｅｔ署名文字列計算
論理ｐｓｅｔ４３６は、ｐｓｅｔ署名文字列計算ステップ４４２に与えられ、ｐｓｅｔ署名文字列計算ステップ４４２は、論理ｐｓｅｔ４３６内のプロジェクトスコープ及びパラメータ値に基づいて論理ｐｓｅｔ署名文字列４４４を計算する。一部の例において、ｐｓｅｔ署名文字列４４４は、論理ｐｓｅｔ４３６に関するプロジェクトスコープ、論理ｐｓｅｔ４３６内のパラメータの名前／値ペア、及び論理ｐｓｅｔ４３６に関連するデータフローグラフのプロトタイプをシリアル化することによって計算される。その他の例において、ｐｓｅｔ署名文字列４４４は、論理ｐｓｅｔ４３６にハッシュ関数又は何らかのその他のデータマッピングアルゴリズムを適用することによって計算される。
【００６２】
４．４．３  ｐｓｅｔ署名文字列検索
ｐｓｅｔ署名文字列４４４は、既存の論理ｐｓｅｔのリポジトリ４４８内のすべての既存の論理ｐｓｅｔのｐｓｅｔ署名文字列と一緒にｐｓｅｔ署名検索ステップ４４６に与えられる。既存の論理ｐｓｅｔのそれぞれに関して、既存の論理ｐｓｅｔのｐｓｅｔ署名文字列が、ｐｓｅｔ署名文字列４４４と比較される。ｐｓｅｔ署名文字列４４４が既存の論理ｐｓｅｔのｐｓｅｔ署名文字列のうちの少なくとも１つに一致する場合、グラフ４３２の実行コマンドのインスタンス化のための論理ｐｓｅｔは既存の論理ｐｓｅｔのリポジトリ４４８内に既に存在するので、何も行われる必要がない。
【００６３】
一部の例において、既存の論理ｐｓｅｔのリポジトリ４４８内のすべての既存の論理ｐｓｅｔのｐｓｅｔ署名文字列は、既存の論理ｐｓｅｔと一緒にリポジトリ４４８に記憶される。その他の例において、既存の論理ｐｓｅｔに関する署名文字列は、オンザフライで、必要に応じて計算される。
【００６４】
４．４．４  新しい論理ｐｓｅｔの追加
そうではなく、既存の論理ｐｓｅｔの署名文字列のいずれもｐｓｅｔの署名文字列４４４に一致しない場合、論理ｐｓｅｔ４３６及びその論理ｐｓｅｔ４３６の署名文字列４４４は、新しい論理ｐｓｅｔ追加ステップ４５０によって既存の論理ｐｓｅｔのリポジトリ４４８に新しい論理ｐｓｅｔとして追加される。
【００６５】
４．５  例
図６及び図７を参照すると、図２の第１の部分グラフ２０２に適用される図４の論理ｐｓｅｔ発見及び生成方法の例示的な動作が提示される。図２の第１の部分グラフ２０２は、２つのパラメータP1 = FEED及びP2 = DATEを含む。第１の部分グラフ２０２は、パラメータが「設計時」パラメータ又は「ランタイム」パラメータのどちらかとして分類され、パラメータ分類結果４２６を生じさせるパラメータ分類ステップ４２４に与えられる。パラメータ分類結果４２６は、Ｐ１（ＦＥＥＤ）パラメータが設計時パラメータであり、Ｐ２（ＤＡＴＥ）パラメータがランタイムパラメータであることを示す。
【００６６】
パラメータ分類結果４２６及びジョブログデータストア４２８が、論理ｐｓｅｔ構築ステップ４３４に与えられる。図６の例において、ジョブログデータストア４２８は、第１の部分グラフ２０２（すなわち、ｇａｔｈｅｒ．ｍｐ）のインスタンスの実行に関連する情報を含む４つのジョブログエントリを含む。それぞれのジョブログエントリは、ＤＡＴＥパラメータ及びＦＥＥＤパラメータに関する値を引数として受け取った実行コマンドを含む。
【００６７】
論理ｐｓｅｔ構築ステップ４３４は、ジョブログデータストア４２８のジョブログエントリのそれぞれに関して異なる論理ｐｓｅｔ４３６を生成する。Ｐ１（ＦＥＥＤ）パラメータが設計時パラメータであるので、実行コマンドに引数として与えられたそのＰ１（ＦＥＥＤ）パラメータの値（例えば、ｍｅｘｉｃｏ、ｕｓａ、ｃａｎａｄａ、又はｈｏｎｇ  ｋｏｎｇ）は、論理ｐｓｅｔ４３６のそれぞれに関して含められる。Ｐ２（ＤＡＴＥ）パラメータがランタイムパラメータであるので、実行コマンドに引数として与えられたそのＰ２（ＤＡＴＥ）パラメータの値は、論理ｐｓｅｔ４３６に含められない。論理ｐｓｅｔ４３６のそれぞれは、第１の部分グラフ２０２のその論理ｐｓｅｔ４３６の対応するインスタンスに関するプロジェクトスコープを含む。
【００６８】
図７を参照すると、論理ｐｓｅｔ４３６は、論理ｐｓｅｔ４３６のそれぞれに関して異なる論理ｐｓｅｔ署名文字列４４４を計算するｐｓｅｔ署名文字列計算ステップ４４２に与えられる。
【００６９】
論理ｐｓｅｔ署名文字列４４４と、既存のｐｓｅｔのリポジトリ４４８内の既存のｐｓｅｔに関する論理ｐｓｅｔ署名文字列の集合４４７とが、検索ステップ４４６に与えられる。図２においてそうだったように、第１の部分グラフ２０２に関連する３つの既存のｐｓｅｔ、すなわち、ｍｅｘｉｃｏ  ＦＥＥＤパラメータに関する既存のｐｓｅｔ、ｕｓａ  ＦＥＥＤパラメータに関する既存のｐｓｅｔ、及びｃａｎａｄａ  ＦＥＥＤパラメータに関する既存のｐｓｅｔが存在する。したがって、既存のｐｓｅｔに関する論理ｐｓｅｔ署名文字列４４４の集合４４７は、第１の部分グラフ２０２に関連する既存のｐｓｅｔのそれぞれに関する文字列を含む。
【００７０】
検索ステップ４４６は、既存のｐｓｅｔに関する論理ｐｓｅｔ署名文字列の集合４４７内の論理ｐｓｅｔ署名文字列４４４のそれぞれの存在を検索する。この例において、検索ステップ４４６によって生じさせられた結果は、既存のｐｓｅｔに関する論理ｐｓｅｔ署名文字列の集合４４７に含まれない論理ｐｓｅｔ署名文字列のみがＦＥＥＤパラメータ値「ｈｏｎｇ  ｋｏｎｇ」を有する論理ｐｓｅｔに関連する論理ｐｓｅｔ署名文字列であることである。
【００７１】
検索ステップ４４６の結果と、「ｈｏｎｇ  ｋｏｎｇ」フィードパラメータを含む論理ｐｓｅｔ４３６とが、論理ｐｓｅｔ追加ステップ４５０に与えられ、論理ｐｓｅｔ追加ステップ４５０は、ＦＥＥＤパラメータ「ｈｏｎｇ  ｋｏｎｇ」を含む論理ｐｓｅｔと、その論理ｐｓｅｔの対応する論理ｐｓｅｔ署名文字列４４４とを既存の論理ｐｓｅｔのリポジトリ４４８に追加する。
【００７２】
新しい論理ｐｓｅｔをリポジトリに追加することによって、以前のデータ系統の結果において見落とされたであろう第１の部分グラフ２０２の「ｈｏｎｇ  ｋｏｎｇ」インスタンスが、データ系統の結果に表される。
【００７３】
上記の例においては、ランタイムパラメータに関する静的解析値がデータフローグラフ自体に記憶されるものとして説明されているが、一部の例においては、ランタイムパラメータに関する静的解析値は、データフローグラフに関連する１又は２以上のｐｓｅｔに保有される可能性があることが留意される。
【００７４】
一部の例において、特定の設計時パラメータ値は、静的解析時に存在するとは限らないソースから（例えば、データベースから）導出される。しかし、一部の例においては、ジョブログデータストアに記憶されたジョブログエントリが、その特定のジョブに関する解決されたすべてのパラメータに関する値を含む。静的解析時には、記憶されたパラメータ値が、静的解析時に存在しないソースから導出されるパラメータ値の代わりに使用され得る。
【００７５】
一部の例において、ジョブログデータストアのジョブログエントリは、データフローグラフに関するすべての解決されたパラメータ、データフローグラフによって読み書きされたすべてのファイルのログ、及び性能追跡情報を含む。一部の例において、ジョブログデータストアのジョブログエントリは、図４の方法によって発見される任意の論理パラメータセットによって増強される。一部の例において、発見された論理パラメータセットによってジョブログデータストアのジョブログエントリを増強することは、ジョブログエントリと発見された論理パラメータセットとの間の関連付けを形成することを含む。ジョブログデータストアの増強されたジョブログエントリは、さまざまな形態の情報をデータ設計者又はビジネスユーザに提供するために利用され得る。一部の例において、増強されたジョブログエントリは、論理的に接続されるデータフローグラフが物理的にも接続されることを保証するために解析され得る。一部の例において、増強されたジョブログエントリは、物理データセットがどの論理データセットのインスタンスに対応するかを判定するために解析され得る。一部の例において、増強されたジョブログエントリは、同じ物理ファイル名を有するが、異なる静的解析パラメータに関連付けられるデータセットを特定するために解析され得る。そのような例においては、不整合が、手動で修復するためにユーザに提示される可能性があり、又は自動的に修復される可能性がある。一部の例において、データ系統のレポートは、不整合の指示と、不整合が自動的に修正されたか否かとを含む可能性がある。
【００７６】
一部の例において、増強されたジョブログエントリは、頻度及び／又は新しさによってデータ系統のレポートをフィルタリングするためにデータ系統モジュールによって使用され得る。例えば、メタデータ環境モジュールは、実行モジュールによってもはや実行されないいくつかのデータフローグラフ及びｐｓｅｔを保有する可能性がある。そのようなデータフローグラフ及びｐｓｅｔは、万が一後で必要とされる場合に備えて適所に残される可能性がある。しかし、実行されないデータフローグラフ及びｐｓｅｔは、データ系統のレポートを不必要に乱雑にする可能性がある。乱雑さを減らすために、増強されたジョブログエントリは、どのデータフローグラフ及び／若しくはｐｓｅｔがまれにしか使用されず並びに／又は最近使用されていないかを判定するために解析され得る。頻度及び新しさの情報に基づいて、まれにしか実行されず、最近実行されていないデータフローグラフ及びｐｓｅｔ（例えば、過去１年間実行されなかったデータフローグラフ）は、企業ユーザに提示する前にデータ系統のレポートから除去される可能性がある。
【００７７】
一部の例においては、所与のデータフローグラフに関する論理ｐｓｅｔ（例えば、FEED = USAを含むｐｓｅｔ）が存在する可能性があるが、データフローグラフを呼び出す１又は２以上のジョブは、既存のｐｓｅｔを利用する代わりにデータフローグラフにパラメータ値を直接与えることによってそのようにする。そのような場合、ジョブと（例えばジョブに関連する署名を介して）ジョブによってアクセスされた論理ｐｓｅｔとの間で保有される関連付けが、ジョブログエントリをそれらのジョブログエントリの関連する論理ｐｓｅｔに基づいてグループ分けするために使用され得る。グループ分けに基づいて、既存のｐｓｅｔを利用する代わりにグラフを直接呼び出すことによってインスタンス化されるジョブが、論理ｐｓｅｔ及びその論理ｐｓｅｔのパラメータに関連するものとして特定され得る。
【００７８】
一部の例において、データフローグラフに関するそれぞれのジョブログエントリは、情報の中でもとりわけ、ジョブログエントリに関連付けられるデータフローグラフの実行のためのすべての解決されたパラメータ値のリストを含む。いくつかのジョブログエントリがたまると、ジョブログエントリに含まれる解決されたパラメータ値が、データフローグラフのさまざまな「設計時インスタンス」を特定するために比較され得る。例えば、ジョブログエントリ内の特定の解決されたパラメータが、ジョブログエントリのすべての中のほんのいくつかの値によって表される可能性がある一方、特定のその他の解決されたパラメータは、ジョブログエントリのすべての中の多くの異なる値によって表される可能性がある。ジョブログエントリ内のほんのいくつかの値によって表される解決されたパラメータは、おそらくは「設計時」パラメータであり、ジョブログエントリ内の多くの異なる値によって表されるその他の解決されたパラメータは、おそらくは「ランタイムパラメータ」である。「設計時パラメータ」の一意の組合せを共有するデータフローグラフのインスタンスは、一緒にグループ化され、すべてデータフローグラフの「設計時インスタンス」であると考えられる。データ系統モジュールは、データフローグラフの異なる設計時インスタンスをデータ系統のレポートに含める。
【００７９】
５  重複論理データセット発見及び軽減方法
５．１  概要
概して、所与のデータフローグラフに関する入力及び出力データセット（例えば、データのデータベース又はテーブル）は、データフローグラフ内の論理データセットとして規定される。一部の例において、それぞれの論理データセットは、論理ファイル名などの識別子に関連付けられる。
【００８０】
データフローグラフは、実行される前に、それぞれの論理データセットを対応する物理データセット（例えば、ディスク上のファイル）に解決することを含め、実行のために準備される。一部の例において、それぞれの物理データセットは、物理ファイル名（例えば、ｓｕｍｍａｒｙ．ｄａｔ）などの識別子に関連付けられる。パラメータ解決プロセスは、たとえ論理データセットの論理ファイル名が対応する物理データセットの物理ファイル名と異なるとしても、論理データセットをその論理データセットの対応する物理データセットにうまく解決することができる。
【００８１】
データ系統のレポートが２又は３以上の部分グラフを含むデータフローグラフに関して決定されるとき、部分グラフの間の系統の関係が、２又は３以上の部分グラフの入力及び出力論理データセットの論理ファイル名に従って少なくとも部分的に決定される。このため、系統の関係の正しさは、所与の物理データセットを参照する２又は３以上のいかなる入力及び出力論理データセットも同じ論理ファイル名を共有することを必要とする。さらに言えば、第１の部分グラフが所与の物理データセットに書き込み、その後、第２の部分グラフが所与の物理データセットから読み取るが、第１の部分グラフの出力論理データセット及び第２の部分グラフの入力論理データセットの論理ファイル名が一致しない場合、２つの部分グラフの間で系統の関係は特定されない。一部の例において、同じ物理データセットに解決するが、一致しない論理ファイル名を有する２つの論理データセットは、「重複論理データセット」と呼ばれる。
【００８２】
下で詳細に説明されるように、データフローグラフ内の重複論理データセットは、特定され、ユーザに提示され得る。そのとき、ユーザは、いくつかの方法で重複論理データセットに対処することを選択し得る。
【００８３】
５．２  重複論理データセットのない例
図８を参照すると、図１の開発環境１１８を使用して生じさせられたデータフローグラフ８１７の例が、ｇａｔｈｅｒ．ｍｐと命名された第１の部分グラフ８０２と、ｐｒｏｃｅｓｓ．ｍｐと命名された第２の部分グラフ８０４とを含む。
【００８４】
第１の部分グラフ８０２は、論理ファイル名「Ａｃｃｔ＿１．ｄａｔ」を有する第１の論理データセットＤＬ１  ８０６及び論理ファイル名「Ａｃｃｔ＿２．ｄａｔ」を有する第２の論理データセットＤＬ２  ８０８を入力として受け取る。第１の部分グラフ８０２は、第１の及び第２の論理データセット８０６、８０８からのデータを処理し、論理ファイル名「Ａｃｃｔ＿ｓｕｍｍ．ｄａｔ」を有する第３の論理データセットＤＬ３  ８１０に処理の結果を書き込む。第２の部分グラフ８０４は、論理ファイル名「Ａｃｃｔ＿ｓｕｍｍ．ｄａｔ」を有する第３の論理データセットＤＬ３  ８１０を入力として受け取り、第３の論理データセット８１０からのデータを処理し、処理の結果をテーブル８１４に書き込む。第１の部分グラフ８０２と第２の部分グラフ８０４との両方によって使用される第３の論理データセット８１０は、部分グラフ８０２、８０４の両方において同じ論理ファイル名を有することに留意されたい。
【００８５】
図９を参照すると、データフローグラフ８１７が実行前に解決されるとき、論理データセットは、それらの論理データセットの対応する物理データセットに解決される。例えば、第１の論理データセット８０６は、物理ファイル名「Ａｃｃｔ＿１．ｄａｔ」を有する第１の物理データセットＤＰ１  ８１４に解決され、第２の論理データセット８０８は、物理ファイル名「Ａｃｃｔ＿２．ｄａｔ」を有する第２の物理データセットＤＰ２  ８１６に解決され、第３の論理データセット８１０は、物理ファイル名「ｓｕｍｍａｒｙ．ｄａｔ」を有する第３の物理データセットＤＰ３  ８１８に解決される。
【００８６】
図１０を参照すると、データフローグラフに関するデータ系統のレポート１０１７が、第１の部分グラフ１００２、第２の部分グラフ１００４、第１の論理データセット１００６、第２の論理データセット１００８、及び第３の論理データセット１０１０を含む。データ系統のレポート１０１７は、第１の論理データセット１００６と第１の部分グラフ１００２の入力との間の第１の系統の関係１０１８、第２の論理データセット１００８と第１の部分グラフ１００２の入力との間の第２の系統の関係１０２０、第１の部分グラフ１００２の出力と第３の論理データセット１０１０との間の第３の系統の関係１０２２、及び第３の論理データセット１０１０と第２の部分グラフ１００４との間の第４の系統の関係１０２４も含む。この場合、同じ論理ファイル名（すなわち、「Ａｃｃｔ＿ｓｕｍｍ．ｄａｔ」）を有する同じ論理データセット（すなわち、第３の論理データセットＤＬ３  ８１０）が第１の部分グラフ８０２の出力及び第２の部分グラフ８０４の入力に存在するので、データ系統のレポート１０１７は正しいことに留意されたい。
【００８７】
５．３  重複論理データセットがある例
図１１を参照すると、図１の開発環境１１８を使用して生じさせられたデータフローグラフ１１１７の別の例が、ｇａｔｈｅｒ．ｍｐと命名された第１の部分グラフ１１０２及びｐｒｏｃｅｓｓ．ｍｐと命名された第２の部分グラフ１１０４を含む。
【００８８】
第１の部分グラフ１１０２は、論理ファイル名「Ａｃｃｔ＿１．ｄａｔ」を有する第１の論理データセットＤＬ１  １１０６及び論理ファイル名「Ａｃｃｔ＿２．ｄａｔ」を有する第２の論理データセットＤＬ２  １１０８を入力として受け取る。第１の部分グラフ１１０２は、第１の及び第２の論理データセット１１０６、１１０８からのデータを処理し、論理ファイル名「Ａｃｃｔ＿ｓｕｍｍ．ｄａｔ」を有する第３の論理データセットＤＬ３  １１１０に処理の結果を書き込む。第２の部分グラフ１１０４は、論理ファイル名「Ａｃｃｔ−ｓｕｍｍ．ｄａｔ」を有する第４の論理データセットＤＬ４  １１１１の入力を入力として受け取り、第４の論理データセット１１１１からのデータを処理し、処理の結果をテーブル８１４に書き込む。第３の論理データセット１１１０の論理ファイル名（すなわち、「Ａｃｃｔ＿ｓｕｍｍ．ｄａｔ」）は、第４の論理データセット１１１１の論理ファイル名（すなわち、「Ａｃｃｔ−ｓｕｍｍ．ｄａｔ」）とは異なることに留意されたい。
【００８９】
図１２を参照すると、データフローグラフ１１１７が実行前に解決されるとき、論理データセットは、それらの論理データセットの対応する物理データセットに解決される。例えば、第１の論理データセット１１０６は、物理ファイル名「Ａｃｃｔ＿１．ｄａｔ」を有する第１の物理データセットＤＰ１  １１１４に解決され、第２の論理データセット１１０８は、物理ファイル名「Ａｃｃｔ＿２．ｄａｔ」を有する第２の物理データセットＤＰ２  １１１６に解決され、第３の論理データセット１１１０と第４の論理データセット１１１１との両方は、物理ファイル名「ｓｕｍｍａｒｙ．ｄａｔ」を有する第３の物理データセットＤＰ３  １２１８に解決される。第３の論理データセット１１１０及び第４の論理データセット１１１１は、それぞれ同じ物理データセット（すなわち、第３の物理データセット１２１８）を指すので重複論理データセットであることに留意されたい。
【００９０】
図１３を参照すると、データフローグラフに関するデータ系統のレポート１３１７が、第１の部分グラフ１１０２、第２の部分グラフ１１０４、第１の論理データセット１１０６、第２の論理データセット１１０８、第３の論理データセット１１１０、及び第４の論理データセット１１１１を含む。データ系統のレポート１３１７は、第１の論理データセット１１０６と第１の部分グラフ１１０２の入力との間の第１の系統の関係１３１８、第２の論理データセット１１０８と第１の部分グラフ１１０２の入力との間の第２の系統の関係１３２０、第１の部分グラフ１００２の出力と第３の論理データセット１１１０との間の第３の系統の関係１３２２、及び第４の論理データセット１１１１と第２の部分グラフ１１０４との間の第４の系統の関係１３２４も含む。
【００９１】
この場合、異なる論理ファイル名を有する２つの異なる論理データセット（すなわち、第３の論理データセット１１１０及び第４の論理データセット１１１１）が同じ物理データセット（すなわち、第３の物理データセット１２１８）を参照するので、データ系統のレポート１３１７は正しくないことに留意されたい。特に、論理ファイル名「Ａｃｃｔ＿ｓｕｍｍ．ｄａｔ」を有する第３の論理データセットＤＬ３  １１１０が、第１の部分グラフ１１０２の出力に存在し、論理ファイル名「Ａｃｃｔ−ｓｕｍｍ．ｄａｔ」を有する第４の論理データセット１１１１が、第２の部分グラフ１１０４の入力に存在する。データ系統のレポート１３１７は、第３の論理データセット１１１０及び第４の論理データセット１１１１を、互いにいかなる系統の関係もない別々のデータセットとして表す。したがって、データ系統のレポート１３１７は、第３の論理データセット１１１０と第４の論理データセット１１１１との間のデータ系統の断絶を誤って含む。
【００９２】
５．４  重複論理データセットの発見
一部の例において、データフローグラフ内の重複論理データセットは、データフローグラフの実行によって生じさせられたランタイムアーチファクト（artifact）（例えば、図５のジョブログ４２９）を解析することによって発見され得る。特に、データフローグラフが実行されるたびに、ジョブログが生じさせられる。
【００９３】
ジョブログは、グラフインスタンス名と、グラフ内のそれぞれのデータセット構成要素に関して、そのデータセット構成要素がアクセスした物理データセット及びアクセスの種類（読み取り又は書き込み）とを含むデータフローグラフの実行に関連する情報を含む。グラフインスタンスは、それぞれのデータセット構成要素の論理データセット名を決定するために調べられ得る。グラフインスタンス及びデータセット構成要素名に対するマッチングによって、システムは、論理データセット名を物理データセット名にマッピングすることができる。
【００９４】
重複論理データセットを特定するために、マッピングの第１の論理データセットがマッピングの第２の論理データセットと異なる論理データセットから物理データセットへのマッピングを特定するためにジョブログが解析される。第１の論理データセット及び第２の論理データセットが異なる論理データセットから物理データセットへのマッピングは、重複論理データセットとして分類される。
【００９５】
特定された重複論理データセットは、重複論理データセットを訂正すべきか否かを判断するユーザに提示されるか、又は自動的に軽減されるかのどちらかである。
【００９６】
５．４．１  重複論理データセット発見の例
再び図１２を参照すると、解決されたデータフローグラフ１１１７が実行されるとき、データフローグラフの実行に関するジョブログが生じさせられる。ジョブログは、第１の部分グラフ１１０２と第２の部分グラフ１１０４との間のフローに対応する単一の論理データセットから物理データセットへのマッピングを含む。論理データセットから物理データセットへのマッピングは、第１の部分グラフ１１０４の出力の第３の論理データセットＤＬ３  １１１０に関する識別子、第２の部分グラフ１１０６の入力の第４の論理データセットＤＬ４  １１１１に関する識別子、及び第３の物理データセット１２１８に関する識別子を含む。
【００９７】
第３の論理データセット１１１０及び第４の論理データセット１１１１は、同じ物理データセット（すなわち、第３の物理データセット１２１８）を指す異なる論理データセット（例えば、異なる論理ファイル名を有する論理データセット）であるので、重複論理データセットとして分類される。
【００９８】
上述の簡単な例は単一のジョブログからの重複論理データセットの単一のペアの特定を含むが、上述の重複論理データセット発見手法を含むデータ処理システムの実際の実施形態においては、重複論理データセットの多数のペアが、多数のジョブログを使用して特定される可能性がある。
【００９９】
５．５  重複論理データセットの軽減
上述のように、重複論理データセットは、データ系統のレポート内の断絶をもたらす可能性がある。重複論理データセットが特定されると、重複論理データセットを消去するか又はデータ系統のレポートに対するそれらの重複論理データセットの影響を軽減するためにいくつかの異なる手法が使われ得る。一部の例において、特定された重複論理データセットは、例えば、スプレッドシートの形態でユーザに提示される。そのとき、ユーザは、（例えば、所与のデータフローグラフにおいて、所与の物理データセットが単一の論理データセットによってのみ参照されることを保証することによって）重複論理データセットを消去するために重複論理データセットを含むデータフローグラフを編集することができる。その他の例において、ユーザは、等価であるものとして重複論理データセットのペアに印を付ける可能性がある。このようにして、ユーザは、データフローグラフにいかなる変更を行うことも要求されない。さらにその他の例において、重複論理データセットのペアは、等価であるものとして自動的に印を付けられる可能性がある。
【０１００】
重複論理データセットのペアが等価であるものとして印を付けられるとき、データ系統のレポート内で等価性を表示するいくつかの手法が存在する。１つの手法においては、データ系統のレポート内で、重複論理データセットのペアが参照する物理データセットが重複論理データセットに接続されて示される。例えば、図１４を参照すると、第３の物理データセットＤＰ３  １２１８がデータ系統のレポート１３１７に含まれる。第３の論理データセットＤＬ３  １１１０と第４の論理データセットＤＬ４  １１１１は、系列の関係１４５０及び１４５２によって第３の物理データセット１２１８に接続されるものとして示される。
【０１０１】
別の手法においては、重複論理データセットのペアの論理データセットが、系統の関係によってデータ系統のレポート内で互いに接続されて示される。例えば、図１５を参照すると、データ系統のレポート１３１７内で、第３の論理データセットＤＬ３  １１１０は、系統の関係１５５０によって第４の論理データセットＤＬ４  １１１１に接続されるものとして示される。
【０１０２】
別の手法においては、重複論理データセットのペアが、データ系統のレポート内で組み合わされた論理データセットによって表される。例えば、図１６を参照すると、重複論理データセットのペアが、データ系統のレポート１３１７内で組み合わされた論理データセットＤＬＲ１６５４によって表される。
【０１０３】
別の手法においては、重複論理データセットのペアのうちの一方の論理データセットが、データ系統の重複レポート内で論理データセットのペアを表すために選択される。例えば、図１７を参照すると、第４の論理データセットＤＬ４  １１１１が、データ系統のレポート１３１７内で重複論理データセットのペアを表す。
【０１０４】
別の手法においては、重複論理データセットのペアと、重複論理データセットのペアの組み合わされた論理データセットの表現とが、データ系統のレポートに含まれる。重複論理データセットのペアと組み合わされた論理データセットの表現との間の系統の関係の一意の構成が、データ系統グラフ内に示される。例えば、図１８を参照すると、データ系統のレポート１３１７は、重複論理データセットのペアの組み合わされた論理データセットの表現ＤＬＲ１８５４、第３の論理データセットＤＬ３  １１１０、及び第４の論理データセットＤＬ４  １１１１を含む。組み合わされた論理データセット１８５４は、第１の部分グラフ１１０２及び第２の部分グラフ１１０４と直接的な系統の関係を有するものとして示される。また、組み合わされた論理データセット１８４５は、第３の論理データセット１１１０を介した第１の部分グラフ１１０２との間接的な系統の関係を有し、第４の論理データセット１１１１を介した第２の部分グラフ１１０４との間接的な系統の関係を有するものとして示される。
【０１０５】
別の手法においては、重複論理データセットのペアの論理データセットが、データ系統のレポートに含まれる。重複論理データセットのペアの論理データセットの間の系統の関係の一意の構成が、データ系統グラフ内に示される。例えば、図１９を参照すると、データ系統のレポート１３１７は、第３の論理データセットＤＬ３  １１１０及び第４の論理データセットＤＬ４  １１１１を含む。第４の論理データセット１１１１は、第１の部分グラフ１１０２及び第２の部分グラフ１１０４と直接的な系統の関係を有するものとして示される。第３の論理データセットＤＬ３  １１１０は、第１の部分グラフ１１０２との直接的な系統の関係を有し、第４の論理データセット１１１１を介した第２の部分グラフ１１０４との間接的な系統の関係を有するものとして示される。
【０１０６】
一部の例において、上述の軽減手法は、データ系統のレポート内で、破線、太線、又は軽減手法がデータ系統のレポートに適用されたことがデータ系統のレポートのユーザに対して明瞭であるその他の代替的な方法で示される。
【０１０７】
上述の重複論理データセット発見及び軽減手法が第１の構成要素が物理データセットに書き込み、別の構成要素がその物理データセットから読み取る筋書きを用いて説明されているが、その他の筋書きが重複論理データセットをもたらし得ることが留意される。例えば、重複論理データセットのペアが、同じ物理データセットから読み取る２つの異なる論理データセットから生じる可能性がある。同様に、重複論理データセットのペアが、同じ物理データセットに書き込む２つの異なる論理データセットから生じる可能性がある。
【０１０８】
上述の手法が、２００９年２月２６日に出願した米国特許出願第１２／３９３，７６５号明細書、２０１１年１０月２５日に出願した米国特許出願第１３／２８１，０３９号明細書、及び２０１４年７月２４日に出願した米国仮出願第６２／０２８，４８５号明細書においてより詳細に説明されているようにデータ系統情報を管理し、提示するための及びデータセットオブジェクトを管理するためのさまざまなその他の手法の特徴を組み込む可能性があり、これらの出願のすべては、参照により本明細書に組み込まれる。
【０１０９】
上述の手法は、例えば、好適なソフトウェア命令を実行するプログラミング可能なコンピューティングシステムを用いて実装される可能性があり、又はフィールドプログラマブルゲートアレイ（ＦＰＧＡ，field-programmable gate array）などの好適なハードウェアで、若しくは何らかの混成の形態で実装される可能性がある。例えば、プログラミングされる手法において、ソフトウェアは、それぞれが少なくとも１つのプロセッサ、（揮発性及び／又は不揮発性メモリ及び／又はストレージ要素を含む）少なくとも１つのデータストレージシステム、（少なくとも１つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも１つの出力デバイス又はポートを用いて出力を与えるための）少なくとも１つのユーザインターフェースを含む（分散、クライアント／サーバ、又はグリッドなどのさまざまなアーキテクチャである可能性がある）１又は２以上のプログラミングされた又はプログラミング可能なコンピューティングシステムで実行される１又は２以上のコンピュータプログラムの手順を含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの１又は２以上のモジュールを含む可能性がある。プログラムのモジュール（例えば、データフローグラフの要素）は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
【０１１０】
ソフトウェアは、ＣＤ−ＲＯＭ又は（例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な）その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される（例えば、伝搬信号に符号化される）可能性がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）若しくは専用の特定用途向け集積回路（ＡＳＩＣ，application-specific integrated circuit）などの専用のハードウェアを用いて実行される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読ストレージ媒体（例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体）に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの１又は２以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【０１１１】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の特許請求の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の特許請求の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行される可能性がある。
【図１】
0006636009.tif 000002
【図２】
0006636009.tif 000003
【図３】
0006636009.tif 000004
【図４】
0006636009.tif 000005
【図５】
0006636009.tif 000006
【図６】
0006636009.tif 000007
【図７】
0006636009.tif 000008
【図８】
0006636009.tif 000009
【図９】
0006636009.tif 000010
【図１０】
0006636009.tif 000011
【図１１】
0006636009.tif 000012
【図１２】
0006636009.tif 000013
【図１３】
0006636009.tif 000014
【図１４】
0006636009.tif 000015
【図１５】
0006636009.tif 000016
【図１６】
0006636009.tif 000017
【図１７】
0006636009.tif 000018
【図１８】
0006636009.tif 000019
【図１９】
0006636009.tif 000020