(57)【特許請求の範囲】
【請求項１】
パラメータ値の集合を管理するための方法であって、
ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るステップと、
前記ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するステップであって、前記ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられる、ステップとを含み、前記処理するステップが、
前記ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、前記ジェネリックコンピュータプログラムを解析することと、
パラメータ値の特定の集合を形成するために前記ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、
前記ログエントリに現れる前記第１のクラスのメンバーとして分類された全てのパラメータの値を前記特定の集合に含めること、及び
前記ログエントリに現れる前記第２のクラスのメンバーとして分類されたパラメータの値を前記特定の集合から除外することを含む、処理することと、
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の前記複数の集合のうちのパラメータ値の前記集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の集合に追加すべきかどうかを決定することとを含む、前記方法。
【請求項２】
ログエントリを処理するステップが、パラメータがジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かに基づいて前記パラメータを分類することを含む、請求項１に記載の方法。
【請求項３】
パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較が、
パラメータ値の前記特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて前記第１の識別子を決定することと、
パラメータ値の前記集合の前記少なくとも一部のパラメータ値のそれぞれの集合に関して１つずつ複数の第２の識別子を決定することと、
前記第１の識別子を前記複数の第２の識別子のうちのそれぞれの第２の識別子と比較して、前記第１の識別子及び前記第２の識別子のいずれかが一致するかどうかを決定することとを含む、請求項１に記載の方法。
【請求項４】
パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することが、第２の識別子のうちのいずれも前記第１の識別子と一致しない場合にパラメータ値の前記特定の集合をパラメータ値の前記複数の集合に追加すると決定することを含む、請求項３に記載の方法。
【請求項５】
第１の識別子を決定することが、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第２の識別子を決定することが、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部の中身から識別文字列を計算することを含む、請求項３に記載の方法。
【請求項６】
第１の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの第１のインスタンスに関するプロジェクトスコープのうちの１又は２以上の連結を形成することを含む、請求項３に記載の方法。
【請求項７】
第１の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの第１のインスタンスに関するプロジェクトスコープのうちの１又は２以上にデータマッピング関数を適用することを含む、請求項３に記載の方法。
【請求項８】
データマッピング関数が、ハッシュ関数を含む、請求項７に記載の方法。
【請求項９】
パラメータの第１のクラスが、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第２のクラスが、前記ジェネリックコンピュータプログラムの前記論理的な動作に影響を与えないパラメータを含む、請求項１に記載の方法。
【請求項１０】
ジェネリックコンピュータプログラムが、データ処理動作を表すノードと、前記データ処理動作の間のデータ要素のフローを表す前記ノードの間のリンクとを含むデータフローグラフとして規定される、請求項１に記載の方法。
【請求項１１】
パラメータのそれぞれに関して、解析が、パラメータを自動的に分類することか、又は前記パラメータに関するユーザによって定義された分類を受け入れることかのどちらかを含む、請求項１に記載の方法。
【請求項１２】
パラメータを自動的に分類することが、最初に前記パラメータをパラメータの第１のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際の前記パラメータのいくつかの一意の値を決定することと、前記パラメータの前記いくつかの一意の値が所定の閾値を超える場合に前記パラメータをパラメータの第２のクラスに属するものとして再分類することとを含む、請求項１１に記載の方法。
【請求項１３】
パラメータを自動的に分類することが、最初に前記パラメータをパラメータの第１のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際の前記パラメータの値の変化が前記ジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かを決定することと、前記パラメータの値の変化が前記データ系統に影響を与えない場合に前記パラメータをパラメータの第２のクラスに属するものとして再分類することとを含む、請求項１１に記載の方法。
【請求項１４】
ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリとパラメータ値の特定の集合との間の関連付けを形成するステップをさらに含む、請求項１に記載の方法。
【請求項１５】
ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリが、実行コマンドへの引数として与えられた１又は２以上のパラメータ値を含む、前記ジェネリックコンピュータプログラムをインスタンス化するために使用された前記実行コマンドのログエントリを含む、請求項１に記載の方法。
【請求項１６】
ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリが、前記第１のインスタンスが実行されたプロジェクトの指示、前記第１のインスタンスに関する内部パラメータの指示、並びに前記第１のインスタンスによって使用された環境設定、グローバル変数、及び構成変数の指示のうちの１又は２以上をさらに含む、請求項１５に記載の方法。
【請求項１７】
データ系統のレポートを形成するために、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体と、前記複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体とを処理するステップをさらに含み、パラメータ値の前記複数の集合全体が、前記ジェネリックコンピュータプログラムに関するパラメータ値の増強された複数の集合を含み、前記複数のジェネリックコンピュータプログラムの前記少なくとも一部のインスタンスの実行に関連する前記複数のログエントリ全体が、パラメータ値の特定の集合との関連付けを含め、前記ジェネリックコンピュータプログラムの前記第１のインスタンスの実行の前記ログエントリを含む、請求項１１に記載の方法。
【請求項１８】
データ系統のレポートを形成することが、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、
パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するすべてのログエントリを特定するために前記複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理し、前記ジェネリックコンピュータプログラムのインスタンスの実行に関連する特定されたログエントリから前記ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間を特定することと、
前記ジェネリックコンピュータプログラムのインスタンス化の前記最も新しい時間に基づいて前記データ系統のレポートにパラメータの前記集合を含めるべきかどうかを決定することとを含む、請求項１７に記載の方法。
【請求項１９】
ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間に基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することが、インスタンス化の前記最も新しい時間を所定の時間間隔と比較し、前記ジェネリックコンピュータプログラムのインスタンス化の前記最も新しい時間が前記所定の時間間隔以内である場合に前記データ系統のレポートにパラメータの前記集合を含めることを含む、請求項１８に記載の方法。
【請求項２０】
データ系統のレポートを形成することが、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、
パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するいくつかのログエントリを決定するために前記複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理することと、
前記ジェネリックコンピュータプログラムのインスタンスの実行に関連する前記いくつかのログエントリに基づいて前記データ系統のレポートにパラメータの集合を含めるべきかどうかを決定することとを含む、請求項１７に記載の方法。
【請求項２１】
パラメータ値の集合を管理するための、コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取ることと、
前記ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理することであって、前記ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられ、処理することに基づいてパラメータ値の前記複数の集合を増強する、処理することとを行わせるための命令を含み、前記処理することが、
前記ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、前記ジェネリックコンピュータプログラムを解析することと、
パラメータ値の特定の集合を形成するために前記ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、
前記ログエントリに現れる前記第１のクラスのメンバーとして分類されたパラメータの値を前記特定の集合に含めること、及び
前記ログエントリに現れる前記第２のクラスのメンバーとして分類されたパラメータの値を前記特定の集合から除外することを含む、処理することと、
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の前記複数の集合のうちのパラメータ値の前記集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の集合に追加すべきかどうかを決定することとを含む、前記ソフトウェア。
【請求項２２】
パラメータ値の集合を管理するためのコンピューティングシステムであって、
ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るための入力デバイス又はポートと、
前記ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するための少なくとも１つのプロセッサであって、前記ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられる、少なくとも１つのプロセッサとを含み、前記処理することが、
前記ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、前記ジェネリックコンピュータプログラムを解析することと、
パラメータ値の特定の集合を形成するために前記ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、
前記ログエントリに現れる前記第１のクラスのメンバーとして分類されたパラメータの値を前記特定の集合に含めること、及び
前記ログエントリに現れる前記第２のクラスのメンバーとして分類されたパラメータの値を前記特定の集合から除外することを含む、処理することと、
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の前記複数の集合のうちのパラメータ値の前記集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の集合に追加すべきかどうかを決定することとを含む、前記コンピューティングシステム。
【請求項２３】
パラメータ値の集合を管理するためのコンピューティングシステムであって、
ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るための手段と、
前記ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するための手段であって、前記ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられる、手段とを含み、前記処理することが、
前記ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、前記ジェネリックコンピュータプログラムを解析することと、
パラメータ値の特定の集合を形成するために前記ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、
前記ログエントリに現れる前記第１のクラスのメンバーとして分類されたパラメータの値を前記特定の集合に含めること、及び
前記ログエントリに現れる前記第２のクラスのメンバーとして分類されたパラメータの値を前記特定の集合から除外することを含む、処理することと、
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の前記複数の集合のうちのパラメータ値の前記集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の集合に追加すべきかどうかを決定することとを含む、前記コンピューティングシステム。
【請求項２４】
パラメータ値の集合を管理するための方法であって、
ジェネリックコンピュータプログラムを受け取るステップと、
パラメータ値の第１の集合を受け取るステップと、
パラメータ値の前記第１の集合に従って前記ジェネリックコンピュータプログラムをインスタンス化することによって前記ジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせるステップと、
１又は２以上のデータセットからのデータを受け取るステップと、
受け取られたデータの少なくとも一部を処理するために前記ジェネリックコンピュータプログラムの前記実行可能なインスタンスを実行するステップと、
前記ジェネリックコンピュータプログラムの前記実行可能なインスタンスに関するログエントリを生じさせるステップであって、前記ログエントリが、パラメータ値の前記第１の集合のうちの前記パラメータ値の少なくとも一部を含む、ステップと、
前記ログエントリを記憶するステップと、
前記ログエントリを受け取るステップと、
パラメータ値の特定の集合を形成するために前記ログエントリを処理するステップであって、前記ログエントリからパラメータ値の前記第１の集合のうちの前記パラメータ値の前記少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の前記特定の集合を形成することを含む、ステップと、
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の前から存在する集合に追加すべきかどうかを決定するステップとを含む、前記方法。
【請求項２５】
パラメータ値の特定の集合に関する識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較が、
パラメータ値の前記特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて第１の識別子を決定することと、
パラメータ値の前記前から存在する集合の前記少なくとも一部のパラメータ値のそれぞれの前から存在する集合に関して１つずつ複数の第２の識別子を決定することと、
前記第１の識別子を前記複数の第２の識別子のうちのそれぞれの第２の識別子と比較して、前記第１の識別子及び前記第２の識別子のいずれかが一致するかどうかを決定することとを含む、請求項２４に記載の方法。
【請求項２６】
パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定するステップが、第２の識別子のうちのいずれも第１の識別子と一致しない場合にパラメータ値の前記特定の集合をパラメータ値の前記複数の前から存在する集合に追加すると決定することを含む、請求項２５に記載の方法。
【請求項２７】
第１の識別子を決定することが、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第２の識別子を決定することが、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部の中身から識別文字列を計算することを含む、請求項２５に記載の方法。
【請求項２８】
第１の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの１又は２以上の連結を形成することを含む、請求項２５に記載の方法。
【請求項２９】
第１の識別子を決定することが、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、前記ジェネリックコンピュータプログラムの関数プロトタイプ、及び前記ジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの１又は２以上にデータマッピング関数を適用することを含む、請求項２５に記載の方法。
【請求項３０】
データマッピング関数が、ハッシュ関数を含む、請求項２９に記載の方法。
【請求項３１】
前記ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析するステップをさらに含む、請求項２４に記載の方法。
【請求項３２】
パラメータ値の特定の集合を形成するためにログエントリを処理するステップが、
前記ログエントリに現れる第１のクラスのメンバーとして分類された抽出されたパラメータ値を前記特定の集合に含めること、及び
前記ログエントリに現れる前記第２のクラスのメンバーとして分類された抽出されたパラメータ値を前記特定の集合から除外することをさらに含む、請求項３１に記載の方法。
【請求項３３】
パラメータの第１のクラスが、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第２のクラスが、前記ジェネリックコンピュータプログラムの前記論理的な動作に影響を与えないパラメータを含む、請求項３１に記載の方法。
【請求項３４】
パラメータ値の集合を管理するための、コンピュータ可読媒体に非一時的形態で記憶されたソフトウェアであって、コンピューティングシステムに、
ジェネリックコンピュータプログラムを受け取ることと、
パラメータ値の第１の集合を受け取ることと、
パラメータ値の前記第１の集合に従って前記ジェネリックコンピュータプログラムをインスタンス化することによって前記ジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせることと、
１又は２以上のデータセットからのデータを受け取ることと、
受け取られたデータの少なくとも一部を処理するために前記ジェネリックコンピュータプログラムの前記実行可能なインスタンスを実行することと、
前記ジェネリックコンピュータプログラムの前記実行可能なインスタンスに関するログエントリを生じさせることであって、前記ログエントリが、パラメータ値の前記第１の集合のうちの前記パラメータ値の少なくとも一部を含む、生じさせることと、
前記ログエントリを記憶することと、
前記ログエントリを受け取ることと、
パラメータ値の特定の集合を形成するために前記ログエントリを処理することであって、前記ログエントリからパラメータ値の前記第１の集合のうちの前記パラメータ値の前記少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の前記特定の集合を形成することを含む、処理することと、
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の前から存在する集合に追加すべきかどうかを決定することとを行わせるための命令を含む、前記ソフトウェア。
【請求項３５】
パラメータ値の集合を管理するためのシステムであって、
第１のコンピューティングシステムであって、
ジェネリックコンピュータプログラム、パラメータ値の第１の集合、及び１又は２以上のデータセットからのデータを受け取るための第１の入力デバイス又はポート、
１又は２以上のプロセッサの第１の集合であって、
パラメータ値の前記第１の集合に従って前記ジェネリックコンピュータプログラムをインスタンス化することによって前記ジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせること、
受け取られたデータの少なくとも一部を処理するために前記ジェネリックコンピュータプログラムの前記実行可能なインスタンスを実行すること、
前記ジェネリックコンピュータプログラムの前記実行可能なインスタンスに関するログエントリを生じさせることであって、前記ログエントリが、パラメータ値の前記第１の集合のうちの前記パラメータ値の少なくとも一部を含む、生じさせることを行うように構成された、１又は２以上のプロセッサの第１の集合、
前記ログエントリをストレージデバイスに記憶するための第１の出力デバイス又はポートを含む、第１のコンピューティングシステム、
第２のコンピューティングシステムであって、
前記ログエントリを受け取るための第２の入力デバイス又はポート、
１又は２以上のプロセッサの第２の集合であって、
パラメータ値の特定の集合を形成するために前記ログエントリを処理することであって、前記ログエントリからパラメータ値の前記第１の集合のうちの前記パラメータ値の前記少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の前記特定の集合を形成することを含む、処理すること、及び
パラメータ値の前記特定の集合に関する第１の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の前記特定の集合をパラメータ値の前記複数の前から存在する集合に追加すべきかどうかを決定することを行うように構成された、１又は２以上のプロセッサの第２の集合を含む、第２のコンピューティングシステムを含む、前記システム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１４年７月１８日に出願した米国特許出願第６２／０２６，２２８号明細書の優先権を主張するものである。
【０００２】
本明細書は、パラメータの集合の管理に関する。
【背景技術】
【０００３】
データ処理システムにおいては、データがシステムを通り抜けるときのそのデータの系統（lineage）のレポートに特定の種類のユーザがアクセスすることができることが望ましいことが多い。極めて広く、多くの用途の中でもとりわけ、そのような「データ系統」のレポートは、リスクを減らし、遵守義務を確認し、ビジネスプロセスを能率化し、データを保護するために使用され得る。データ系統のレポートは正しくかつ完全であることが重要である。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様においては、概して、パラメータ値の集合を管理して、パラメータ値のそれらの集合を使用してインスタンス化されたジェネリック（generic）コンピュータプログラムのインスタンスの間の関係を反映する系統情報が、より正確で完全なデータ系統のレポートの生成を可能にする。
【０００５】
別の態様においては、概して、パラメータ値の集合を管理するための方法が、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るステップと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するステップであって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられる、ステップとを含む。処理するステップは、ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第１のクラスのメンバーとして分類された全てのパラメータの値を特定の集合に含めること、及びログエントリに現れる第２のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【０００６】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【０００７】
ログエントリを処理するステップは、パラメータがジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かに基づいてパラメータを分類することを含む。
【０００８】
パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較は、パラメータ値の特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて第１の識別子を決定することと、パラメータ値の集合の少なくとも一部のパラメータ値のそれぞれの集合に関して１つずつ複数の第２の識別子を決定することと、第１の識別子を複数の第２の識別子のうちのそれぞれの第２の識別子と比較して、第１の識別子及び第２の識別子のいずれかが一致するかどうかを決定することとを含む。
【０００９】
パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することは、第２の識別子のうちのいずれも第１の識別子と一致しない場合にパラメータ値の特定の集合をパラメータ値の複数の集合に追加すると決定することを含む。
【００１０】
第１の識別子を決定することは、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第２の識別子を決定することは、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部の中身から識別文字列を計算することを含む。
【００１１】
第１の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの第１のインスタンスに関するプロジェクトスコープ（project scope）のうちの１又は２以上の連結を形成することを含む。
【００１２】
第１の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの第１のインスタンスに関するプロジェクトスコープのうちの１又は２以上にデータマッピング関数を適用することを含む。
【００１３】
データマッピング関数は、ハッシュ関数を含む。
【００１４】
パラメータの第１のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第２のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えないパラメータを含む。
【００１５】
ジェネリックコンピュータプログラムは、データ処理動作を表すノードと、データ処理動作の間のデータ要素のフローを表すノードの間のリンクとを含むデータフローグラフとして規定される。
【００１６】
パラメータのそれぞれに関して、解析は、パラメータを自動的に分類することか、又はパラメータに関するユーザによって定義された分類を受け入れることかのどちらかを含む。
【００１７】
パラメータを自動的に分類することは、最初にパラメータをパラメータの第１のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際のパラメータのいくつかの一意の値を決定することと、パラメータのいくつかの一意の値が所定の閾値を超える場合にパラメータをパラメータの第２のクラスに属するものとして再分類することとを含む。
【００１８】
パラメータを自動的に分類することは、最初にパラメータをパラメータの第１のクラスに属するものとして分類することと、ジェネリックコンピュータプログラムのインスタンスの複数の実行の際のパラメータの値の変化がジェネリックコンピュータプログラムに関連するデータ系統に影響を与えるか否かを決定することと、パラメータの値の変化がデータ系統に影響を与えない場合にパラメータをパラメータの第２のクラスに属するものとして再分類することとを含む。
【００１９】
方法は、ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリとパラメータ値の特定の集合との間の関連付けを形成するステップをさらに含む。
【００２０】
ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリは、実行コマンドへの引数として与えられた１又は２以上のパラメータ値を含む、ジェネリックコンピュータプログラムをインスタンス化するために使用された実行コマンドのログエントリを含む。
【００２１】
ジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリは、第１のインスタンスが実行されたプロジェクトの指示、第１のインスタンスに関する内部パラメータの指示、並びに第１のインスタンスによって使用された環境設定、グローバル変数、及び構成変数の指示のうちの１又は２以上をさらに含む。
【００２２】
方法は、データ系統のレポートを形成するために、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体と、複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体とを処理するステップをさらに含み、パラメータ値の複数の集合全体は、ジェネリックコンピュータプログラムに関するパラメータ値の増強された複数の集合を含み、複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体は、パラメータ値の特定の集合との関連付けを含め、ジェネリックコンピュータプログラムの第１のインスタンスの実行のログエントリを含む。
【００２３】
データ系統のレポートを形成することは、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するすべてのログエントリを特定するために複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理し、ジェネリックコンピュータプログラムのインスタンスの実行に関連する特定されたログエントリからジェネリックコンピュータプログラムのインスタンス化の最も新しい時間を特定することと、ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間に基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することとを含む。
【００２４】
ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間に基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することは、インスタンス化の最も新しい時間を所定の時間間隔と比較し、ジェネリックコンピュータプログラムのインスタンス化の最も新しい時間が所定の時間間隔以内である場合にデータ系統のレポートにパラメータの集合を含めることを含む。
【００２５】
データ系統のレポートを形成することは、複数のジェネリックコンピュータプログラムに関するパラメータ値の複数の集合全体のうちのパラメータ値のそれぞれの集合に関して、パラメータ値の集合に対応するジェネリックコンピュータプログラムのインスタンスの実行に関連するいくつかのログエントリを決定するために複数のジェネリックコンピュータプログラムの少なくとも一部のインスタンスの実行に関連する複数のログエントリ全体を処理することと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するいくつかのログエントリに基づいてデータ系統のレポートにパラメータの集合を含めるべきかどうかを決定することとを含む。
【００２６】
別の態様においては、概して、ソフトウェアが、パラメータ値の集合を管理するために、コンピュータ可読媒体に非一時的形態で記憶され、ソフトウェアは、コンピューティングシステムに、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取ることと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理することであって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられ、処理することに基づいてパラメータ値の複数の集合を増強する、処理することとを行わせるための命令を含む。処理することは、ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第１のクラスのメンバーとして分類されたパラメータの値を特定の集合に含めること、及びログエントリに現れる第２のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【００２７】
別の態様においては、概して、パラメータ値の集合を管理するためのコンピューティングシステムが、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るための入力デバイス又はポートと、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するための少なくとも１つのプロセッサであって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられる、少なくとも１つのプロセッサとを含む。処理することは、ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第１のクラスのメンバーとして分類されたパラメータの値を特定の集合に含めること、及びログエントリに現れる第２のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【００２８】
別の態様においては、概して、パラメータ値の集合を管理するためのコンピューティングシステムが、ジェネリックコンピュータプログラムに関するパラメータ値の複数の集合を受け取るための手段と、ジェネリックコンピュータプログラムのインスタンスの実行に関連するログエントリを処理するための手段であって、ジェネリックコンピュータプログラムのそれぞれのインスタンスが、１又は２以上のパラメータ値に関連付けられる、手段とを含む。処理することは、ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析することと、パラメータ値の特定の集合を形成するためにジェネリックコンピュータプログラムの第１のインスタンスの実行に関連するログエントリを処理することであって、ログエントリに現れる第１のクラスのメンバーとして分類されたパラメータの値を特定の集合に含めること、及びログエントリに現れる第２のクラスのメンバーとして分類されたパラメータの値を特定の集合から除外することを含む、処理することと、パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の集合のうちのパラメータ値の集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の集合に追加すべきかどうかを決定することとを含む。
【００２９】
別の態様においては、概して、パラメータ値の集合を管理するための方法が、ジェネリックコンピュータプログラムを受け取るステップと、パラメータ値の第１の集合を受け取るステップと、パラメータ値の第１の集合に従ってジェネリックコンピュータプログラムをインスタンス化することによってジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせるステップと、１又は２以上のデータセットからのデータを受け取るステップと、受け取られたデータの少なくとも一部を処理するためにジェネリックコンピュータプログラムの実行可能なインスタンスを実行するステップと、ジェネリックコンピュータプログラムの実行可能なインスタンスに関するログエントリを生じさせるステップであって、ログエントリが、パラメータ値の第１の集合のうちのパラメータ値の少なくとも一部を含む、ステップと、ログエントリを記憶するステップと、ログエントリを受け取るステップと、パラメータ値の特定の集合を形成するためにログエントリを処理するステップであって、ログエントリからパラメータ値の第１の集合のうちのパラメータ値の少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の特定の集合を形成することを含む、ステップと、パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定するステップとを含む。
【００３０】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【００３１】
パラメータ値の特定の集合に関する識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較は、パラメータ値の特定の集合及びジェネリックコンピュータプログラムの識別子に基づいて第１の識別子を決定することと、パラメータ値の前から存在する集合の少なくとも一部のパラメータ値のそれぞれの前から存在する集合に関して１つずつ複数の第２の識別子を決定することと、第１の識別子を複数の第２の識別子のうちのそれぞれの第２の識別子と比較して、第１の識別子及び第２の識別子のいずれかが一致するかどうかを決定することとを含む。
【００３２】
パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定することは、第２の識別子のうちのいずれも第１の識別子と一致しない場合にパラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すると決定することを含む。
【００３３】
第１の識別子を決定することは、パラメータ値の特定の集合の中身から識別文字列を計算することを含み、第２の識別子を決定することは、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部の中身から識別文字列を計算することを含む。
【００３４】
第１の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの１又は２以上の連結を形成することを含む。
【００３５】
第１の識別子を決定することは、ジェネリックコンピュータプログラムの識別子、パラメータ値の特定の集合の名前−値ペア、ジェネリックコンピュータプログラムの関数プロトタイプ、及びジェネリックコンピュータプログラムの実行可能なインスタンスに関するプロジェクトスコープのうちの１又は２以上にデータマッピング関数を適用することを含む。
【００３６】
データマッピング関数は、ハッシュ関数を含む。
【００３７】
方法は、ジェネリックコンピュータプログラムに関連する１又は２以上のパラメータのそれぞれをパラメータの第１のクラス又はパラメータの第２のクラスのどちらかのメンバーとして分類するために、ジェネリックコンピュータプログラムを解析するステップをさらに含む。
【００３８】
パラメータ値の特定の集合を形成するためにログエントリを処理するステップは、ログエントリに現れる第１のクラスのメンバーとして分類された抽出されたパラメータ値を特定の集合に含めること、及びログエントリに現れる第２のクラスのメンバーとして分類された抽出されたパラメータ値を特定の集合から除外することをさらに含む。
【００３９】
パラメータの第１のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えるパラメータを含み、パラメータの第２のクラスは、ジェネリックコンピュータプログラムの論理的な動作に影響を与えないパラメータを含む。
【００４０】
別の態様においては、概して、ソフトウェアが、パラメータ値の集合を管理するために、コンピュータ可読媒体に非一時的形態で記憶され、ソフトウェアは、コンピューティングシステムに、ジェネリックコンピュータプログラムを受け取ることと、パラメータ値の第１の集合を受け取ることと、パラメータ値の第１の集合に従ってジェネリックコンピュータプログラムをインスタンス化することによってジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせることと、１又は２以上のデータセットからのデータを受け取ることと、受け取られたデータの少なくとも一部を処理するためにジェネリックコンピュータプログラムの実行可能なインスタンスを実行することと、ジェネリックコンピュータプログラムの実行可能なインスタンスに関するログエントリを生じさせることであって、ログエントリが、パラメータ値の第１の集合のうちのパラメータ値の少なくとも一部を含む、生じさせることと、ログエントリを記憶することと、ログエントリを受け取ることと、パラメータ値の特定の集合を形成するためにログエントリを処理することであって、ログエントリからパラメータ値の第１の集合のうちのパラメータ値の少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の特定の集合を形成することを含む、処理することと、パラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定することとを行わせるための命令を含む。
【００４１】
別の態様においては、概して、パラメータ値の集合を管理するためのシステムが、第１のコンピューティングシステムであって、ジェネリックコンピュータプログラム、パラメータ値の第１の集合、及び１又は２以上のデータセットからのデータを受け取るための第１の入力デバイス又はポート、１又は２以上のプロセッサの第１の集合であって、パラメータ値の第１の集合に従ってジェネリックコンピュータプログラムをインスタンス化することによってジェネリックコンピュータプログラムの実行可能なインスタンスを生じさせること、受け取られたデータの少なくとも一部を処理するためにジェネリックコンピュータプログラムの実行可能なインスタンスを実行すること、ジェネリックコンピュータプログラムの実行可能なインスタンスに関するログエントリを生じさせることであって、ログエントリが、パラメータ値の第１の集合のうちのパラメータ値の少なくとも一部を含む、生じさせることを行うように構成された、１又は２以上のプロセッサの第１の集合、ログエントリをストレージデバイスに記憶するための第１の出力デバイス又はポートを含む、第１のコンピューティングシステム、第２のコンピューティングシステムであって、ログエントリを受け取るための第２の入力デバイス又はポート、１又は２以上のプロセッサの第２の集合であって、パラメータ値の特定の集合を形成するためにログエントリを処理することであって、ログエントリからパラメータ値の第１の集合のうちのパラメータ値の少なくとも一部を抽出し、抽出されたパラメータ値からパラメータ値の特定の集合を形成することを含む、処理すること、及びパラメータ値の特定の集合に関する第１の識別子の、パラメータ値の複数の前から存在する集合のうちのパラメータ値の前から存在する集合の少なくとも一部に関する識別子との比較に基づいて、パラメータ値の特定の集合をパラメータ値の複数の前から存在する集合に追加すべきかどうかを決定することを行うように構成された、１又は２以上のプロセッサの第２の集合を含む、第２のコンピューティングシステムを含む。
【００４２】
態様は、以下の利点のうちの１又は２以上を含む可能性がある。
【００４３】
本明細書において説明される手法を使用してパラメータの集合を発見し、発見されたパラメータの集合を使用してパラメータの集合の既存の集合を増強することによって、既存のパラメータの集合の増強された集合を使用して生じさせられたデータ系統のレポートが、データ処理システムの真のデータ系統をより正確に表す。特に、前に見落とされたであろうデータ処理システムに関するデータ系統の部分が、データ系統のレポートに含められる。
【００４４】
一部の例においては、パラメータの集合発見手法の結果が、コンピュータプログラムのインスタンスの実行のログエントリを増強する（つまり、発見されたパラメータの集合についての情報によってログエントリを増強する）ためにやはり使用され得る。増強されたログエントリは、コンピュータプログラム及び／又はデータセットの間の論理的なつながりが物理的なつながりに対応することを確認するために有利に使用され得る。この確認の結果は、ユーザに提示されるデータ系統がコンピュータプログラム並びにそれらのコンピュータプログラムの入力及び出力の間の正しい系統の関係を示すことを保証する。
【００４５】
本発明のその他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００４６】
【図１】パラメータの集合の発見のためのシステムのブロック図である。
【図２】部分グラフ及びそれらの部分グラフの関連するパラメータの集合を含むデータフローグラフである。
【図３】図２のデータフローグラフのランタイムの構成の図である。
【図４】図２のデータフローグラフの静的解析（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）などの専用のハードウェアを用いて実行される可能性がある。処理は、ソフトウェアによって規定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される可能性がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読み取られるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセスされ得るストレージデバイスのコンピュータ可読ストレージ媒体（例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体）に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの１又は２以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【０１３０】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の特許請求の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、添付の特許請求の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順序に依存しない可能性があり、したがって、説明された順序とは異なる順序で実行される可能性がある。
【図１】
0006457622.tif 000002
【図２】
0006457622.tif 000003
【図３】
0006457622.tif 000004
【図４】
0006457622.tif 000005
【図５】
0006457622.tif 000006
【図６】
0006457622.tif 000007
【図７】
0006457622.tif 000008
【図８】
0006457622.tif 000009
【図９】
0006457622.tif 000010
【図１０】
0006457622.tif 000011
【図１１】
0006457622.tif 000012
【図１２】
0006457622.tif 000013
【図１３】
0006457622.tif 000014
【図１４】
0006457622.tif 000015
【図１５】
0006457622.tif 000016
【図１６】
0006457622.tif 000017
【図１７】
0006457622.tif 000018
【図１８】
0006457622.tif 000019
【図１９】
0006457622.tif 000020