(57)【要約】      （修正有）【課題】データセットの特性を検査して、データセットの特性を決定する。【解決手段】データを処理するための方法であって、第１データソースのレコードの第１フィールドの値を特性化する情報、および第２データソースのレコードの第２フィールドの値を特性化する情報を受け取るステップと、前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するステップと、前記第１フィールド、および前記第２フィールドを関連付ける情報を提示するステップと、を含む。【選択図】図１
2010267288.tif 000002
【特許請求の範囲】
【請求項１】
データを処理するための方法であって、
データソースからのデータをプロファイリングするステップであって、前記データソースから前記データを読み取るステップ、前記データを読み取りながら前記データを特性付ける要約データを計算するステップ、および前記要約データに基づくプロファイル情報を格納するステップ、を含むプロファイリングステップと、
前記データソースからの前記データを処理するステップであって、前記格納したプロファイル情報にアクセスするステップ、および前記アクセスしたプロファイル情報に従って前記データを処理するステップを含む、処理ステップと、
を含む方法。
【請求項２】
前記データソースからの前記データを処理するステップが、前記データソースから前記データを読み取るステップを更に含む請求項１の方法。
【請求項３】
前記データをプロファイリングするステップが、前記データソース外に前記データのコピーを保持せずに実行される請求項１の方法。
【請求項４】
前記データが、条件付きフィールド、および可変数のフィールドのうちの少なくとも一方を有する可変レコード構造の記録を含む請求項３の方法。
【請求項５】
前記データを読み取りながら前記データを特性付ける要約データを計算するステップが、前記データを特性付ける要約データを計算しながら前記可変レコード構造のレコードを解釈するステップを含む請求項４の方法。
【請求項６】
前記データソースが、データ格納システムを含む請求項１の方法。
【請求項７】
前記データ格納システムが、データベースシステムを含む請求項６の方法。
【請求項８】
前記要約データを計算するステップが、フィールドに対する個別の値のセットそれぞれの出現数をカウントするステップを含む請求項１の方法。
【請求項９】
プロファイル情報を格納するステップが、前記フィールドに対する前記出現カウント数に基づいて前記フィールドに対する統計を格納するステップを含む請求項８の方法。
【請求項１０】
前記データソースに関連するメタデータを収容するメタデータ格納を維持するステップを更に含む請求項１の方法。
【請求項１１】
前記プロファイル情報を格納するステップが、前記データソースに関連する前記メタデータを更新するステップを含む請求項１０の方法。
【請求項１２】
前記データをプロファイリングするステップ、および前記データを処理するステップがそれぞれ、前記データソースのメタデータを利用する請求項１０の方法。
【請求項１３】
前記データソースからのデータをプロファイリングするステップが、前記プロファイル情報に基づいてフォーマット仕様を決定するステップを更に含む請求項１の方法。
【請求項１４】
前記データソースからのデータをプロファイリングするステップが、前記プロファイル情報に基づいて検証仕様を決定するステップを更に含む請求項１の方法。
【請求項１５】
前記データを処理するステップが、前記検証仕様に基づいて前記データ内の妥当でないレコードを識別するステップを含む請求項１４の方法。
【請求項１６】
前記データソースからのデータをプロファイリングするステップが、前記プロファイル情報に基づいてデータ変換命令を指定するステップを更に含む請求項１の方法。
【請求項１７】
前記データを処理するステップが、前記データに前記変換命令を適用するステップを含む請求項１６の方法。
【請求項１８】
前記データを処理するステップが、データ格納サブシステムに前記データをインポートするステップを含む請求項１の方法。
【請求項１９】
前記データを処理するステップが、データ格納サブシステムに前記データをインポートする前に前記データを検証するステップを含む請求項１８の方法。
【請求項２０】
前記データを検証するステップが、前記データの特性を前記データの基準特性と比較するステップを含む請求項１９の方法。
【請求項２１】
前記基準特性が、前記データの統計特性を含む請求項２０の方法。
【請求項２２】
前記データをプロファイリングするステップが、前記データを並列にプロファイリングするステップを含み、前記並列プロファイリングステップは、前記データをパーツにパーティション化するステップ、および並列成分の第１セットの別々のものを用いて前記パーツを処理するステップを含む請求項１の方法。
【請求項２３】
前記データを並列にプロファイリングするステップが、並列成分の第２セットの別々のものを用いて、前記データの異なるフィールドに対する前記要約データを計算するステップを更に含む請求項２２の方法。
【請求項２４】
前記データを並列にプロファイリングするステップが、並列成分の前記第１セットの出力を再パーティション化して、並列成分の前記第２セットに対する入力を形成するステップを更に含む請求項２３の方法。
【請求項２５】
前記データを並列にプロファイリングするステップが、並列データソースからの前記データを読み取るステップを含み、前記並列データソースの各パーツは、並列成分の前記第１セットのうちの異なるものにより処理される請求項２２の方法。
【請求項２６】
データを処理するための方法であって、
データソースからのデータをプロファイリングするステップであって、前記データソースから前記データを読み取るステップ、前記データを読み取りながら前記データを特性付ける要約データを計算するステップ、および前記要約データに基づくプロファイル情報を格納するステップを含む、プロファイリングステップを含み、
前記データをプロファイリングするステップは、前記データを並列にプロファイリングするステップを含み、前記並列プロファイリングステップは、前記データをパーツにパーティション化するステップ、および並列成分の第１セットのうちの別々のものを用いて前記パーツを処理するステップを含む方法。
【請求項２７】
データ処理システム上で実行されると、請求項１から２６までの何れかの方法ステップ全てを実行するように成された命令を含むソフトウエア。
【請求項２８】
コンピューター可読媒体上に実装される請求項２７のソフトウエア。
【請求項２９】
データ処理システムであって、
データソースからデータを読み取り、前記データを読み取りながら前記データを特性付ける要約データを計算し、前記要約データに基づくプロファイル情報を格納するよう構成されるプロファイリングモジュールと、
前記格納したプロファイル情報にアクセスし、前記アクセスしたプロファイル情報に従って前記データソースからの前記データを処理するよう構成される処理モジュールと、
を含むデータ処理システム。
【請求項３０】
データ処理システムであって、
データソースからデータをプロファイリングするための手段であって、前記データソースから前記データを読み取るための手段、前記データを読み取りながら前記データを特性付ける要約データを計算するための手段、および前記要約データに基づくプロファイル情報を格納するための手段を含む、プロファイル手段と、
前記データソースからの前記データを処理するための手段であって、前記格納したプロファイル情報にアクセスするための手段、および前記アクセスしたプロファイル情報に従って前記データを処理するための手段を含む、処理手段と、
を含むデータ処理システム。
【請求項３１】
データを処理するための方法であって、
第１データソースのレコードの第１フィールドの値を特性化する情報、および第２データソースのレコードの第２フィールドの値を特性化する情報を受け取るステップと、
前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するステップと、
前記第１フィールド、および前記第２フィールドを関連付ける情報を提示するステップと、
を含む方法。
【請求項３２】
前記情報を提示するステップが、前記情報をユーザーに提示するステップを含む請求項３１の方法。
【請求項３３】
前記第１データソース、および前記第２データソースが同一のデータソースである請求項３１の方法。
【請求項３４】
前記第１データソース、および前記第２データソースのうちの少なくとも１つがデータベーステーブルを含む請求項３１の方法。
【請求項３５】
前記関連性を特性化する前記量が、前記第１フィールド、および前記第２フィールドの値の結合特性を特性化する量を含む請求項３１の方法。
【請求項３６】
前記第１フィールドの値を特性化する前記情報が、前記第１フィールドの値の分布を特性化する情報を含む請求項３５の方法。
【請求項３７】
前記第１フィールドの値の分布を特性化する前記情報が、複数のデータレコードを含み、前記各データレコードは、異なる値と、その値の前記第１データソースの前記第１フィールドにおける対応する出現数とを関係付ける請求項３６の方法。
【請求項３８】
前記第２フィールドの値を特性化する情報が、前記フィールドの値の分布を特性化する情報を含む請求項３６の方法。
【請求項３９】
前記結合特性を特性化する前記量を計算するステップが、前記第１フィールド、および前記第２フィールドの値の前記分布を特性化する前記情報を処理して、複数の値共出現カテゴリと関連する量を計算するステップを含む請求項３８の方法。
【請求項４０】
前記第１フィールド、および前記第２フィールドの値の前記分布を特性化する前記情報が、複数のデータレコードを含み、前記各データレコードは、異なる値と、その値の対応する出現数とを関係付け、値の前記分布を特性化する前記情報を処理するステップが、それぞれ前記第１フィールド、および前記第２フィールド上の、前記第１データソース、および前記第２データソースの結合の値分布を特性化する情報を計算するステップを含む請求項３９の方法。
【請求項４１】
前記複数の値共出現カテゴリと関連する前記量が、複数のデータレコードを含み、前記データレコードのそれぞれは、前記共出現カテゴリの１つと関係付けられ、前記カテゴリにある前記第１および前記第２フィールドの一意の値の数を含む請求項３９の方法。
【請求項４２】
前記第１フィールド、および前記第２フィールドの前記値の前記結合特性を特性化する前記量を計算するステップが、それぞれ前記第１フィールド、および前記第２フィールドを用いて、前記第１データソース、および前記第２データソースの結合の値分布を特性化する情報を計算するステップを含む請求項３５の方法。
【請求項４３】
前記第１フィールド、および前記第２フィールドの前記値の前記結合特性を特性化する前記量を計算するステップが、複数の値共出現カテゴリと関連する量を計算するステップを含む請求項３５の方法。
【請求項４４】
前記値共出現カテゴリが、前記第１フィールド、および前記第２フィールドのうちの一方に少なくとも一回出現するが、前記フィールドの他方には出現しない値を含む請求項４２の方法。
【請求項４５】
前記値共出現カテゴリが、前記第１フィールド、および前記第２フィールドのそれぞれに唯一回出現する値を含む請求項４２の方法。
【請求項４６】
前記値共出現カテゴリが、前記第１フィールドおよび前記第２フィールドの一方に唯一回出現し、前記フィールドの他方に二回以上出現する値を含む請求項４２の方法。
【請求項４７】
前記値共出現カテゴリが、前記第１フィールド、および前記第２フィールドのそれぞれに二回以上出現する値を含む請求項４２の方法。
【請求項４８】
値を特性化する情報を受け取るステップ、および前記値の結合特性を特性化する量を計算するステップを更に含み、複数の第１および第２フィールド対について繰り返される請求項３５の方法。
【請求項４９】
複数のフィールド対それぞれが、前記値の前記結合特性を特性化する前記量を計算するよう前記フィールド対の値とともに含まれる一意の識別子を有する請求項４８の方法。
【請求項５０】
前記複数のフィールド対のうちの１つ以上の前記フィールドに関連する情報を提示するステップを更に含む請求項４８の方法。
【請求項５１】
前記複数のフィールド対のうちの１つ以上の前記フィールドに関連する前記情報を提示するステップが、フィールドを、複数種類のフィールド関連性のうちの１つの候補フィールドと識別するステップを含む請求項５０の方法。
【請求項５２】
前記複数種類のフィールド関連性が、一次キーと外部キーとの関連性を含む請求項５１の方法。
【請求項５３】
前記複数種類のフィールド関連性が、共通領域関連性を含む請求項５１の方法。
【請求項５４】
前記量を計算するステップが、前記第１フィールド、および前記第２フィールドの文字値から変換される論理値に基づいて前記量を計算するステップを含む請求項３１の方法。
【請求項５５】
前記量を計算するステップが、前記量を並列計算するステップを含み、前記並列計算ステップは、前記データレコードをパーツにパーティション化するステップ、および並列成分のセットのうちの別々のものを用いて前記パーツを処理するステップを含む請求項３７の方法。
【請求項５６】
前記パーツが、前記第１フィールド、および前記第２フィールドの値に基づく請求項５５の方法。
【請求項５７】
同一の値を有するデータレコードが、同一のパーツにある請求項５６の方法。
【請求項５８】
データ処理システム上で実行されると、請求項３１から５７までの何れかの方法ステップ全てを実行するように成された命令を含むソフトウエア。
【請求項５９】
コンピューター可読媒体上に実装される請求項５８のソフトウエア。
【請求項６０】
データを処理するためのシステムであって、
第１データソースのレコード内の第１フィールドの値を特性化する情報、および第２データソースのレコード内の第２フィールドの値を特性化する情報を受け取るよう構成された値処理モジュールと、
前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するよう構成される関連性処理モジュールと、
前記第１フィールドと、前記第２フィールドとに関連する情報を提示するよう構成されるインターフェースと、
を含むシステム。
【請求項６１】
データを処理するためのシステムであって、
第１データソースのレコード内の第１フィールドの値を特性化する情報、および第２データソースのレコード内の第２フィールドの値を特性化する情報を受け取るための手段と、
前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するための手段と、
前記第１フィールドと、前記第２フィールドとを関連付ける情報を提示するための手段と、
を含むシステム。
【請求項６２】
データを処理するための方法であって、
データソースのデータレコードのフィールドの複数サブセットを識別するステップと、
前記複数サブセットのそれぞれに対する共出現統計を決定するステップと、
前記複数サブセットの１つ以上を、前記識別サブセットの前記フィールド間に機能関連性があると識別するステップと、
を含む方法。
【請求項６３】
フィールドの前記サブセットの少なくとも１つが、２つのフィールドのサブセットである請求項６２の方法。
【請求項６４】
前記複数サブセットの１つ以上を、前記識別サブセットの前記フィールド間に機能関連性があると識別するステップが、前記複数サブセットの１つ以上を、可能性がある所定の複数の機能関連性のうちの１つを有すると識別するステップを含む請求項６２の方法。
【請求項６５】
前記共出現統計を決定するステップが、それぞれが一対のフィールドを識別するデータ構成要素を形成するステップ、および前記データレコードのうちの１つにある前記フィールド対に出現する一対の値を識別するステップを含む請求項６２の方法。
【請求項６６】
前記共出現統計を決定するステップが、
前記データレコードをパーツにパーティション化するステップであって、前記データレコードは第１フィールド、および第２フィールドを有するパーティション化ステップと、
前記パーツの第１にある１つ以上のレコードの前記第２フィールドに出現する値の分布に基づいて量を決定するステップであって、前記１つ以上のレコードは、前記１つ以上のレコードの第１フィールドに出現する共通値を有する、決定ステップと、
前記量を前記パーツの他にあるレコードからの他の量と組み合わせて合計量を生成するステップと、
を含む請求項６２の方法。
【請求項６７】
前記複数サブセットの１つ以上を、前記識別サブセットの前記フィールド間に機能関連性があると識別するステップが、前記合計量に基づいて前記第１および第２フィールド間の機能関連性を識別するステップを含む請求項６６の方法。
【請求項６８】
前記パーツが、前記第１フィールド、および前記第２フィールドの値に基づく請求項６６の方法。
【請求項６９】
前記パーツが、並列成分のセットのうちの別々のものを用いて処理される請求項６６の方法。
【請求項７０】
前記複数サブセットの１つ以上を、前記識別サブセットの前記フィールド間に機能関連性があると識別するステップが、前記機能関連性に対する一致度を決定するステップを含む請求項６２の方法。
【請求項７１】
前記一致度が、前記機能関連性と整合しない幾つかの例外レコードを含む請求項７０の方法。
【請求項７２】
前記機能関連性が、第１フィールドの少なくとも幾つかの前記値の、第２フィールドの少なくとも幾つかの前記値へのマッピングを含む請求項６２の方法。
【請求項７３】
前記マッピングが、多対一のマッピングである請求項７２の方法。
【請求項７４】
前記マッピングが、一対多のマッピングである請求項７２の方法。
【請求項７５】
前記マッピングが、一対一のマッピングである請求項７２の方法。
【請求項７６】
前記複数のサブセットのフィールドの値を特性化する情報に基づいて前記複数のサブセットにフィルタをかけるステップを更に含む請求項６２の方法。
【請求項７７】
前記データレコードが、データベーステーブルのレコードを含む請求項６２の方法。
【請求項７８】
前記データレコードが、複数のデータベーステーブルのレコードを含む請求項７７の方法。
【請求項７９】
データ処理システム上で実行されると、請求項６２から７８までの何れかの方法ステップ全てを実行するように成された命令を含むソフトウエア。
【請求項８０】
コンピューター可読媒体上に実装される請求項７９のソフトウエア。
【請求項８１】
データを処理するためのシステムであって、
データソースのデータレコードのフィールドの複数サブセットを識別するよう構成される識別処理モジュールと、
前記複数サブセットのそれぞれに対する共出現統計を決定するよう構成される統計処理モジュールと、
前記複数サブセットの１つ以上を、前記識別サブセットの前記フィールド間に機能関連性があると識別するよう構成される機能関連性処理モジュールと、
を含むシステム。
【請求項８２】
データを処理するためのシステムであって、
データソースのデータレコードのフィールドの複数サブセットを識別するための手段と、
前記複数サブセットのそれぞれに対する共出現統計を決定するための手段と、
前記複数サブセットの１つ以上を、前記識別サブセットの前記フィールド間に機能関連性があると識別するための手段と、
を含むシステム。
【発明の詳細な説明】
【発明の詳細な説明】
【０００１】
関連出願の相互参照
本出願は、２００３年９月１５日付の米国仮出願第６０／５０２，９０８号、２００３年１０月２０日付の第６０／５１３，０３８号、および２００３年１２月２２日付の第６０／５３２，９５６号の優先権を主張するものである。
【０００２】
発明の背景
本発明はデータプロファイリングに関する。
【０００３】
格納データセットには、各種の特性が事前に把握されていないデータが含まれることが多い。例えば、データセットの値の範囲もしくは代表的な値、データセット内の異なるフィールド間の関係、または異なるフィールドの値の間の機能依存性が未知のことがある。データプロファイリングは、データセットのソースを検査して、このような特性を決定することに関わるものである。データプロファイリングシステムの一利用法としては、データセットについての情報を収集し、その情報を用いて、データセットをロードするためのステージング領域を設計してから、後続の処理に進むということがある。その場合、データプロファイリングで収集された情報に基づいて、データセットを所望の目標フォーマットおよび配置にマッピングするのに必要な変換がステージング領域内で実行できる。このような変換は、例えば、サードパーティのデータに既存データ格納との互換性をもたせたり、または古いコンピューターシステムから新しいコンピューターシステムにデータを転送したりするのに必要なことがある。
【０００４】
発明の概要
一態様では、一般に、本発明は、データを処理するための方法、および対応ソフトウエア、ならびにシステムを特徴とする。データソースからのデータをプロファイリングする。このプロファイリングには、データソースからデータを読み取るステップ、データを読み取りながらデータを特性付ける要約データを計算するステップ、および要約データに基づくプロファイル情報を格納するステップが含まれる。本処理には、格納プロファイル情報へアクセスするステップ、およびアクセスしたプロファイル情報に従ってデータを処理するステップが含まれる。
【０００５】
別の態様では、一般に、本発明はデータを処理するための方法を特徴とする。データソースからのデータをプロファイリングする。このプロファイリングには、データソースからデータを読み取るステップ、データを読み取りながらデータを特性付ける要約データを計算するステップ、および要約データに基づくプロファイル情報を格納するステップが含まれる。データのプロファイリングには、データを並列にプロファイリングするステップが含まれ、その並列プロファイリングには、データをパーツへパーティション化するステップ、および並列成分の第１セットのうちの別々のものを用いてパーツを処理するステップが含まれる。
【０００６】
本発明の態様には、以下の特徴のうちの１つ以上を含めることができる。
【０００７】
データソースからのデータを処理するステップには、データソースからデータを読み取るステップが含まれる。
【０００８】
データプロファイリングステップは、データソース外にデータのコピーを維持せずに実行される。データには、例えば、条件付きフィールド、および／または可変数フィールドなどの、可変レコード構造をもつレコードを含めることができる。データを読み取りながら要約データを計算するステップには、データを特性付ける要約データを計算しながら可変レコード構造のレコードを解釈するステップが含まれる。
【０００９】
データソースには、データベースシステム、または直列もしくは並列ファイルシステムなどの、データ格納システムが含まれる。
【００１０】
要約データ計算ステップには、フィールドに対する別個の値のセット毎の出現数をカウントするステップが含まれる。プロファイル情報には、前記フィールドに対する出現数カウントに基づくフィールド統計を含めることができる。
【００１１】
データソースに関連するメタデータを収容するメタデータ格納が維持される。プロファイル情報格納ステップには、データソースに関連するメタデータを更新するステップを含めることができる。データプロファイリングステップ、およびデータ処理ステップはそれぞれ、データソースのメタデータを利用することができる。
【００１２】
データソースからのデータをプロファイリングするステップには、プロファイル情報に基づいてフォーマット仕様を決定するステップがさらに含まれる。また、プロファイル情報に基づいて検証仕様を決定するステップも含めることができる。妥当でないレコードは、フォーマット仕様、および／または検証仕様に基づいてデータ処理中に識別できる。
【００１３】
データ変換命令は、プロファイル情報に基づいて指定する。従って、データ処理ステップに、データへ変換命令を適用するステップを含めることができる。
【００１４】
データ処理ステップには、データ格納サブシステムへデータをインポートするステップが含まれる。データを検証してからデータ格納サブシステムへデータをインポートできる。このようなデータ検証には、データの統計特性を比較するなど、データ特性をデータの基準特性と比較するステップを含めることができる。
【００１５】
データプロファイリングステップは、並列に実行できる。これには、データをパーツへパーティション化するステップ、および並列成分の第１セットのうちの別々のものを用いてパーツを処理するステップを含めることができる。データの異なるフィールドについて要約データを計算するステップには、並列成分の第２セットのうちの別々のものを使用するステップを含めることができる。並列成分の第１セットの出力を再パーティション化して、並列成分の第２セットに対する入力を形成できる。データは並列データソースから読み取ることができ、並列データソースの各パーツは、並列成分の第１セットのうちの異なるものにより処理される。
【００１６】
別の態様では、一般に、本発明は、データを処理するための方法、および対応するソフトウエア、ならびにシステムを特徴とする。第１データソースのレコードの第１フィールドの値を特性化する情報、および第２データソースのレコードの第２フィールドの値を特性化する情報を受け取る。次いで、第１フィールドと第２フィールドとの間の関連性を特性化する量を、受け取った情報に基づいて計算する。第１フィールドと第２フィールドとを関連付ける情報を表示する。
【００１７】
本発明の態様には、以下の特徴のうちの１つ以上を含めることができる。
【００１８】
第１フィールドと第２フィールドとを関連付ける情報は、ユーザーに提示される。
【００１９】
第１データソースおよび第２データソースは、同一のデータソースか、または別々のデータソースである。データソースのいずれか、または両方は、データベーステーブル、またはファイルとすることができる。
【００２０】
関連性を特性化する量には、第１フィールドの値と第２フィールドの値との結合特性を特性化する量が含まれる。
【００２１】
第１フィールドの（または同様に、第２フィールドの）値を特性化する情報には、そのフィールドの値分布を特性化する情報が含まれる。このような情報は、「センサス(census)」データ構造などの、データ構造に格納してもよい。第１フィールドの値分布を特性化する情報には、多数のデータレコードを含めることができ、そのそれぞれは、第１データソースの第１フィールドにある異なる値と、その値の対応する出現数とを関係付ける。同様に、第２フィールドの値分布を特性化する情報には、同一または同様のフォーマットの多数のレコードを含めることができる。
【００２２】
第１フィールドの値、および第２フィールドの値分布を特性化する情報を処理して、多数の異なる値共出現カテゴリに関連付ける量を計算する。
【００２３】
値共出現カテゴリに関連付ける量には、多数のデータレコードが含まれ、そのそれぞれは、共出現カテゴリの１つと関係付けられ、そのカテゴリにある第１および第２のフィールドの異なる値の数が含まれる。
【００２４】
第１フィールドおよび第２フィールド上における第１データソースおよび第２データソースの「結合(join)」の値の分布を特性化する情報をそれぞれ計算する。この計算には、複数の値共出現カテゴリに関連付ける量を計算するステップを含めることができる。このようなカテゴリの実施例には、第１および第２のフィールドの一方に少なくとも一回出現するが他方のフィールドには出現しない値、第１および第２のフィールドのそれぞれに唯一回出現する値、第１および第２のフィールドの一方に唯一回出現し、他方のフィールドに二回以上出現する値、および第１および第２のフィールドのそれぞれに二回以上出現する値が含まれる。
【００２５】
値を特性化する情報を受け取るステップ、および値の結合特性を特性化する量を計算するステップは、多数の異なるフィールド対、すなわち、第１データソースからの一方のフィールド、および第２データソースからの他方のフィールドについて繰り返される。これにより、複数のフィールド対のうちの１つ以上のフィールドに関連する情報をユーザーに提示できる。
【００２６】
フィールド対のうちの１つ以上のフィールドに関連する情報を提示するステップには、フィールドの関連性の候補の種類を識別するステップが含まれる。このようなフィールドの関連性の種類の実施例には、一次キーと外部キーとの関連性、および共通ドメイン関連性が含まれる。
【００２７】
別の態様では、一般に、本発明は、データを処理するための方法、および対応するソフトウエア、ならびにシステムを特徴とする。データソースのデータレコードのフィールドの複数サブセットを識別する。複数サブセットのそれぞれについて共出現統計を決定する。複数サブセットのうちの１つ以上を、識別サブセットのフィールド間に機能関連性があると識別する。
【００２８】
本発明の態様には、以下の特徴のうちの１つ以上を含めることができる。
【００２９】
フィールドのサブセットの少なくとも１つは、２つのフィールドのサブセットである。
【００３０】
複数サブセットのうちの１つ以上について、識別サブセットのフィールド間に機能関連性があると識別するステップには、複数サブセットのうちの１つ以上が、可能性のある所定の複数の機能関連性のうちの１つを有すると識別するステップが含まれる。
【００３１】
共出現統計を決定するステップには、それぞれが一対のフィールドを識別するデータ構成要素を形成するステップ、およびデータレコードのうちの１つにあるそのフィールド対に出現する一対の値を識別するステップが含まれる。
【００３２】
共出現統計を決定するステップには、第１フィールドおよび第２フィールドを有するデータレコードをパーツへパーティション化するパーティション化ステップと、そのパーツの最初において１つ以上のレコードの第１フィールドに出現する共通の値を有し、その１つ以上のレコードの第２フィールドに出現する値の分布に基づいて量を決定する決定ステップと、その量と全体の量を生成するための他のパーツのレコードからの他の量とを組み合わるステップとが含まれる。
【００３３】
複数サブセットのうちの１つ以上について、識別サブセットのフィールド間に機能関連性があると識別するステップには、全体の量に基づいて第１および第２のフィールド間の機能関連性を識別するステップが含まれる。
【００３４】
パーツは、第１フィールドおよび第２フィールドの値に基づく。
【００３５】
パーツは、並列成分のセットのうちの別々のものを用いて処理する。
【００３６】
複数サブセットのうちの１つ以上について、識別サブセットのフィールド間に機能関連性があると識別するステップには、機能関連性に対する一致度を決定するステップが含まれる。
【００３７】
一致度には、機能関連性と整合しない幾つかの例外レコードが含まれる。
【００３８】
機能関連性には、第１フィールドの少なくとも幾つかの値の、第２フィールドの少なくとも幾つかの値へのマッピングが含まれる。
【００３９】
例えば、マッピングは、多対一のマッピング、一対多のマッピング、または一対一のマッピングとすることができる。
【００４０】
本方法には、複数のサブセットのフィールドの値を特性化する情報に基づいて複数のサブセットをフィルタ処理するステップが更に含まれる。
【００４１】
データレコードには、１つ以上のデータベーステーブルのレコードが含まれる。
【００４２】
本発明の態様には、以下の利点のうちの１つ以上を含めることができる。
【００４３】
本発明の態様は、様々なシナリオにおいて利点を提供する。例えば、アプリケーションの開発に際して、開発者は入力データセットを用いてアプリケーションを試験することができる。試験データセットを用いたアプリケーション実行の出力を、予測される試験結果と比較するか、または手動で検査する。しかしながら、現実的な「生成データ(production data)」を用いてアプリケーションを実行する場合、得られた結果は検査で検証するには大きすぎるのが通常である。データプロファイリングはアプリケーションの挙動を検証することに用いることができる。生成データを用いてアプリケーションを実行することにより生成される全レコードを検査する代わりに、出力のプロファイルを検査する。データプロファイリングにより、アプリケーション設計の不具合を示唆する出力の予期しないパターンまたは分布は無論のこと、妥当でないか、または予期しない値を検出できる。
【００４４】
別のシナリオでは、データプロファイリングは、生産プロセスの一部として用いることができる。例えば、通常の生産工程の一部である入力データをプロファイリングできる。データのプロファイリングが終了してから、処理モジュールは、プロファイル結果をロードし、入力データが特定の品質基準を満たすことを検証できる。入力データが良好でないように見える場合、生産工程をキャンセルでき、しかるべき人が警告を受ける。
【００４５】
別のシナリオでは、定期的にデータをプロファイリングすることにより、大規模な収集データ（例えば、多数のデータセット内の数百のデータベーステーブル）の定期的監査を実行できる。例えば、データプロファイリングは、データのサブセットについて毎晩実行できる。全てのデータがプロファイルされるように、プロファイリングするデータを巡回し、例えば、全てのデータベーステーブルが年に４回プロファイルされるように四半期に一回巡回する。これは、必要に応じて後で参照できる全データに関する履歴データ品質監査を提供する。
【００４６】
データプロファイリングは自動的に実行できる。例えば、データプロファイリングは、スクリプト（例えば、シェルスクリプト）により実行でき、他の形式の処理と統合できる。データプロファイリングの結果は、例えばウェブブラウザに表示する形式で、自動的に発行でき、結果を手動で後処理したり、または別の報告アプリケーションを実行したりする必要はない。
【００４７】
データソース自体のレコードをやむを得ず直接演算するよりも、データソースのレコードの値を特性化する情報の演算の方が、計算量をかなり低減できる。例えば、生のデータレコードではなくセンサスデータを用いると、２つのフィールドの結合特性の計算の複雑さが、２つのデータソースのデータレコード数を乗算した次数から、２つのデータソースの一意の値の数を乗算した次数に低減される。
【００４８】
データソース外にデータのコピーを維持しないでデータをプロファイリングことにより、複製コピー維持に関係付けられるエラーの可能性を回避でき、データコピーのための余分な格納空間の使用を回避できる。
【００４９】
演算はデータ値に従って並列処理できるので、効率的な分散処理が可能になる。
【００５０】
フィールド間の関連性を特性化する量は、異なる種類の関連性ではどのフィールドが関連しているかの示唆を提供できる。すると、ユーザーは、データをさらに精査して、それらのフィールドがその種類の関連性を真に形成しているかを判定できる。
【００５１】
データソースのデータレコードのフィールドの複数サブセットのそれぞれについて共出現統計を決定するステップにより、フィールド間の潜在的な機能関連性を効率的に識別することができる。
【００５２】
本発明の態様は、ユーザーが習熟していないデータセットをプロファイリングする際に有用である。自動的に決定されるか、またはユーザーとの協調作業で決定される情報を用いて、データソースについてのメタデータをポピュレートし、後続の処理に用いることができる。
【００５３】
本発明の他の特徴、および利点は、以下の説明および請求項により明らかになる。
【００５４】
＜説明＞
１  概要
図１を参照する。データ処理システム１０には、プロファイリングおよび処理のサブシステム２０が含まれ、それを用いてデータソース３０からのデータを処理し、データ格納サブシステム４０のメタデータ格納１１２、およびデータ格納１２４を更新する。すると、格納したメタデータおよびデータは、インターフェースサブシステム５０を用いてユーザーにとってアクセス可能になる。
【００５５】
データソース３０は、一般に、多様な個々のデータソースを含み、それぞれは、例えば、データベーステーブル、スプレッドシートファイル、平文ファイル、またはメインフレーム１１０が用いるネイティブのフォーマットなどの独自の格納フォーマットおよびインターフェースを有する。個々のデータソースは、プロファイリングおよび処理のサブシステム２０に対してローカルの関係、例えば、ファイル１０２にように同一のコンピューターシステムでホストされてもよいし、またはプロファイリングおよび処理のサブシステム２０に対してリモートの関係、例えば、ローカルエリアまたは広域データネットワークでアクセスするリモートコンピューター（例えば、メインフレーム１１０）でホストされてもよい。
【００５６】
データ格納サブシステム４０には、データ格納１２４、およびメタデータ格納１１２が含まれる。メタデータ格納１１２には、データソース３０内のデータに関連する情報、およびデータ格納１２４内のデータについての情報が含まれる。このような情報には、レコードフォーマット、およびこれらのレコードのフィールド値の妥当性を決定するための仕様（検証仕様）を含めることができる。
【００５７】
プロファイリング処理中に、メタデータ格納１１２を用いて、プロファイリングすべきデータソース３０内のデータセットについての初期情報、ならびにこのようなデータセットについて得られる情報、およびそのデータセットから導かれるデータ格納１２４内のデータセットを格納できる。データ格納１２４を用いて、データソース３０から読み込まれ、オプションとしてデータプロファイリングから導かれた情報を用いて変換されたデータを格納できる。
【００５８】
プロファイリングおよび処理のサブシステム２０には、プロファイリングモジュール１００が含まれ、データの完全なコピーを格納媒体に置かなくても、データソースから直接データを読み取ってから、個々のレコードなどの、別個のワーク構成要素の単位でプロファイリングする。典型的には、レコードは、１セットのデータフィールドと関係付けられ、各フィールドは各レコードについて特定の値をもつ（ヌル値の可能性もある）。データソースのレコードは、各レコードが同一のフィールドを含む固定レコード構造を有してもよい。代替として、レコードは、可変レコード構造を有しても良く、例えば、可変長ベクトルまたは条件付きフィールドを含んでもよい。可変レコード構造の場合には、レコードは、プロファイリングする前にデータの「フラット(flattened)」（つまり、固定レコード構造）なコピーを格納しなくても処理される。
【００５９】
データソースからデータを最初に読み取る場合、プロファイリングモジュール１００は、そのデータソース内のレコードについての初期フォーマット情報により開始するのが普通である。（注意すべきは、状況によっては、データソースのレコード構造でさえ未知のこともある、ということである。）レコードについての初期情報には、値の区別を表すビット数（例えば、１６ビット（＝２バイト））、およびレコードフィールドと関係付けられる値と、タグまたは区切り文字と関係付けられる値とを含む値の順序、ならびにビットが表す値の型（例えば、文字列、符号付き／符号なし整数）が含まれる。データソースのレコードについての情報は、メタデータ格納１１２に格納されるデータ操作言語（ＤＭＬ）ファイルで規定される。プロファイリングモジュール１００は、所定のＤＭＬを用いて、多様な一般的データシステムフォーマット（例えば、ＳＱＬテーブル、ＸＭＬファイル、ＣＳＶファイル）によるデータを自動的に解釈でき、またはカスタム化したデータシステムフォーマットを記述するメタデータ格納１１２から取得したＤＭＬファイルを用いることができる。
【００６０】
部分的で、おそらく不正確な、データソースのレコードについての初期情報が、プロファイリングモジュール１００が初期データを読み取る前に、プロファイリングおよび処理のサブシステム２０で利用可能な場合ある。例えば、データソースと関係付けられるＣＯＢＯＬコピーブックが、格納されたデータ１１４として利用可能であり、またはユーザーインターフェース１１６を介してユーザー１１８が入力する場合がある。このような既存情報は、メタデータインポートモジュール１１５により処理され、メタデータ格納１１２に格納され、および／またはデータソースにアクセスするために用いるＤＭＬファイルを定義するのに用いる。
【００６１】
プロファイリングモジュール１００がデータソースからレコードを読み取る時、データセットの内容を反映する統計、および他の説明情報を計算する。次いで、プロファイリングモジュール１００は、これらの統計、および説明情報を「プロファイル(profile)」の形でメタデータ格納１１２に書き込み、それらは、ユーザーインターフェース１１６、またはメタデータ格納１１２へのアクセスを有する何らかの他のモジュールを介して検査できる。プロファイルの統計には、各フィールドの値のヒストグラム、最大値、最小値、および平均値、ならびに最小頻度値、および最大頻度値のサンプルが含まれることが好ましい。
【００６２】
データソースからの読み取りで取得する統計は、各種の用途に用いることができる。そのような用途には、不明データセットの内容の把握、データセットに関係付けられるメタデータの収集構築、購入または使用前のサードパーティデータの検査、および収集したデータに対する品質管理計画の実施が含まれる。このようなタスクを実行するデータ処理システム１０を用いるための手順について以下に詳細に説明する。
【００６３】
メタデータ格納１１２は、プロファイリングした各フィールドと関係付けられる検証情報、例えば、検証情報をコード化する検証仕様など、を格納できる。代替として、検証情報は、外部の格納場所に格納でき、プロファイリングモジュール１００で検索できる。データセットをプロファイリングする前に、検証情報は、フィールド毎に妥当なデータ型を指定できる。例えば、フィールドが人の「肩書き(title)」の場合、デフォルトの妥当な値は、「文字列(string)」データ型の任意の値とすることができる。また、データソースをプロファイリングする前に、ユーザーが、「Ｍｒ．」、「Ｍｒｓ．」、および「Ｄｒ．」などの、妥当な値を与えることにより、プロファイリングモジュール１００が読み込むそれ以外の値を妥当でないと識別することもできる。プロファイリング実行から得られる情報をユーザーが用いて、特定フィールドに対する妥当な値を指定することもできる。例えば、ユーザーは、データセットをプロファイリングした後、値「Ｍｓ．」、「Ｍｓｒ．」が頻出値として出現することに気付く。ユーザーは妥当な値として「Ｍｓ．」を追加し、データクリーニングオプションとして、値「Ｍｓｒ．」を値「Ｍｒｓ．」にマッピングできる。このように、検証情報には、妥当な値、およびマッピング情報を含めて、妥当でない値を、妥当な値にマッピングすることによりクリーニングできる。プロファイリングを連続実行することによりデータソースについての更なる情報が発見されるので、データソースのプロファイリングは、繰り返し行ってもよい。
【００６４】
プロファイリングモジュール１００は、実行可能なコードを生成して、プロファイリングしたデータシステムにアクセスできる他のモジュールを実装することもできる。例えば、処理モジュール１２０には、プロファイリングモジュール１００が生成したコードを含めることができる。このようなコードの実施例として、データソースへのアクセス手順の一部として、値「Ｍｓｒ．」を「Ｍｒｓ．」にマッピングしてもよい。処理モジュール１２０は、プロファイリングモジュール１００と同一のランタイム環境で実行でき、メタデータ格納１１２と通信してデータセットと関係付けられるプロファイルにアクセスできることが好ましい。処理モジュール１２０は、例えば、メタデータ格納１１２から同一のＤＭＬファイルを取得することによって、プロファイリングモジュール１００と同一のデータフォーマットを読み取ることができる。処理モジュール１２０は、データセットプロファイルを用いて、入力されてくるレコードを検証、またはクリーニングするのに用いる値を取得してから、データ格納１２４内にそれらを格納することができる。
【００６５】
プロファイリングモジュール１００と同様に、処理モジュール１２０も個別のワーク構成要素の単位でデータシステムからデータを直接読み込む。ワーク構成要素のこの「データフロー(data flow)」は、ローカルストレージ（例えば、ディスクドライブ）にデータをコピーしなくても、大規模なデータセットにデータプロファイリングが実行できる利点を有する。この、以下に詳細に説明するデータフローモデルはまた、最初にソースデータをステージング領域にコピーしなくても、複雑なデータ変換を処理モジュールにより実行でき、格納空間および時間を節約できる可能性がある。
【００６６】
２  メタデータ格納編成
プロファイリングモジュール１００は、メタデータ格納１１２を用いて、各種のメタデータおよびプロファイリングの初期設定(preference)、および結果を編成し、データオブジェクト内に格納する。図２を参照する。メタデータ格納１１２は、それぞれがプロファイルジョブと関連する情報に対するプロファイル設定オブジェクトグループ２０１、それぞれがデータセットと関連する情報に対するデータセットオブジェクトグループ２０７、およびそれぞれが特定のデータフォーマットを記述するＤＭＬファイルグループ２１１を格納できる。プロファイル設定オブジェクトは、プロファイリングモジュール１００が実行するプロファイリング実行のための初期設定を含む。ユーザー１１８は、新規プロファイル設定オブジェクトを作成するか、またはあらかじめ格納してあるプロファイル設定オブジェクト２００を選択するのに用いる情報を入力できる。
【００６７】
プロファイル設定オブジェクト２００は、データセットオブジェクト２０６への参照２０４を含む。データセット設定オブジェクト２０６は、データセットロケータ２０２を含み、そのロケータにより、プロファイリングモジュール１００は、プロファイルされるデータをランタイム環境内でアクセス可能な１つ以上のデータシステム上で位置特定できる。データセットロケータ２０２は、パス／ファイル名、ＵＲＬ、または多くの場所に散在するデータセットに対するパス／ファイル名および／またはＵＲＬのリストであるのが普通である。データセットオブジェクト２０６にはオプションとして、１つ以上のＤＭＬファイル２１０への参照２０８を含めることができる。
【００６８】
ＤＭＬファイル２１０は、データセット内のデータのフォーマットについての知識に基づいてあらかじめ選択してもよく、またはユーザーが実行時に指定してもよい。プロファイリングモジュール１００は、データセットの最初の部分を取得でき、デフォルトのＤＭＬファイルに基づいて最初の部分の解釈をユーザーインターフェース１１６上でユーザーに提示できる。次いで、ユーザーは、その解釈を見ながらデフォルトのＤＭＬファイル仕様をインタラクティブに修正できる。データセットが多数のフォーマットのデータを含む場合、２つ以上のＤＭＬファイルを参照できる。
【００６９】
データセットオブジェクト２０６には、フィールドオブジェクトセット２１４への参照２１２が含まれる。プロファイリングするデータセットのレコード内の各フィールドについて１つのフィールドオブジェクトがある。プロファイリングモジュール１００が実行するプロファイリングが完了すると、データセットプロファイル２１６が、プロファイリングしたデータセットに対応するデータセットオブジェクト２０６内に収納される。データセットプロファイル２１６は、全てのレコード数、および全ての妥当／非妥当のレコード数などの、データセットに関連する統計を含む。
【００７０】
フィールドオブジェクト２１８には、対応するフィールドに対して妥当な値かどうかを決定するとともに、妥当でない値をクリーニングする（すなわち、妥当でない値を妥当な値にマッピングする）ための規則を規定するためにプロファイリングモジュール１００が用いることができる検証情報２２０をオプションとして含めることができる。フィールドオブジェクト２１８には、プロファイリングの実行が完了した時に、プロファイリングモジュール１００が格納するフィールドプロファイル２２２も含まれ、それには、区別値、ヌル値、および妥当／非妥当値の数などの、対応するフィールドに関連する統計が含まれる。フィールドプロファイル２２２には、最大、最小、最大頻度、最小頻度の値などの、サンプル値も含めることができる。完全な「プロファイル」には、データセットプロファイル２１６、およびプロファイリングした全フィールドについてのフィールドプロファイルが含まれる。
【００７１】
プロファイル実行のための他のユーザーの初期設定は、プロファイル設定オブジェクト２００内に収集し、格納することができる。例えば、ユーザーは、フィールド、またはプロファイリングする値の数を限定するのに用いることができるフィルタの式を選択でき、それには、値のランダムサンプルのプロファイリング（例えば、１％）が含まれる。
【００７２】
３  ランタイム環境
プロファイリングモジュール１００は、データソースからのデータを読み取り、個別のワーク構成要素のフローとして処理できるランタイム環境で動作する。プロファイリングモジュール１００、および処理モジュール１２０が実行する計算は、計算要素がグラフの頂点と関係付けられ、および要素間のデータフローがグラフのリンク（弧、枝）と対応する有向グラフによるデータフローの形式で表すことができる。このようなグラフベースの計算を実装するシステムは、米国特許第５，９６６，０７２号の「グラフとして表される計算の実行」に記載されている。このシステムにより作成されるグラフは、グラフ要素により表される個々の処理に情報を出入りさせ、処理間で情報を移動し、そして処理の実行順序を定義するための方法を提供する。このシステムには、処理間通信方法（例えば、グラフのリンクによる通信パスは、ＴＣＰ／ＩＰ、またはＵＮＩＸ（登録商標）ドメインソケットを用いることができ、または共有メモリを用いて処理間でデータを受け渡すことができる）を選定するアルゴリズムが含まれる。
【００７３】
ランタイム環境は、また、プロファイリングモジュール１００を並列処理として動作させる。上記グラフ表現と同一の形式を用いて並列処理システムを記述できる。その説明として、並列処理システムには、多数の中央処理ユニット（ＣＰＵ）を用いる任意の構成のコンピューターシステムが含まれ、ローカル型（例えば、ＳＭＰコンピューターなどのマルチプロセッサシステム）、もしくはローカル分散型（例えば、クラスタとして接続したマルチプロセッサ、またはＭＰＰ）、またはリモート型、もしくはリモート分散型（例えば、ＬＡＮまたはＷＡＮネットワークを介して接続したマルチプロセッサ）、またはこれらの任意の組合せである。繰り返しになるが、グラフは、要素（グラフ頂点）、およびフロー（グラフリンク）により構成される。グラフの構成要素（要素およびフロー）を明示的または暗示的に複製することにより、システムの並列処理を表すことができる。
【００７４】
フロー制御メカニズムは、要素に入るリンクに対する入力待ち行列を用いて実装する。このフロー制御メカニズムにより、データは、大容量だが低速な典型的なディスクドライブなどの不揮発性ローカルストレージに書き込まなくても、グラフの要素間を流れることができる。入力待ち行列を十分小さく保つことにより、不揮発性メモリより小型で高速な典型的な揮発メモリにワーク構成要素を保持することができる。この格納空間および時間を節約する可能性は、非常に大規模なデータセットにも存在する。要素は、入力待ち行列の代わりに、または追加して、出力バッファを用いることができる。
【００７５】
２つの要素をフローにより接続する場合、上流要素は、下流要素がワーク構成要素を消費し続ける限り、ワーク構成要素を下流要素に送る。下流要素が遅れた場合、上流要素は、下流要素の入力待ち行列を満たし、入力待ち行列が再び空になるまで動作を停止する。
【００７６】
計算グラフは、様々な抽象レベルにより規定できる。従って、要素およびリンクを含む「サブグラフ(sub-graph)」を、グラフの他の部分と接続するリンクだけが現される単一の要素として別のグラフ内に表すことができる。
【００７７】
４  プロファイリンググラフ
図３を参照する。好適な実施の形態では、プロファイリンググラフ４００は、プロファイリングモジュール１００の計算を実行する。「入力データセット」要素４０２は、何種類かの可能性があるデータシステムからのデータを表す。データシステムは、異なる物理媒体形式（例えば、磁気式、光学式、磁気光学式）、および／または異なるデータフォーマット型（例えば、バイナリ、データベース、スプレッドシート、ＡＳＣＩＩ文字列、ＣＳＶ、またはＸＭＬ）を有してもよい。「入力データセット」要素４０２は、データフローをセンサス作成要素４０６に送る。センサス作成要素４０６は、データセットの「センサス(census)」を実施して、要素に流れ込むレコードの一意のフィールド／値の各対について別々のセンサスレコードを新規作成する。各センサスレコードには、そのセンサスレコードに対する一意のフィールド／値の対の出現数のカウントを含む。
【００７８】
センサス作成要素４０６は、対応するフィールドオブジェクトに格納される検証情報に従って、妥当でない値のセットを妥当な値にマッピングするクリーニングオプションを有する。クリーニングオプションは、妥当でない値を含むフィールドを有するレコードを、非妥当レコード要素４０８により表される場所に格納することもできる。これにより、妥当でないレコードを、例えば、妥当でない値のソースの判定を望むユーザーが検査できる。
【００７９】
図示した実施の形態では、センサス作成要素４０６から流れ出すセンサスレコードは、センサスファイル要素４１０により表されるファイルに格納される。センサスレコードのこの中間格納は、場合によっては、センサスレコードにアクセスする多数のグラフ要素にとって効率を向上させることもある。代替として、センサスレコードは、ファイルに格納せずに、センサス作成要素４０６からセンサス解析要素４１２に直接流れてもよい。
【００８０】
センサス解析要素４１２は、各フィールド値のヒストグラムを新規作成し、センサスレコードに基づいて他のデータ解析を実行する。図示した実施の形態では、フィールドプロファイル要素４１４が、フィールドプロファイルに対する中間格納場所を表す。メタデータ格納ロード要素４１６は、フィールドプロファイル、および他のプロファイル結果を、メタデータ格納１１２の対応するオブジェクトにロードする。
【００８１】
ユーザーインターフェース１１６により、ユーザーは解析したデータをブラウジングして、例えば、フィールドのヒストグラム、または頻出値を見ることができる。例えば、ヒストグラムのバーと関係付けられる特定のレコードを見るための「掘り下げ(drill-down)」機能が提供される。ユーザーはまた、ユーザーインターフェース１１６を介して、プロファイリング結果に基づき初期設定を更新することもできる。
【００８２】
サンプル作成要素４１８は、ユーザーインターフェース１１６に示す値と関係付けられるレコード（例えば、ヒストグラムのバーと関係付けられるレコード）のサンプリングを表す収集サンプルレコード４２０を格納する。フェーズの区切り線４２２は、グラフ４００の２つの実行フェーズを表し、線の左側の全要素の動作が終了した後、線の右側の要素の動作が開始する。従って、サンプル作成要素４１８は、センサス解析要素４１２がフィールドプロファイル要素４１４に結果の格納を終えた後に動作する。代替として、サンプルレコードは、「入力データセット」４０２のレコード場所から読み出せる。
【００８３】
プロファイリングモジュール１００は、ユーザー１１８、または自動スケジュールプログラムにより開始される。プロファイリングモジュール１００を初期化すると、マスタースクリプト（不図示）が、プロファイリンググラフ４００が用いる何れかのＤＭＬファイルおよびパラメータをメタデータ格納１１２から収集する。パラメータは、プロファイル設定オブジェクト２００、データセットオブジェクト２０６、およびフィールドオブジェクト２１８などのオブジェクトから取得できる。必要であれば、マスタースクリプトが、プロファイリングするデータセットについて供給される情報に基づいて新規ＤＭＬファイルを新規作成できる。便宜的に、マスタースクリプトは、パラメータをジョブファイルにできる。次いで、マスタースクリプトは、ジョブファイルからの適切なパラメータによりプロファイリンググラフ４００を実行し、経過時間を追跡し、プロファイリンググラフ４００の実行が完了するまでの残り時間を推定するプログレス表示を提示する。推定した残り時間は、プロファイリンググラフ４００を実行するときに、メタデータ格納１１２に書き込まれるデータ（例えば、ワーク構成要素）に基づいて計算される。
【００８４】
４．１  データフォーマット解釈
インポート要素は、広く多様なデータシステムのデータフォーマットを解釈するプロファイリングモジュール１００の一部を実装する。インポート要素は、ＤＭＬファイルを使わずに幾つかのデータフォーマットを直接解釈するよう構成する。例えば、インポート要素は、データベースにアクセスし、操作するための、ＡＮＳＩ規格のコンピューター言語である構造化照会言語（ＳＱＬ）を用いるデータシステムからのデータを読むことができる。ＤＭＬファイルを用いずに扱える他のデータフォーマットは、例えば、ＸＭＬ規格によるか、またはカンマ区切りフォーマット（ＣＳＶ）を用いてフォーマットされたテキストファイルである。
【００８５】
他のデータフォーマットについては、インポート要素は、プロファイル設定オブジェクト２００で規定されるＤＭＬファイルを用いる。ＤＭＬファイルはデータセット内のデータの解釈、および操作の様々な局面を規定できる。例えば、ＤＭＬファイルは、データセットについて以下を規定できる。
型オブジェクト  −  生データと、生データにより表される値との間の対応を定義する。
キー指定子  −  レコード間の順序、区切り、およびグループ化の関係を定義する。
式  −  定数、データレコードのフィールド、または他の式の結果からの値を用いて新しい値を生成する計算を定義する。
変換関数  −  ゼロ個以上の入力レコードから１つ以上の出力レコードを生成するために用いる規則および他の論理の集合を定義する。
パッケージ  −  各種のタスクを実行するために要素が用いることができる型オブジェクト、変換関数、および変数をグループ化する有用な方法を提供する。
【００８６】
型オブジェクトは、データシステム内の生データからの個々のワーク構成要素（例えば、個々のレコード）を読み取るために用いる基本メカニズムである。ランタイム環境は、物理的コンピューター可読格納媒体（例えば、磁気式、光学式、磁気光学式）へのアクセスを、生データビットの文字列（例えば、ファイルシステムへマウントするか、またはネットワーク接続上に流す文字列）として提供する。インポート要素は、ＤＭＬファイルにアクセスして、ワーク構成要素のフローを生成するために生データをどのように読み取り、解釈するかを決定できる。
【００８７】
図４を参照する。型オブジェクト５０２は、例えば、基本型５０４か、または複合型５０６である。基本型オブジェクト５０４は、（所与の長さの）ビットの文字列をどのように単一の値として解釈するかを規定する。基本型オブジェクト５０４には、読み取り、構文解析する生データのビット数を指示する長さ仕様が含まれる。長さ仕様は、規定バイト数などの固定長、もしくは可変長、データの最後の区切り文字規定（例えば、特定の文字または文字列）、または（可変長の可能性がある）読み取るべき文字数を指示できる。
【００８８】
ボイド型５１４は、意味、または内部構造を解釈する必要がないデータ、例えば、解凍するまでは解釈されない圧縮データのブロックを表す。ボイド型５１４の長さはバイトで規定する。数字型５１６は、数字を表し、数字に整数５２４、実数５２６、または小数点付５２８の指定がある場合は、特定ＣＰＵに標準の、またはネイティブの各種符号化に従って別々に解釈する。文字型５１８は、規定された文字セットによりテキストを解釈するのに用いる。日付５２０、および日付時刻５２２の型は、規定文字セット、および他のフォーマット情報により、カレンダの日付および／または時刻を解釈するのに用いる。
【００８９】
複合型５０６は、それ自体が基本型または複合型のいずれかである多数のサブオブジェクトから成るオブジェクトである。ベクトル型５０８は、同一型（基本型または複合型のいずれか）のオブジェクトのシーケンスを含むオブジェクトである。ベクトルのサブオブジェクトの数（すなわち、ベクトルの長さ）は、ＤＭＬファイル内の定数によるか、または可変長のベクトルのプロファイリングを可能とする規則（例えば、ベクトルの最後を指示する区切り文字）により指示できる。レコード型５１０は、オブジェクトのシーケンスを含むオブジェクトであり、それぞれは別の基本型または複合型とすることができる。シーケンスの各オブジェクトは、名前を付けたフィールドと関係付けられる値と対応する。レコード型５１０を用いて、要素は、生データのブロックを解釈して、レコードの全フィールドに対する値を抽出できる。ユニオン型５１２は、別々のフィールドに対応するオブジェクトが同一の生データビットを異なる値として解釈できる他は、レコード型５１０と同様のオブジェクトである。ユニオン型５１２は、同一の生データに幾つかの解釈をもたせる方法を提供する。
【００９０】
ＤＭＬファイルにより、カスタムのデータ型をもつデータのプロファイリングも可能である。ユーザーは、他のＤＭＬ型オブジェクトの形で、基本型または複合型のいずれかの型定義を与えることにより、カスタム型オブジェクトを定義できる。そして、プロファイリングモジュール１００がカスタム型オブジェクトを用いて、非標準の構造をもつデータを解釈する。
【００９１】
ＤＭＬファイルにより、条件付き構造をもつデータのプロファイリングも可能である。レコードは、他のフィールドと関係付けられる値に基づく幾つかのフィールドを含むだけでよい。例えば、レコードは、フィールド「既婚」が「はい」の場合、フィールド「配偶者」を含むだけでよい。ＤＭＬファイルには、条件付きフィールドが所与のレコードについて存在するかどうかを決定するための規則が含まれる。条件付きフィールドがレコードにある場合、フィールドの値はＤＭＬ型オブジェクトにより解釈できる。
【００９２】
インポート要素をグラフが用いることにより、各種型のレコード構造を効率的に取り扱うことができる。条件付きレコード、または可変長ベクトルなどの、可変レコード構造をもつレコードを解釈するインポート要素の能力により、このようなデータをまず固定長セグメントにフラット化しなくても、グラフはこのデータを処理することができる。インポート要素を用いてグラフが実行できる別のタイプの処理は、データの各部の間、例えば、異なるレコード、テーブル、またはファイル間の関連を把握することである。グラフは、インポート要素内の規則を用いて、あるテーブルの外部キーまたはフィールドと、別のテーブルの一次キーまたはフィールドとの間の関連を見出し、またはデータの各部に機能依存性計算を実行できる。
【００９３】
４．２  統計
図５Ａを参照する。センサス作成要素４０６の一実施の形態を実装するサブグラフ６００には、プロファイル設定オブジェクト２００に格納されるフィルタ式に基づいて入力されてくるレコードの一部を通過させるフィルタ要素６０２が含まれる。フィルタ式は、プロファイルされる値のフィールド、または数を制限できる。フィルタ式の実施例は、入力されてくる各レコードの単一フィールド（例えば、「タイトル」）にプロファイリングを制限するものである。フィルタ要素６０２の別のオプション機能は、上記のクリーニングオプションを実装することであり、妥当でないレコードのサンプルを非妥当レコード要素４０８に送る。フィルタ要素６０２から流れ出るレコードは、ローカルロールアップシーケンス統計要素６０４、および総当たりによるパーティション要素６１２に流れ込む。
【００９４】
マルチプロセッサ、および／またはマルチコンピューター上で並列に動作するプロファイリンググラフ４００（および他のグラフおよびサブグラフ）の能力、および多数の場所にまたがって格納された並列データセットを読み取るプロファイリンググラフ４００の能力は、要素、および要素間のリンク上のシンボルの線の太さにより、サブグラフ６００内に暗示的に表される。「入力データセット」要素４０２などの、格納場所を表す要素の太い境界線は、それがオプションとして並列データセットになり得るということを示している。フィルタ要素６０２などの、処理要素の太い境界線は、その処理がオプションとして多数のパーティション内で実行できることを示し、各パーティションは、別のプロセッサまたはコンピューター上で実行される。ユーザーは、ユーザーインターフェース１１６を介して、オプションで、並列のグラフ要素を、並列に実行するか、または直列に実行するかを指示できる。細い境界線は、データセットまたは処理が直列であることを示す。
【００９５】
ローカルロールアップシーケンス統計要素６０４は、入力されてくるレコードのシーケンシャル特性に関連する統計を計算する。例えば、要素６０４は、増加、減少、または１だけ増分するフィールドの値をもつレコードのシーケンシャル対の数をカウントできる。並列動作の場合は、各パーティションについて別々にシーケンス統計を計算する。ロールアップ処理は、多数の入力構成要素からの情報（この要素６０４が実行するロールアップ処理についてのシーケンス統計）を組み合わせるステップ、および、組み合わせた入力構成要素に代わる単一の出力構成要素を生成するステップを含む。集結リンクシンボル６０６は、並列成分の任意の多数パーティションからのデータフローを、直列成分への単一データフローに組み合わせること、すなわち「集結（gathering）」を表す。グローバルのロールアップシーケンス統計は、多数のパーティションからの「ローカル」シーケンス統計を、全てのパーティションからのレコードを表すシーケンス統計の単一「グローバル」集合に組み合わせる。得られるシーケンス統計は、一時ファイル６１０に格納できる。
【００９６】
図６は、ロールアップ処理を実行するための処理７００の実施例のフロー図であり、ローカルロールアップシーケンス統計要素６０４、およびグローバルロールアップシーケンス統計要素６０８により実行されるロールアップ処理が含まれる。処理７００は、７０２にて入力構成要素を受け取ることにより開始される。次いで、処理７００は、７０４にて集計される情報を更新し、７０６にて集計する構成要素があるかどうかを判定する。構成要素がある場合、処理７００は７０２にて次の構成要素を受け取り、７０４にてしかるべく情報を更新する。構成要素がそれ以上ない場合、処理７００は、７０８にて集計したロールアップ情報に基づいて出力構成要素を最終処理する。ロールアップ処理は、構成要素グループを単一構成要素に集約したり、または構成要素グループの集合特性（これら構成要素の値の統計など）を決定したりするのに用いる。
【００９７】
総当たりによるパーティション要素６１２は、「入力データセット」４０２の単一または多数のパーティションからレコードをとり、幾つかの並列プロセッサおよび／またはコンピューター（例えば、ユーザーの選択による）間でレコードを再パーティション化してプロセッサおよび／またはコンピューター間のワーク負荷を均衡させる。クロス接続リンクシンボル６１４は、データフローの再パーティション（リンクされた要素６１２により実行される）を表す。
【００９８】
正規化要素６１６は、レコードのフローを取り込み、入力レコード内の各フィールドについての値を表すフィールド／値の対を含むセンサス構成要素のフローを送り出す。例えば、１０個のフィールドをもつ入力レコードは、１０個のセンサス構成要素のフローを生み出す。各値は、人が読める正規化（すなわち、事前に決定したフォーマットによる）文字列表現に変換される。センサス構成要素にはまた、値が妥当であるか、値がヌルである（すなわち、事前に決定した「ヌル」値に対応する）か、を示すフラグも含まれる。センサス構成要素は、（各パーティションについて）同一フィールドに対する同一の値の出現を取り込み、それらを出現数カウントを含む１つのセンサス構成要素に組み合わせるローカルのロールアップフィールド／値要素６２２に流れ込む。正規化要素６１６の別の出力は、全てのパーティションについて集結されるとともに、ロールアップ総カウント要素６１８で組み合わされるフィールドおよび値の総数のカウントである。総カウントは、データセットプロファイル２１６にロードするため、一時ファイル６２０に格納される。
【００９９】
図７は、全てが同一のフィールドを有するとは限らない条件付きレコードを取り扱って、フィールド／値の対を含むセンサス構成要素のフローを生成可能な正規化要素が実行する処理７１０の実施例のフロー図である。処理７１０は、７１２にて新しいレコードを取得することにより開始するネストループを実行する。処理７１０は、レコード毎に、７１４にてそのレコード内のフィールドを取得し、７１６にてそのフィールドが条件付きフィールドかどうかを判定する。フィールドが条件付きの場合、処理７１０は、７１８にてそのフィールドがそのレコードに存在するかどうかを判定する。フィールドが存在する場合、処理７１０は、７２０にてそのフィールドのレコードの値を正規化し、フィールド／値の対を含む対応する出力構成要素を生成する。フィールドが存在しない場合、処理７１０は、７２２における別のフィールドがあるかどうかの判定、または、７２４における別のレコードがあるかどうかの判定に進む。フィールドが条件付きでない場合、処理７１０は、７２０にてそのフィールドのレコード（ヌル値の可能性を含む）を正規化し、次のフィールドまたはレコードに進む。
【０１００】
フィールド／値によるパーティション要素６２４は、センサス構成要素をフィールドおよび値により再パーティション化し、それにより、グローバルロールアップフィールド／値要素６２６で実行するロールアップ処理が、異なるパーティションで計算した出現回数を加算して、プロファイリングしたレコード内に含まれる一意の各フィールド／値の対に対する単一センサス構成要素内の総出現カウントを生成できる。グローバルロールアップフィールド／値要素６２６は、センサスファイル要素４１０により表される潜在的並列ファイルに対する潜在的多数パーティション内のこれらのセンサス構成要素を処理する。
【０１０１】
図５Ｂは、プロファイリンググラフ４００のセンサス解析要素４１２を実装するサブグラフ６３０を説明する図である。フィールドによるパーティション要素６３２は、センサスファイル要素４１０からのセンサス構成要素のフローを読み取り、同一のフィールド（但し、異なる値）をもつセンサスレコードが同一のパーティション内にあるように、フィールドに基づくハッシュ値によりセンサス構成要素を再パーティション化する。文字列、数字、日付へのパーティション要素６３４は、センサス構成要素内の値の型に従ってセンサス構成要素を更にパーティション化する。各種の統計を、（ロールアップ文字列要素６３６内の）文字列、（ロールアップ数字要素６３８内の）数字、または（ロールアップ日付要素６４０内の）日付／日付時刻の値について（ロールアップ処理を用いて）計算する。例えば、数字については、平均値および標準偏差を計算するのは適切であるが、文字列について不適切である。
【０１０２】
全てのパーティションから結果が集められ、ヒストグラム／十分位数情報計算要素６４２は、ヒストグラムを構築するのに有用な情報（例えば、各フィールドの最大値および最小値）を、バケット計算要素６５４に提供し、十分位数統計を計算するために有用な情報（例えば、各フィールドの値の数）を十分位数情報計算要素６５２に提供する。ヒストグラムおよび十分位数統計を生成するサブグラフ６３０の要素（フェーズ区切り線６４４の下）は、ヒストグラム／十分位数情報計算要素６４２（フェーズ区切り線６４４の上）が動作を終了してから動作する。
【０１０３】
サブグラフ６３０は、十分位数境界での値（例えば、値の１０％、値の２０％などより大きな値）のリストを以下により構築する。すなわち、（ソート要素６４６で）各パーティション内の値によりセンサス構成要素をソートする。（値によるパーティション要素６４８で）ソートした値によりセンサス構成要素を再パーティション化する。および、十分位数計算要素６５２へのソートした（直列の）フローに構成要素をマージする。十分位数計算要素６５２は、各フィールドについてのソート値をそのフィールド内の値の総数の１０分の１のグループでカウントして、十分位数境界の値を得る。
【０１０４】
サブグラフ６３０は、各フィールドについて以下によりヒストグラムを構築する。すなわち、一括した値（または「バケット(bucket)」）それぞれを定義する値を計算する。（ローカルロールアップヒストグラム要素６５６で）同一のバケットに入る各パーティション内の値をカウントする。（グローバルロールアップヒストグラム要素６５８で）全てのパーティションからの各バケット内の値を計算する。次いで、フィールドプロファイルパーツ組合せ要素６６０が、ヒストグラム、十分位数統計、および一時ファイル６１０からのシーケンス統計を含む各フィールドプロファイルについての全情報を、フィールドプロファイル要素４１４内に収集する。図５Ｃは、プロファイリンググラフ４００のサンプル作成要素４１８を実装するサブグラフ６６２を説明する図である。サブグラフ６００にあるように、総当たりによるパーティション要素６６４は、入力データセット４０２の単一または多数のパーティションからレコードを取り込み、幾つかの並列プロセッサおよび／またはコンピューター間でレコードを再パーティション化し、プロセッサおよび／またはコンピューター間のワーク負荷を均衡させる。
【０１０５】
ルックアップおよび選択要素６６６は、フィールドプロファイル要素４１４からの情報を用いて、レコードと、ユーザーが掘り下げて見るために選択可能なユーザーインターフェース１１６上で示される値とが対応するかどうかを判定する。ユーザーインターフェース１１６で示される値の型はそれぞれ、異なる「サンプル型」と対応する。レコードの値がサンプル型と対応する場合、ルックアップおよび選択要素６６６は、レコードがサンプル型を表すよう選択されるかどうかを決定するランダム選択数を計算する。
【０１０６】
例えば、特定サンプル型の全５つのサンプルレコードに対して、選択数が、これまでに見られた（単一パーティション内の特定サンプル型の）５つの最大のもののうちの１つである場合、対応するレコードを、どの値が掘り下げて見るのに対応するのかを指示する情報と併せて、出力として通過させる。この仕組みにより、任意のサンプル型のうちの最初の５つのレコード、これまでに見られた５つの最大選択数のうちの１つを有する任意の他のレコードが、自動的に次の要素に渡される。
【０１０７】
次の要素は、サンプル型に従ってレコードを再パーティション化するサンプル型によるパーティション要素６６８であり、それにより、ソート要素６７０が各サンプル型内の選択数によりソートできる。次いで、走査要素６７２が、各サンプル型について（全てのパーティションの間で）最大選択数をもつ５つのレコードを選択する。次いで、サンプル書き込み／リンク要素６７４は、これらのサンプルレコードをサンプルレコードファイル４２０に書き込み、そのレコードをフィールドプロファイル要素４１４内の対応する値にリンクする。
【０１０８】
メタデータ格納ロード要素４１６は、一時ファイル要素６２０からのデータセットプロファイルを、メタデータ格納１１２のデータセットプロファイル２１６のオブジェクトにロードし、フィールドプロファイル要素４１４からの各フィールドプロファイルを、メタデータ格納１１２のフィールドプロファイル２２２のオブジェクトにロードする。これにより、ユーザーインターフェース１１６は、データセットのためのプロファイリング結果を引き出し、ユーザーインターフェース１１６により生成されるスクリーン上で、ユーザー１１８にそれを表示する。ユーザーは、プロファイル結果をブラウジングして、フィールドについてのヒストグラム、または頻出値を知ることができる。例えば、ヒストグラムのバーと関係付けられる特定のレコードを見ることを可能にする掘り下げ機能を提供してもよい。
【０１０９】
図８Ａ〜図８Ｃは、プロファイリング結果を示すユーザーインターフェース画面出力の実施例である。図８Ａは、データセットプロファイル２１６からの結果を示す。データセット全体について各種の総計８０２を、プロファイリングしたフィールドと関係付けられる特性の要約８０４と併せて示す。図８Ｂ〜図８Ｃは、例示のフィールドプロファイル２２２からの結果を示す。最大頻度値８０６、および最大頻度非妥当値８０８などの、選択値が、以下を含む各種の形式で表示される。すなわち、人が読める文字列８１０としての値そのもの、値の出現総カウント数８１２、値の総数のパーセント８１４、およびバーチャート８１６で表される。値のヒストグラム８１８は、ゼロのカウントをもつバケットを含み、値の範囲に渡る多数のバケットのそれぞれについて表示する。十分位数境界８２０も表示する。
【０１１０】
５  実施例
５．１  データ把握
図９は、別の処理で用いることができるようにデータセットをプロファイリングしてその内容を把握するための手順９００の実施例についてのフロー図を示す。手順９００は、自動的に（例えば、スケジュール化スクリプトによる）、または手動で（例えば、ユーザーが端末で）実行できる。手順９００はまず、９０２にてランタイム環境内でアクセス可能な１つ以上のデータシステム上で、プロファイリングするデータセットを識別する。次いで、手順９００はオプションとして、供給される情報または既存のメタデータに基づいて、９０４にてレコードフォーマットを設定でき、９０６にて検証規則を設定できる。データベーステーブルなどの、データ型によっては、デフォルトのレコードフォーマット、および検証規則を用いることができる。次いで、手順９００は、９０８にてデータセット（またはデータセットのサブセット）にプロファイルを実行する。手順９００は、初期プロファイルの結果に基づいて、９１０にてレコードフォーマットを改良し、または、９１２にて検証規則を改良することができる。いずれかのプロファイリングオプションを変更した場合、手順９００は、９１４にて新規オプションを用いてデータに別のプロファイルを実行するか、またはデータセットについての十分な情報が（おそらく繰り返しの）プロファイリングから得られた場合、９１６にてデータセットを処理するかどうかを決定する。その処理は、プロファイリングから得られた情報を用いて、１つ以上のデータシステムから直接読み取る。
【０１１１】
５．２  品質検査
図１０は、データ格納に変換およびロードできるように、データセットをプロファイリングして、その品質を検査するための手順１０００の実施例についてのフロー図を示す。手順１０００は、自動的に、または手動で実行できる。データセットの品質を検査するための規則は、データセットの過去の知識から、および／または類似のデータセット（例えば、検査するデータセットと同一のソースからのデータセット）に実行する手順９００などの、プロファイリング手順の結果からもたらされる。この手順１０００は、例えばビジネスで、ビジネス相手から送られてくる定期的な（例えば、月次）データをプロファイリングしてから、データをインポートし、または処理するのに用いることができる。これにより「不良(bad)」データ（例えば、妥当でない値の割合が閾値を超えるデータ）を検出することが可能となり、既存のデータ格納が、取り消しが困難なアクションにより「汚染(pollute)」されなくなる。
【０１１２】
手順１０００は、まず１００２にてランタイム環境内の１つ以上のアクセス可能なデータシステム上の検査すべきデータセットを識別する。次いで、手順１０００は、１００４にてデータセット（またはデータセットのサブセット）にプロファイルを実行し、１００６にてプロファイル結果に基づいて品質検査を実行する。例えば、データセット内の特定の頻出値の出現率を、過去のデータセットでの（過去のプロファイル実行に基づく）その特定頻出値の出現率と比較でき、両者の率に１０％を超える差がある場合、品質検査は不合格となる。この品質検査は、一貫して（１０％以内に）出現することが判っている一連のデータセットの値にも適用できる。手順１０００は、１００８にて品質検査の結果を判定し、１０１０にて不合格になるとフラグ（例えば、ユーザーインターフェースプロンプト、またはログファイルに記入）を生成する。品質検査を合格すると、手順１０００は、１０１２にて１つ以上のデータシステムから直接読み取り、変換し（恐らくはプロファイルからの情報を用いて）、そしてデータセットからのデータをデータ格納にロードする。次いで、例えば、１００２にて別のデータセットを識別することにより、その手順を繰り返すことができる。
【０１１３】
５．３  コード生成
プロファイリングモジュール１００は、データセットからのレコードのフローを処理するために用いることができるグラフ要素などの、実行可能なコードを生成できる。生成した要素は、入力されてくるレコードにフィルタをかけることができ、プロファイリンググラフ４００のクリーニングオプションと同様に、妥当なレコードだけを流し出すことができる。例えば、ユーザーは、プロファイル実行が完了した時に、クリーニング要素が生成されるよう指示するプロファイルオプションを選択できる。要素を実装するためのコードは、（ユーザーが指定する）ファイル場所に向けられる。そして、生成されたクリーニング要素は、プロファイリング実行中にメタデータ格納１１２に格納した情報を用いて、プロファイリングモジュール１００と同一のランタイム環境で動作可能である。
【０１１４】
６  結合フィールド解析
プロファイリングモジュール１００は、１つ以上のフィールドグループ関連性をオプションで解析できる。例えば、プロファイリングモジュール１００は、同一でも異なってもよいデータセット内の２つのフィールド対の間の解析を実行できる。同様に、プロファイリングモジュール１００は、幾つかのフィールド対の解析を実行でき、例えば、あるデータセット内の各フィールドを、別のデータセット内の全てのフィールドにより解析したり、または、あるデータセット内の各フィールドを、同一データセット内の他の全てのフィールドにより解析したりできる。異なるデータセット内の２つのフィールドの解析は、以下に詳細に説明するように、これらのフィールド上の２つのデータセットの結合演算の特性と関連している。
【０１１５】
結合フィールド解析へ第１のアプローチでは、２つのデータセット（例えば、ファイルまたはテーブル）に結合演算が実行される。下記のセクション６．１に説明する別のアプローチでは、センサス作成要素４０６が、データセットに対するセンサスファイルを生成した後、センサスファイルの情報を用いて、２つの異なるプロファイリングしたデータセットのフィールド間の、または同一のプロファイリングしたデータセット（もしくは、センサスファイルが存在する任意の他のデータセット）の２つの異なる部分のフィールド間の、結合フィールド解析を実行できる。結合フィールド解析の結果には、フィールド間の潜在的な関連性についての情報が含まれる。
【０１１６】
見出される３種類の関連性は、「共通領域」関連性、「十分結合」関連性、および「外部キー」関連性がある。フィールド対は、結合フィールド解析結果が下記のような特定基準を満たす場合、これら３種類の関連性のうちの１つを有するとして分類される。
【０１１７】
結合フィールド解析には、キーフィールドとして２つのフィールドを用いて実行する結合演算から生成されるレコード数などの情報の集計が含まれる。図１１Ａ〜図１１Ｂにより、２つのデータベーステーブルからのレコードに実行される結合演算の実施例を説明する。テーブルＡおよびテーブルＢはそれぞれ、「フィールド１」および「フィールド２」とラベル付けされた２つのフィールド、および４つのレコードを有する。
【０１１８】
図１１Ａを参照する。結合要素１１００は、テーブルＡからのレコードのキーフィールドからの値を、テーブルＢからのレコードのキーフィールドからの値と比較する。テーブルＡでは、キーフィールドはフィールド１、テーブルＢではキーフィールドはフィールド１である。従って、結合要素１１００は、テーブルＡ、フィールド１（Ａ１）からの値１１０２を、テーブルＢ、フィールド１（Ｂ１）からの値１１０４と比較する。結合要素１１００は、テーブルから入力レコードフロー１１１０を受け取り、キーフィールド値の比較に基づいて、新規結合テーブルとなるテーブルＣを形成する結合レコードフロー１１１２を生成する。結合要素１１００は、入力フロー内の一致キーフィールド値の各対に対する一致キーフィールド値を有するレコードの連結である結合レコードを生成する。
【０１１９】
結合出力ポート１１１４から出る特定キーフィールド値を有する結合レコードの数は、それぞれの入力のそのキーフィールド値を有するレコード数のデカルト積となる。図示の実施例では、レコード１１１０の入力フローは、それぞれのキーフィールドの値でラベル付けして示し、結合レコード１１１２の出力フローは、一致した値でラベル付けして示す。２つの入力フローそれぞれに２つの「Ｘ」値が現れるので、出力フローに４つの「Ｘ」値がある。他方の入力フローのどのレコードとも一致しないキーフィールド値をもつ一方の入力フローのレコードは、テーブルＡ、およびテーブルＢの入力フローそれぞれについて「除去(rejected)」出力ポート１１１６Ａ、および１１１６Ｂから出る。図示の実施例では、「Ｗ」値が除去ポート１１１６Ａに現れている。
【０１２０】
プロファイリングモジュール１００は、２つのフィールド間の関連性をカテゴリ化するために、結合、および除去した値の統計を集計する。統計は、２つのフィールドの値の出現をカテゴリ化する出現チャート１１１８に要約される。「出現数」は、値がフィールドに出現する回数を表す。チャートの列は、第１フィールド（本実施例ではテーブルＡからの）に対する出現数０、１、およびＮ（ここでＮ＞１）と対応し、チャートの行は、第２フィールド（本実施例ではテーブルＢからの）に対する出現数０、１、およびＮ（ここでＮ＞１）と対応する。チャート内のボックスには、対応する出現パターンと関係付けられるカウントが収納される。すなわち、「列出現数」×「行出現数」である。各ボックスには、２つのカウントが収納される。すなわち、その出現パターンをもつ別個の値の数、およびこれらの値に対する個々の結合レコードの総数、である。場合によっては、値は両フィールドに出現し（すなわち、１×１、１×Ｎ、Ｎ×１、またはＮ×Ｎの出現パターンを有する）、別の場合には、値が唯１つのフィールドに出現する（すなわち、１×０、０×Ｎ、Ｎ×０、または０×Ｎの出現パターンを有する）。カウントはコンマで分ける。
【０１２１】
出現チャート１１１８には、結合レコード１１１２、およびポート１１１６Ａの除去レコードと対応するカウントが収納される。除去出力ポート１１１６Ａの値「Ｗ」は、単一値および単一レコードそれぞれを指示する１×０の出現パターンに対するボックス内の「１，１」カウントと対応する。値「Ｘ」は、Ｎ×Ｎの出現パターンに対するボックス内の「１，４」カウントに対応する。なぜなら、値「Ｘ」は、各入力フローに２回出現し、全４つの結合レコードとなるからである。値「Ｙ」は、１×Ｎの出現パターンに対するボックス内の「１，２」カウントに対応する。なぜなら、値「Ｙ」は、第１入力フローに１回出、第２入力フローに２回出現し、全２つの結合レコードをなるからである。
【０１２２】
図１１Ｂにより、図１１Ａの実施例と類似しているが、異なるキーフィールド対をもつ実施例を説明する。テーブルＡではキーフィールドはフィールド１であり、テーブルＢではキーフィールドはフィールド２である。従って、結合要素は、テーブルＡ、フィールド１（Ａ１）からの値１１０２を、テーブルＢ、フィールド２（Ｂ２）からの値１１２０と比較する。この実施例は、これらのフィールドに対する入力レコードフロー１１２４と対応するカウントをもつ出現チャート１１２２を有する。図１１Ａの実施例と同様に、出現パターン０×１に対するボックス内の「１，１」カウントと対応する単一の除去された値「Ｚ」がある。しかしながら、この実施例では、出現パターン１×１をもつ２つの値、「Ｗ」および「Ｙ」があり、出現パターン１×１に対するボックス内の「２，２」カウントとしている。なぜなら、２つの値、および２つの結合レコードがあるからである。値「Ｘ」は、単一値および２つの結合レコードを指示するＮ×１の出現パターンに対するボックス内の「１，２」カウントと対応する。
各種合計を出現チャート内の数字から計算する。これらの合計の幾つかには、テーブルＡ、およびテーブルＢの両方に出現する別個のキーフィールド値の合計数、テーブルＡに出現する別個のキーフィールド値の合計数、テーブルＢに出現する別個のキーフィールド値の合計数、およびそれぞれのテーブルに一意の値（すなわち、キーフィールドの単一のレコードにのみ出現する値）の合計数が含まれる。これらの合計に基づく統計を用いて、フィールド対が上記３種類の関連性のうちの１つを有するかを判定する。統計には、別個の、または一意の値をもつフィールド内の全レコードの割合、特定の出現パターンをもつ全レコードの割合、および各フィールドに対する「相対重複値」が含まれる。相対重複値は、一方のフィールドに出現し、他方のフィールドにも出現する別個の値の割合である。フィールド対が３種類の関連性（必ずしも相互排他とは限らない）のうちの１つを有するかどうかを判定するための基準は次の通りである。
外部キー関連性  −  フィールドの第１のものが、高い相対重複値を有し（例えば、＞９９％）、第２フィールドが、一意の値の高い割合（例えば、＞９９％）を有する。第２フィールドは、一次キーの可能性があり、第２フィールドは、一次キーの外部キーの可能性がある。
十分結合関連性  −  フィールドの少なくとも１つが、除去レコードの割合が少なく（例えば、＜１０％）、Ｎ×Ｎの出現パターンをもつ個々の結合レコードの割合が少ない（例えば、＜１％）。
共通領域関連性  −  フィールドの少なくとも１つが、高い相対重複値を有する（例えば、＞９５％）。
【０１２３】
フィールド対が、外部キー、および十分結合または共通領域関連性の両方を有する場合、外部キー関連性を報告する。フィールド対が、十分結合関連性、および共通領域関連性の両方を有するが、外部キー関連性をもたない場合、十分結合関連性を報告する。
【０１２４】
６．１  センサス結合
図１２Ａを参照する。テーブルに結合演算を実際に実行する代替として、センサス結合要素１２００が、テーブルＡおよびテーブルＢからのフィールドを解析し、テーブルに対するセンサスデータから「センサス結合」演算を実行することにより、出現チャートについての統計を集計する。各センサスレコードは、フィールド／値の対、およびフィールド内の値の出現カウントを有する。各センサスレコードは、一意のフィールド／値の対を有するので、所与のキーフィールドに対して、センサス結合要素１２００の入力フローの値は一意である。図１２Ａの実施例は、キーフィールドＡ１、Ｂ１（図１１Ａに図示）の対への結合演算と対応する。フィルタ１２０２が「フィールド１」（Ａ１）を選択し、およびフィルタ１２０４が「フィールド１」（Ｂ１）を選択して、結合演算のキーフィールドと対応するセンサスレコードを比較することにより、センサス結合要素１２００は、テーブルＡおよびテーブルＢからの個々のレコードのキーフィールドを比較する結合要素１１００よりずっと少ない数の比較ですむ可能性がある。図１２Ｂの実施例は、フィルタ１２０６が、「フィールド１」（Ａ１）を選択し、およびフィルタ１２０８が「フィールド２」（Ｂ２）を選択する結合演算と対応する。選択したセンサスレコード１２１０〜１２１８は、フィールド／値の対のそれぞれのフィールドに対する値、およびその値に対する出現カウントによるラベルを付けて示す。
【０１２５】
センサス結合要素１２００が、２つの入力センサスレコード１２１０〜１２１８の値の間に一致を見付けた場合、出力レコードには、一致した値、２つのカウントに基づく対応する出現パターン、およびキーフィールド対への結合演算で生成されるレコードの総数（単に２つのカウントの積）が収納される。値の一致が見付からない場合も、その値は、対応する出現パターン、およびレコードの総数（単一の入力レコードにおける単一カウント）とともに出力される。センサス結合要素１２００の出力レコード内のこの情報により、結合演算に対する出現チャートのカウント全てを十分集計できる。
【０１２６】
図１２Ａの実施例では、値「Ｗ」は、出現パターン１×０、および総数１を伴って出力に現れ、値「Ｘ」は、出現パターンＮ×Ｎ、および総数４を伴って出力に現れ、値「Ｙ」は、出現パターン１×Ｎ、および総数２を伴って出力に現れる。この情報は、図１１Ａの出現チャート１１１８の情報と一致する。図１２Ｂの実施例では、値「Ｗ」は、出現パターン１×１、および総数１を伴って出力に現れ、値「Ｘ」は、出現パターンＮ×１、および総数２を伴って出力に現れ、値「Ｙ」は、出現パターン１×１、および値１を伴って出力に現れ、値「Ｚ」は、出現パターン０×１、および値１を伴って出力に現れる。この情報は、図１１Ｂの出現チャート１１２２の情報と一致する。
【０１２７】
６．２  拡張レコード
単一のセンサス結合演算での多数のフィールド対に対する結合フィールド解析には、センサスレコードに基づいて「拡張レコード」を生成するステップが含まれる。図１３に示す実施例では、センサス結合要素１２００は、図１２Ａ〜図１２Ｂに示す結合フィールド解析を組み合わせて、キーフィールドＡ１、Ｂ１、およびＡ１、Ｂ２の二対の結合フィールド解析に対するレコードを比較する。拡張レコードは、結合されたキーフィールド対に対する一意の識別子をセンサスレコードの値と連結し、センサスレコードと同一の出現カウントを保持することにより、センサスレコードから生成される。
結合フィールド解析が、多数の他のフィールドと結合されているフィールドの結果を含む場合、そのフィールドの値毎に多数の拡張レコードが生成される。例えば、センサスレコード１２１０は、値「Ｗ」がそれぞれ識別子「Ａ１Ｂ１」、および「Ａ１Ｂ２」と連結された２つの拡張レコード１３０１〜１３０２と対応する。センサス結合要素１２００は、値「ＷＡ１Ｂ１」をもつセンサスレコードを扱うかのように拡張レコード１３０１を扱う。同様に、センサスレコード１２１１は、２つの拡張レコード１３０３〜１３０４と対応し、センサスレコード１２１２は、２つの拡張レコード１３０５〜１３０６と対応する。
【０１２８】
図１３の結合フィールド解析では、フィールドＢ１は１つの他のフィールド（Ａ１）と結合されるだけであり、従って、各センサスレコード１２１３〜１２１４は、単一の拡張レコード１３０７〜１３０８とそれぞれ対応する。同様に、フィールドＢ２は１つの他のフィールド（Ａ１）と結合され、従って、各センサスレコード１２１５〜１２１８は、単一の拡張レコード１３０９〜１３１２と対応する。各拡張レコードには、一意のフィールド識別子と連結された元の値に基づく値が含まれる。
【０１２９】
図１４を参照する。拡張要素１４００は、結合フィールド解析で、どのフィールドが他のどのフィールドと結合されているかを指示する結合情報１４０１に基づいて、入力センサスレコードを処理して拡張レコードを生成する。本実施例では、結合情報１４０１、テーブルＴ１（４つのセンサスレコード１４０２をもつ）に対するセンサスデータからのフィールドＦ1が４つの他のフィールド、すなわち、テーブルＴ２（２つのセンサスレコード１４０４をもつ）に対するセンサスデータからのフィールドＦ１、テーブルＴ２（２つのセンサスレコード１４０６をもつ）に対するセンサスデータからのフィールドＦ２、テーブルＴ３（２つのセンサスレコード１４０８をもつ）に対するセンサスデータからのフィールドＦ１、およびテーブルＴ３（２つのセンサスレコード１４１０をもつ）に対するセンサスデータからのフィールドＦ２、と結合されていることを指示する。拡張要素１４００に流入するセンサスレコード１４１２は、フィールドＦ１をもつテーブルＴ１に対するセンサスデータからの４つのセンサスレコード１４０２のうちの１つ、および値Ｖi（ｉ＝１、２、３、または４）を表す。拡張要素１４００は、入力センサスレコード１４１２に対して４つの拡張レコード１４１３〜１４１６を生成する。
【０１３０】
センサス結合要素１２００は、同一名をもつ異なるテーブルのフィールドを含むフィールドに対して一意の識別子を用いる。拡張レコード１４１３は、元の値Ｖiを、結合されているフィールドに対する識別子、およびフィールドに対するセンサスデータが生成されたテーブル（またはファイルか他のデータソース）に対する識別子と連結したものである値ｃ（Ｔ１、Ｆ1、Ｔ２、Ｆ1、Ｖi）を有する。テーブルに対する識別子を含むのは、同一名のフィールドを区別できるようにするためである。テーブルＴ２およびＴ３がともに同一のフィールド名Ｆ1をもつ場合、値ｃ（Ｔ１、Ｆ1、Ｔ３、Ｆ1、Ｖi）をもつ拡張レコード１４１５を、拡張レコード１４１３の値ｃ（Ｔ１、Ｆ1、Ｔ２、Ｆ1、Ｖi）と区別できる。代替として、一意の数字を各フィールドに割り当てて、フィールド名の代わりに用いることができる。
【０１３１】
６．３  結合フィールド解析グラフ
図１５Ａ〜図１５Ｂは、データソース３０内のソース（例えば、テーブルまたはファイル）にある選択フィールドの結合フィールド解析をオプションとして実行するためにプロファイリングモジュール１００が用いるグラフを示す。ユーザー１１８は、プロファイリングし、結合フィールド解析をするためのオプションを選択する。オプションは、結合フィールド解析せずにプロファイルを実行するステップを含む。ユーザー１１８は、互いに対となる２つの特定フィールド、他の全てのフィールドと対になる１つのフィールド、または他の全てのフィールドと対になる全てのフィールドを含む結合フィールド解析のためのフィールド対を選択する。ユーザー１１８は、同一のテーブルまたはファイル内のフィールドを対にできるオプション、または異なるテーブルまたはファイルからのフィールドだけを対にできるオプションを選択する。これらのオプションはメタデータ格納１１２に格納されている。
【０１３２】
図１５Ａを参照する。結合フィールド解析オプションで指定したフィールドの各ソース（例えば、テーブルまたはファイル）について、グラフ１５００は、これらの指定フィールドについて作成したセンサスデータ１５１０をもつファイルを生成する。グラフ１５００は、結合フィールド解析に含まれるこのようなソース毎に一回実行される。フィルタ１５０４は、センサス作成要素４０６が生成するセンサスデータ１５０２からレコードを受け取り、結合フィールド解析についてのレコードを作成する。フィルタ１５０４は、（メタデータ格納１１２に格納したユーザーオプションにより決定された）解析に含まれないフィールドのレコードを破棄する。フィルタ１５０４はまた、妥当でない値、ヌル値、およびデータソース内容の意義ある解析に含まれないその他の値（例えば、既知のデータフラグ）を破棄する。
【０１３３】
センサスデータ１５０２内の値は、センサス作成要素４０６内の正規化要素６１６により正規化されている。しかしながら、これらの正規化された値は、例えば、先頭または末尾にスペースをもつ文字列、または先頭または末尾にゼロをもつ数字など、値の論理比較で用いるべきでない部分を有することがある。ユーザー１１８は、これらの値を「文字通り(literally)」比較すべきか、あるいは「論理的に(logically)」比較すべきかのオプションを選択できる。ユーザー１１８が「文字通り」の比較を選択する場合、センサスレコードの値は正規化形式のまま残される。ユーザー１１８が「論理的な」比較を選択する場合、フィルタ１５０４は、先頭または末尾のスペースを除去し、数字では先頭または末尾のゼロを除去するなどの、規則に従ってセンサスレコードの値を変換する。
【０１３４】
値によるパーティション要素１５０６は、センサスレコードの値に基づいてレコードを再パーティション化する。同一の値をもつセンサスレコードは何れも、同一のパーティションに置く。これにより、結合フィールド解析を任意の数のパーティションについて並列に実行することが可能になる。センサス結合要素１２００は、値が一致する入力レコードに対する出力だけを生成するので、別のパーティションのセンサスレコード（またはそれらから生成される何らかの拡張レコード）を互いに比較する必要はない。
【０１３５】
ロールアップ論理値要素１５０８は、フィルタ１５０４が実行する変換により、一致するフィールド／値の対をもつ任意のセンサスレコードを組み合わせる。組み合わせたレコードは、組み合わされる全てのレコードに対するカウントを合計した出現カウントを有する。例えば、「量，０１．００，５」のフィールド、値、カウントをもつセンサスレコードが、「量，１，５」に変換され、「量，１．０，３」のフィールド、値、カウントをもつセンサスレコードが、「量，１，３」に変換される場合、ロールアップ論理値要素１５０８は、これら２つの変換されたレコードを、「量，１，８」のフィールド、値、カウントをもつ単一のレコードに組み合わせる。
【０１３６】
図１５Ｂを参照する。結合フィールド解析オプションで指定したように、比較する１つ以上のフィールドをもつソースＡ、およびソースＢの各ソース対について、グラフ１５１２は、それぞれグラフ１５００が作成した作成センサスデータＡ１５１４、および作成センサスデータＢ１５１６を用いて実行される。２つの拡張要素１４００は、ソースＢの特定フィールドと比較すべきソースＡの特定フィールドを規定する結合情報１５１５と併せて、これらの作成したセンサスデータのセットからレコードを受け取る。比較するフィールドに対する値、出現パターン、および出現チャートのカウントを含むレコードを生成するセンサス結合要素１２００に拡張レコードが流れ込む。ローカルロールアップ結合統計要素１５１８は、各パーティション内のこれらのレコードにある情報を集計する。各種のパーティションのレコードは、解析するソース対全てのフィールドに対する結合フィールド解析統計のファイル１５２２を出力するグローバルロールアップ結合統計要素１５２０により集結され、集計される。各種のフィールド間に、３種類の関連性のうちのどれが存在する可能性があるかを含む結合フィールド解析の結果が、ユーザー１１８への提示のためにメタデータ格納１１２にロードされる。例えば、ユーザー１１８は、可能性のある関連性をもつフィールド対に対するユーザーインターフェース１１６上のリンクを選択し、フィールド対に対する出現チャートからのカウントを含む詳細な解析結果をもつユーザーインターフェース１１６上のページを見ることができる。
【０１３７】
図１５Ｃを参照する。結合フィールド解析を、同一ソース（ソースＣ）内の２つのフィールドに対して実行する場合、グラフ１５２４は、グラフ１５００が作成した作成センサスデータＣ１５２６を用いて実行される。単一の拡張要素１４００は、比較すべきソースＣの特定フィールドを規定する結合情報１５２８と併せて、作成センサスデータＣ１５２６のセットからレコードを受け取る。比較するフィールドに対する値、出現パターン、および出現チャートのカウントを含むレコードを生成するセンサス結合要素１２００の両ポートに、拡張レコードが流れ込む。
【０１３８】
ソースＣの全てのフィールドを、（４つのフィールド：Ｆ１、Ｆ２、Ｆ３、Ｆ４をもつ）ソースＣの他の全てのフィールドと比較するよう指示する結合フィールド解析オプションの場合、一手法では、結合情報１５２８が、１２対のフィールド（Ｆ１−Ｆ２，Ｆ１−Ｆ３，Ｆ１−Ｆ４，Ｆ２−Ｆ１，Ｆ２−Ｆ３，Ｆ２−Ｆ４，Ｆ３−Ｆ１，Ｆ３−Ｆ２，Ｆ３−Ｆ４，Ｆ４−Ｆ１，Ｆ４−Ｆ２，Ｆ４−Ｆ３）を指定する。しかしながら、Ｆ１−Ｆ３、およびＦ３−Ｆ１の対では同一の演算が実行されるので、幾つかの演算は繰り返しである。従って、別の手法では、結合情報が、一意の６対、Ｆ１−Ｆ２，Ｆ１−Ｆ３，Ｆ１−Ｆ４，Ｆ２−Ｆ３，Ｆ２−Ｆ４，Ｆ３−Ｆ４だけを指定する。この場合、出力ファイル１５３０の結果は、解析した６対の解析結果のフィールド順を逆にすることにより、他の６対のフィールドの結果を含めるように補う。
【０１３９】
７  機能依存性解析
プロファイリングモジュール１００が実行可能な別の種類の解析は、フィールドの値の間の機能関連性の検査である。検査するフィールドは、フィールドセットをもつ単一のテーブルからでも、（例えば、セクション７．３で更に詳細に説明するように、共通キーフィールドを用いるフィールドの結合演算により）関連する多数のソースからのフィールドを含む「仮想テーブル(virtual table)」からでもよい。フィールド対の間の機能関連性の一種に、レコードのあるフィールドと関係付けられる値が、そのレコードの別のフィールドと関係付けられる値により一意に決定できる「機能依存性」がある。例えば、データベースが「State」フィールド、および「Zip Code」フィールドを有する場合、「Zip Code」フィールドの値（例えば、「９００１９」）は、「State」フィールドの値（例えば、「ＣＡ」）を決定する。すなわち、「多対一」マッピングにより、「Zip Code」フィールドの各値を「State」フィールドの一意の値にマッピングする。機能依存関連性は、レコードの一方のフィールドと関係付けられる値を、レコードの他のフィールドと関係付けられる値により一意に決定できるフィールドのサブセット間に存在させることもできる。例えば、「Zip Code」フィールドの値は、「City」フィールド、および「Street」フィールドの値により一意に決定できる。
【０１４０】
機能依存性は、「近似機能依存性」とすることもできる。あるフィールドと関係付けられる値の、全てとは限らない幾つかが、一意の値にマッピングされないある割合の例外を除いて、別のフィールドの一意の値にマッピングされる。例えば、レコードの幾つかが、特別な値「00000」で示される未知の「Zip Code」をもつことがある。この場合、「Zip Code」フィールドの値「00000」は、「State」フィールド（例えば、「ＣＡ」、「ＦＬ」、および「ＴＸ」）の２つ以上の値にマッピングされることになる。例外は、不正確な値、または他のエラーにより発生することもある。例外の率が所定の（例えば、ユーザー入力の）閾値より小さい場合には、フィールドは別のフィールドに機能的に依存していると判定できる。
【０１４１】
図１６を参照する。機能依存性、または近似機能依存性を検査するレコード（行）、およびフィールド（列）を有する例示のテーブル１６００を示す。「Last Name」フィールドは、１２のレコード（行１〜１２）と対応する１２の値を有する。値のうちの１０個は一意であり、２つは同一の繰り返しの値「name_g」を有する。「Citizenship」フィールドは、２つの一意の値、すなわち、１１回出現する「ＵＳ」、および一回出現する「ＣＡＮＡＤＡ」を有する。「Zip Code」フィールドは、「State」フィールドの３つの値「ＣＡ」、「ＦＬ」、および「ＴＸ」のうちの１つとそれぞれ対応する様々な値を有する。「Zip Code」の各値は、あるレコード（行１０）では「ＦＬ」、およびもう１つのレコード（行１２）では「ＴＸ」と対応するZip Code値「00000」を除いて、一意に「State」の値を決定する。
【０１４２】
７．１  機能依存性解析グラフ
図１７は、データソース３０内の１つ以上のソース（例えば、単一のテーブル、もしくはファイル、またはセクション７．３で説明するような多数のテーブルおよび／もしくはファイル）の選択フィールドの機能依存性解析オプションを実行するためにプロファイリングモジュール１００が用いるグラフ１７００の実施例を示す。ユーザー１１８は、プロファイリング、および機能依存性解析のためのオプションを選択する。機能依存性解析をせずにプロファイリングを実行するオプションも含まれる。ユーザー１１８は、機能関連性を検査するフィールド対を選択する。ユーザー１１８は、データソース（例えば、テーブルまたはファイル）の特定フィールドを選択し、例えば、「全てから選択したものに」、もしくは「選択したものから選択したものに」を選んで、検査するフィールド対を決定するか、または「全てから全てに」を選んでデータソースのフィールド対全てを検査する。ユーザーは機能依存度を判定するための閾値を選択してから、あるフィールドが別のフィールドと機能依存しているかどうかを決定することもできる。例えば、ユーザーは、どれくらいの例外を（レコードの割合として）許容するかを決定する閾値を選択してもよい。これらのオプションはメタデータ格納１１２に格納される。
【０１４３】
解析すべき各フィールド対（ｆ１、ｆ２）について、グラフ１７００は、機能依存関連性が存在するかどうかを判定し、存在する場合は、フィールドｆ１とフィールドｆ２との間の関連性を以下のように分類する。すなわち、「ｆ１がｆ２を決定する」、「ｆ２がｆ１を決定する」、「一対一」（ｆ１とｆ２との間には一対一のマッピングが存在する）、または「同一」（ｆ１がレコードのそれぞれについてｆ２と完全に同一な値を有する）と分類する。グラフ１７００は、プロファイリングモジュール１００が格納するフィールド情報１７０２を読み取って、解析するフィールドの一意の識別子を判定する。対作成要素１７０４は、検査するフィールド対それぞれの一意の識別子対を用いて、フィールド対（ｆ１、ｆ２）のフローを生成する。対（ｆ１、ｆ２）は、ｆ１とｆ２との間の関連性が必ずしも対称ではないので、整然と並ぶ対である。従って、（ｆ１、ｆ２）、および（ｆ２、ｆ１）の両方の対がフローに含まれる。
【０１４４】
対選択要素１７０６は、ユーザーが解析のために選んだフィールド対を選択することにより、グラフ１７００の残りの部分に流れるフィールド対を制限する。対選択要素１７０６は、グラフ１７００の残りの部分に流れる対を各種の最適化に基づいてさらに制限する。例えば、フィールドはそれ自体と対にすることはできない。なぜなら、そのような対は定義により「完全同一」と分類されるからである。従って、対（ｆ１、ｆ１），（ｆ２、ｆ２）．．．などはフローに含まれない。他の最適化は、セクション７．２で、より詳細に説明するように、フローから１つ以上のフィールド対を除去できる。
【０１４５】
一斉通知要素１７０８は、一斉通知リンクシンボル１７１０により表されるように、フィールド対の直列フローを（並列の可能性がある）値アタッチ要素１７１８のパーティションそれぞれに一斉通知する。値アタッチ要素１７１８の各パーティションは、フィールド対のフロー（例えば、（Last Name，Citizenship），（Zip，State）．．．など）、およびフィールド／値の対のフロー（例えば、（Last Name，name_a），（Last
Name，name_b），（Last Name，name_c），．．．，（Citizenship，Canada），（Citizenship，US），（Citizenship，US）．．．など）を入力として取り込む。
【０１４６】
フィールド／値の対のフローを取得するために、フィルタ要素１７１２は、「入力データセット」要素４０２からレコードを抽出し、オプションとして、フィルタ式に基づいてレコードの一部を除去する。フィルタ要素１７１２から流れ出るレコードは、総当たりによるパーティション要素１７１４に流れ込む。総当たりによるパーティション要素１７１４は、「入力データセット」要素４０２のパーティションからレコードを取りだし、幾つかの並列プロセッサ、および／またはコンピューター間のレコードを再パーティション化して、プロセッサ、および／またはコンピューター間のワーク負荷を均衡させる。正規化要素１７１６（上記の正規化要素６１６と類似している）は、レコードのフローを取り込み、入力レコード内の各フィールドについての値を表すフィールド／値の対のフローを送り出す。上記のように、各値は、人が読める正規化文字列表現に変換される。
【０１４７】
値アタッチ要素１７１８は、一連の結合演算を実行して、ｆ１／ｆ２／ｖ１／ｖ２の４重フローを生成する。ここでｆ１、およびｆ２は、入力で受け取るフィールド対のうちの１つと対応し、ｖ１、およびｖ２は、レコードのこれらフィールドと対になる値と対応する。テーブル１６００の実施例では、「Last Name」フィールドがｆ１、「Citizenship」フィールドがｆ２、に対応する場合、値アタッチ要素１７１８は、１２個の４重フローｆ１／ｆ２／ｖ１／ｖ２を生成し、それらには（LastName/Citizenship/name_a/Canada），（LastName/Citizenship/name_b/US），．．．，（LastName/Citizenship/name_k/US），（LastName/Citizenship/name_g/US）が含まれる。値アタッチ要素１７１８は、（Zip 、State）について、同様な一連の４重のｆ１／ｆ２／ｖ１／ｖ２、および解析する任意の他のフィールド対を生成する。
【０１４８】
値アタッチ要素１７１８は、４重フローｆ１／ｆ２／ｖ１／ｖ２を、「ローカルロールアップｆ１／ｆ２／ｖ１／ｖ２」要素１７２０に出力する。この要素は（各パーティションについて）、同一のフィールド、および値ｆ１，ｆ２，ｖ１，ｖ２をもつ多数の４重対を蓄積し、入力４重フローの出現数カウントをもつ単一の４重対としてそれらを表す。「ローカルロールアップｆ１／ｆ２／ｖ１／ｖ２」要素１７２０の出力フローは、カウントをもつ４重対（または「蓄積した４重対」）から成る。
【０１４９】
「ローカルロールアップｆ１／ｆ２／ｖ１／ｖ２」要素１７２０で出現する蓄積は各パーティション内にある。従って、同一のｆ１／ｆ２／ｖ１／ｖ２の値をもつ幾つかの４重対は、この要素１７２０に蓄積されない可能性がある。「ｆ１／ｆ２によるパーティション」要素１７２１は、同一のフィールドｆ１、ｆ２をもつ４重対が同一のパーティションになるように、蓄積した４重対フローを再パーティション化する。「グローバルロールアップｆ１／ｆ２／ｖ１／ｖ２」要素１７２２は、再パーティション化した４重対を更に蓄積する。「グローバルロールアップｆ１／ｆ２／ｖ１／ｖ２」要素１７２２の出力フローは、一意の蓄積４重対から成る。テーブル１６００の実施例では、「Zip」フィールドがｆ１に対応し、「State」フィールドがｆ２に対応する場合、要素１７２０〜１７２２の組合せ効果は、（Zip/State/90019/CA,4），（Zip/State/90212/CA,2），（Zip/State/33102/FL,3），（Zip/State/00000/FL,1），（Zip/State/77010/TX,1），（Zip/State/00000/TX,1）の６つの蓄積４重対を生成する。「State」フィールドがｆ１と対応し、「Zip」フィールドがｆ２と対応する場合は、要素１７２０〜１７２２の組合せ効果は、（State/Zip/CA/90019,4），（State/Zip/CA/90212,2），（State/Zip/FL/33102,3），（State/Zip/FL/00000,1），（State/Zip/TX/77010,1），（State/Zip/TX/00000,1）の６つの蓄積４重対を生成する。
【０１５０】
一対のフィールド間の機能依存関連性についての検査を準備するために、「グローバルロールアップｆ１／ｆ２／ｖ１」要素１７２４は、ｆ１、ｆ２の両フィールド、および第１の値ｖ１を共有する蓄積した４重対を組み合わせる。出力構成要素を生成する際には、この要素１７２４は、ｖ１の値と組になるｖ２の全ての値を検査し、そのｖ１値と関係付けする最大頻度のｖ２を選択する。最大頻度のｖ２を共有する４重対の数を「良好（good）」としてカウントし、残りの４重対を「例外（exception）」としてカウントする。所与のｖ１に対して、唯一のｖ２値がある場合、その値をもつ蓄積した４重対は良好であり、例外はない。最大頻度のｖ２値が同点の場合、最初の値を選択する。テーブル１６００の実施例では、「Zip」フィールドがｆ１に対応し、「State」フィールドがｆ２に対応する場合、要素１７２４は、（Zip/State/90019/CA,4 good），（Zip/State/90212/CA,2
good），（Zip/State/33102/FL,3 good），（Zip/State/00000/FL,1 good,1 exception），（Zip/State/77010/TX,1
good）を生成する。「State」フィールドがｆ１と対応し、「Zip」フィールドがｆ２と対応する場合は、要素１７２４は、（State/Zip/CA/90019,4
good,2 exceptions），（State/Zip/FL/33102,3 good,1
exception），（State/Zip/TX/77010,1 good,1 exception）を生成する。
【０１５１】
「グローバルロールアップｆ１／ｆ２」要素１７２６は、フィールドｆ１、ｆ２の一意の各対について良好カウント、および例外を加算する。テーブル１６００の実施例では、「Zip」フィールドがｆ１に対応し、「State」フィールドがｆ２に対応する場合、要素１７２６は、（Zip/State,11 good,1 exception）を生成する。「State」フィールドがｆ１と対応し、「Zip」フィールドがｆ２と対応する場合は、要素１７２６は、（State/Zip,8
good,4 exceptions）を生成する。
【０１５２】
依存性検出要素１７２８は、「グローバルロールアップｆ１／ｆ２」要素１７２６からの蓄積した共出現統計（すなわち、良好および例外のレコード数）を用いて、一対のフィールドが、「ｆ１がｆ２を決定する」関連性を有するかどうかを判定する。例外数／（良好数＋例外数）により与えられる例外率が、例外を幾つまで許容するかを決定するために選択した閾値より低い場合、フィールド対は、「ｆ１がｆ２を決定する」関連性を有する。テーブル１６００の実施例では、１０％の閾値に対して、「Zip」フィールドがｆ１に対応し、「State」フィールドがｆ２に対応する場合、例外率は８．３％であり、「Zip」フィールドの値が「State」フィールドの値を決定する。「State」フィールドがｆ１と対応し、「Zip」フィールドがｆ２と対応する場合は、例外率は３３％であり、従って、「Zip」と「State」フィールドとの間の関連性は、一対一ではない。代替として、蓄積した値の数学的特性に基づく値（例えば、フィールドｆ１の値が与られたフィールドｆ２の値の条件付きエントロピー、または数値の標準偏差など）を用いて、フィールドｆ１がフィールドｆ２を決定するかどうかを判定できる。
【０１５３】
７．２  フィールド対選択最適化
多様な最適化を適用して、例えば、対選択要素１７０６でフィールド対にフィルタをかけることにより、またはフィルタ要素１７１２でレコードにフィルタをかけることにより、機能依存性解析を高速化できる。幾つかの最適化は、上記のグラフ１７００で発見される機能依存関連性には、ユーザーにとって、他のものより重要でないものもあるという考えに基づく。所与のフィールド対に対して、これらのケースの幾つかは、プロファイリングモジュール１００が提供する統計に基づいて対選択要素１７０６により検出し、フィルタで排除することにより、コンピューターリソースを節約できる。例えば、第１フィールドｆ１の値全てが一意の場合（各値が単一のレコードだけに出現する）、そのフィールドｆ１の値は、フィールドｆ２に出現する値にかかわらず、第２フィールドｆ２の値を決定する。
【０１５４】
グラフ１７００は、プロファイリング中に取得したセンサスデータを用いて、フィールドの値のランダムなペア化（例えば、一様な確率で分配）に基づいた場合、第１フィールドｆ１が第２フィールドｆ２を決定する確率を計算することができる。ランダムな対により機能依存性が生じる確率が高い場合（例えば、＞１０％）、そのフィールド対を対選択要素１７０６によりフィルタで排除する。テーブル１６００の実施例では、「Last Name」フィールドがｆ１に対応し、「Citizenship」フィールドがｆ２に対応する場合、「Last Name」フィールドと「Citizenship」フィールドとの全てのランダムペア化により、「name_g」値（行７、または行１２）の１つが値「Canada」とランダムにペア化される場合を除いて、全ての４重対が良好とカウントされることになる。このランダムペア化が起きる場合でも（１６．７％の確率で（１２対のうちの２））、例外率は、８．３％に過ぎず、閾値未満である。従って、本実施例では、対選択要素１７０６は、対（Last Name、Citizenship）にフィルタをかける。
【０１５５】
別の最適化は、プロファイリングモジュール１００がセンサスデータから計算した値のヒストグラムに基づく。対選択要素１７０６は、フィールドｆ１がフィールドｆ２を決定できない場合、対にフィルタをかける。テーブル１６００の実施例では、「State」の最大頻度値は６回であり、「Zip」の最大頻度値は４回にすぎない。従って、「State」の値は「Zip」の値を決定できない。なぜなら、値の少なくとも半分に対して少なくとも２／６の例外があり、少なくとも１６．７％の例外率を生じるからである。従って、本実施例では、対選択要素１７０６は、対（State、Zip）にフィルタをかける。
【０１５６】
レコード数の規模が大きい時には、グラフ１７００は、レコードの小サンプルを処理して、機能的に関連しない可能性が高いフィールド対を除去してからレコード全体を処理することにより、機能依存性の検査を高速化できる。グラフ１７００は、フィルタ要素１７１２を用いてレコードの一部を選択できる。代替として、グラフ１７００は、正規化要素１７１６を用いてフィールド／値の対の一部を選択できる。
【０１５７】
レコード、またはフィールド／値の対は、各種の基準に基づいてサンプリングできる。グラフ１７００は、プロファイリングモジュール１００が提供する統計に基づいてサンプリングできる。例えば、グラフ１７００は、第１フィールドｆ１の最大頻度値（「判定子（determiner）」）に基づいて機能依存性を検査できる。得られた例外数が閾値を超える場合、判定子の残りの値を処理する必要はない。グラフ１７００は、判定子の値のランダムサンプルに基づく機能依存性の検査もできる。サンプル値の中に良好とカウントされた４重対の数が十分ある場合、他の値の中に大量の例外数を発見する確率は無視できると仮定される。他のサンプリング基準も可能である。
【０１５８】
別の最適化オプションは、既知の機能のライブラリに基づいて、フィールド間の所定の機能依存性を検査することである。この検査は、レコード上で、または４重対の値について実行できる。
【０１５９】
７．３  多数のソースを横断する機能依存性解析
多数のソース（例えば、データベーステーブル）を横断する機能依存性を検査するための一手法では、プロファイリングモジュール１００は、多数のソースからのフィールドを含む「仮想テーブル」を生成する。仮想テーブルは、例えば、ソースに共通なキーフィールドを用いて、ソース上に結合演算を実行することにより生成できる。
【０１６０】
仮想テーブルを用いる機能依存性解析の一実施例では、第１のデータソースは、自動車登録情報のデータベース（自動車登録（ＭＶＲ）データベース）であり、第２のデータソースは、発行済み交通違反召喚状のデータベース（交通違反召喚状（ＴＣ）データベース）である。ＭＶＲデータベースには、「製造」、「モデル名」、「色」などのフィールドが含まれ、「一次キー」フィールドとして指定された「ライセンス」フィールドが含まれる。ＭＶＲデータベースの各レコードは、ライセンスフィールドの一意の値を有する。ＴＣデータベースには、名前、日付、場所、違反、車両メーカー、車両モデル、車両色などのフィールドが含まれ、「外部キー」として指定される車両ライセンスフィールドが含まれる。車両ライセンスフィールドの各値は、ライセンスフィールドにその値をもつＭＶＲデータベースに対応するレコードを有する。ＴＣデータベースには、車両ライセンスフィールドの値が同一の多数のレコードがあってもよい。
【０１６１】
プロファイリングモジュール１００は、ＭＶＲデータベース、およびＴＣデータベースからのレコードを結合して、例えば、図１１Ａに示す結合要素１１００を参照して上述したように、仮想テーブルを形成する。仮想テーブルの各レコードは、ＭＶＲライセンスフィールド、およびＴＣ車両ライセンスフィールドからの一致した値をもつ単一のライセンスフィールドを含む２つのデータベースからのフィールドそれぞれを有する。しかしながら、レコードは、ＴＣデータベースの車両色フィールドの値と異なるＭＶＲデータベースの色フィールドの値を有してもよい。例えば、ＭＶＲデータベースが「ＢＬＵ」コードを用いて青色を指示し、ＴＣデータベースが「ＢＵ」コードを用いて青色を指示してもよい。このケースでは、車両が両方のデータベースに同じ色をもつ場合、色フィールドは、車両色フィールドと「一対一」の機能関連性を有することになる。代替として、登録時と召喚状を受領した時との間に車両が異なる色で塗装されている場合、レコードは色フィールドおよび車両色フィールドで異なる値を有し得る。
【０１６２】
結合した仮想テーブルには、多数のデータセットそれぞれからのフィールドが含まれるので、プロファイリングモジュール１００は、これらのデータセットのフィールド間に存在する各種の関連性のいずれも発見できる。上記と同一、または類似の依存性解析を、結合した仮想テーブルのフィールドに実行できる。
【０１６３】
上記の手法は、コンピューター上で実行するソフトウエアを用いて実装できる。例えば、ソフトウエアは、一台以上にプログラムされるか、またはプログラム可能なコンピューターシステム（分散型、クライアント／サーバ、またはグリッドなどの、各種アーキテクチャのもの）上で動作する１つ以上のコンピュータープログラムの手順を形成し、各コンピューターシステムには、少なくとも１つのプロセッサ、少なくとも１つのデータ格納システム（例えば、揮発、または不揮発メモリ、および／または格納構成要素）、少なくとも１つの入力装置またはポート、および少なくとも１つの出力装置またはポートが含まれる。ソフトウエアは、より大きなプログラム、例えば、グラフの設計および構成と関連する他のサービスを提供するプログラムの、１つ以上のモジュールを形成してもよい。
【０１６４】
ソフトウエアは、汎用、または専用のプログラム可能コンピューターにより可読な媒体、または装置上で提供しても、またはネットワークを通じて実行されコンピューターに配送してもよい。全ての機能は、専用コンピューター上で実行してもよく、またはコプロセッサなどの専用ハードウエアを用いて実行してもよい。ソフトウエアは、ソフトウエアが規定する計算の異なる部分を異なるコンピューターで実行する分散型で実装してもよい。このようなコンピュータープログラムはそれぞれ、汎用または専用のプログラム可能コンピューターが可読な格納媒体または装置（例えば、固体メモリもしくは媒体、または磁気式もしくは光学式媒体）上に格納するか、またはダウンロードするのが好ましく、コンピューターシステムが格納媒体または装置を読み取って本明細書で説明した手順を実行する場合に、そのプログラムがコンピューターを構成し、動作させる。本発明のシステムはまた、コンピュータープログラムを伴って構成され、コンピューター可読格納媒体として実装することも考えられ、そのように構成される格納媒体により、コンピューターシステムが特定かつ所定の方法で動作して、本明細書で説明した機能を実行する。
【０１６５】
上記の記述は説明を意図したものであり、付帯の請求項の範囲により定義される本発明の範囲を限定する意図はないことはいうまでもない。他の実施の形態は、以下の請求項の範囲内にある。
【図面の簡単な説明】
【０１６６】
【図１】図１は、データプロファイリングモジュールを含むシステムのブロック図である。
【図２】図２は、データプロファイリングに用いられるメタデータ格納内のオブジェクトの編成を説明するブロック図である。
【図３】図３は、プロファイリングモジュールに対するプロファイリンググラフである。
【図４】図４は、データフォーマットを解釈するために用いる型オブジェクトについての階層ツリー図である。
【図５Ａ】図５Ａは、プロファイリンググラフのセンサス作成要素、センサス解析要素、およびサンプル作成要素を実装するサブグラフを説明する図である。
【図５Ｂ】図５Ｂは、プロファイリンググラフのセンサス作成要素、センサス解析要素、およびサンプル作成要素を実装するサブグラフを説明する図である。
【図５Ｃ】図５Ｃは、プロファイリンググラフのセンサス作成要素、センサス解析要素、およびサンプル作成要素を実装するサブグラフを説明する図である。
【図６】図６は、ロールアップ手順のフロー図である。
【図７】図７は、正規化手順のフロー図である。
【図８Ａ】図８Ａは、プロファイル結果を示す例示のユーザーインターフェース画面出力である。
【図８Ｂ】図８Ｂは、プロファイル結果を示す例示のユーザーインターフェース画面出力である。
【図８Ｃ】図８Ｃは、プロファイル結果を示す例示のユーザーインターフェース画面出力である。
【図９】図９は、例示のプロファイリング手順のフロー図である。
【図１０】図１０は、例示のプロファイリング手順のフロー図である。
【図１１Ａ】図１１Ａは、２対のフィールドからのレコードに実行する結合演算の２つの実施例である。
【図１１Ｂ】図１１Ｂは、２対のフィールドからのレコードに実行する結合演算の２つの実施例である。
【図１２Ａ】図１２Ａは、２対のフィールドからのセンサスレコードへのセンサス結合演算の２つの実施例である。
【図１２Ｂ】図１２Ｂは、２対のフィールドからのセンサスレコードへのセンサス結合演算の２つの実施例である。
【図１３】図１３は、２対のフィールドに単一のセンサス結合演算を実行するために用いる拡張レコードの実施例である。
【図１４】図１４は、拡張レコードを生成するために用いる拡張要素である。
【図１５Ａ】図１５Ａは、結合フィールド解析を実行するために用いるグラフである。
【図１５Ｂ】図１５Ｂは、結合フィールド解析を実行するために用いるグラフである。
【図１５Ｃ】図１５Ｃは、結合フィールド解析を実行するために用いるグラフである。
【図１６】図１６は、機能依存関連性を有するフィールドをもつ例示のテーブルである。
【図１７】図１７は、機能依存解析を実行するために用いるグラフである。
【図１】
2010267288.tif 000003
【図２】
2010267288.tif 000004
【図３】
2010267288.tif 000005
【図４】
2010267288.tif 000006
【図５Ａ】
2010267288.tif 000007
【図５Ｂ】
2010267288.tif 000008
【図５Ｃ】
2010267288.tif 000009
【図６】
2010267288.tif 000010
【図７】
2010267288.tif 000011
【図８Ａ】
2010267288.tif 000012
【図８Ｂ】
2010267288.tif 000013
【図８Ｃ】
2010267288.tif 000014
【図９】
2010267288.tif 000015
【図１０】
2010267288.tif 000016
【図１１Ａ】
2010267288.tif 000017
【図１１Ｂ】
2010267288.tif 000018
【図１２Ａ】
2010267288.tif 000019
【図１２Ｂ】
2010267288.tif 000020
【図１３】
2010267288.tif 000021
【図１４】
2010267288.tif 000022
【図１５Ａ】
2010267288.tif 000023
【図１５Ｂ】
2010267288.tif 000024
【図１５Ｃ】
2010267288.tif 000025
【図１６】
2010267288.tif 000026
【図１７】
2010267288.tif 000027
【手続補正書】
【提出日】平成22年7月7日(2010.7.7)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
データを処理するための方法であって、
第１データソースのレコードの第１フィールドの値を特性化する情報、および第２データソースのレコードの第２フィールドの値を特性化する情報を受け取るステップと、
前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するステップと、
前記第１フィールド、および前記第２フィールドを関連付ける情報を提示するステップと、
を含む方法。
【請求項２】
前記情報を提示するステップが、前記情報をユーザーに提示するステップを含む請求項１の方法。
【請求項３】
前記第１データソース、および前記第２データソースが同一のデータソースである請求項１の方法。
【請求項４】
前記第１データソース、および前記第２データソースのうちの少なくとも１つがデータベーステーブルを含む請求項１の方法。
【請求項５】
前記関連性を特性化する前記量が、前記第１フィールド、および前記第２フィールドの値の結合特性を特性化する量を含む請求項１の方法。
【請求項６】
前記第１フィールドの値を特性化する前記情報が、前記第１フィールドの値の分布を特性化する情報を含む請求項５の方法。
【請求項７】
前記第１フィールドの値の分布を特性化する前記情報が、複数のデータレコードを含み、前記各データレコードは、異なる値と、その値の前記第１データソースの前記第１フィールドにおける対応する出現数とを関係付ける請求項６の方法。
【請求項８】
前記第２フィールドの値を特性化する情報が、前記フィールドの値の分布を特性化する情報を含む請求項６の方法。
【請求項９】
前記結合特性を特性化する前記量を計算するステップが、前記第１フィールド、および前記第２フィールドの値の前記分布を特性化する前記情報を処理して、複数の値共出現カテゴリと関連する量を計算するステップを含む請求項８の方法。
【請求項１０】
前記第１フィールド、および前記第２フィールドの値の前記分布を特性化する前記情報が、複数のデータレコードを含み、前記各データレコードは、異なる値と、その値の対応する出現数とを関係付け、値の前記分布を特性化する前記情報を処理するステップが、それぞれ前記第１フィールド、および前記第２フィールド上の、前記第１データソース、および前記第２データソースの結合の値分布を特性化する情報を計算するステップを含む請求項９の方法。
【請求項１１】
前記複数の値共出現カテゴリと関連する前記量が、複数のデータレコードを含み、前記データレコードのそれぞれは、前記共出現カテゴリの１つと関係付けられ、前記カテゴリにある前記第１および前記第２フィールドの一意の値の数を含む請求項９の方法。
【請求項１２】
前記第１フィールド、および前記第２フィールドの前記値の前記結合特性を特性化する前記量を計算するステップが、それぞれ前記第１フィールド、および前記第２フィールドを用いて、前記第１データソース、および前記第２データソースの結合の値分布を特性化する情報を計算するステップを含む請求項５の方法。
【請求項１３】
前記第１フィールド、および前記第２フィールドの前記値の前記結合特性を特性化する前記量を計算するステップが、複数の値共出現カテゴリと関連する量を計算するステップを含む請求項５の方法。
【請求項１４】
前記値共出現カテゴリが、前記第１フィールド、および前記第２フィールドのうちの一方に少なくとも一回出現するが、前記フィールドの他方には出現しない値を含む請求項１２の方法。
【請求項１５】
前記値共出現カテゴリが、前記第１フィールド、および前記第２フィールドのそれぞれに唯一回出現する値を含む請求項１２の方法。
【請求項１６】
前記値共出現カテゴリが、前記第１フィールドおよび前記第２フィールドの一方に唯一回出現し、前記フィールドの他方に二回以上出現する値を含む請求項１２の方法。
【請求項１７】
前記値共出現カテゴリが、前記第１フィールド、および前記第２フィールドのそれぞれに二回以上出現する値を含む請求項１２の方法。
【請求項１８】
値を特性化する情報を受け取るステップ、および前記値の結合特性を特性化する量を計算するステップを更に含み、複数の第１および第２フィールド対について繰り返される請求項５の方法。
【請求項１９】
複数のフィールド対それぞれが、前記値の前記結合特性を特性化する前記量を計算するよう前記フィールド対の値とともに含まれる一意の識別子を有する請求項１８の方法。
【請求項２０】
前記複数のフィールド対のうちの１つ以上の前記フィールドに関連する情報を提示するステップを更に含む請求項１８の方法。
【請求項２１】
前記複数のフィールド対のうちの１つ以上の前記フィールドに関連する前記情報を提示するステップが、フィールドを、複数種類のフィールド関連性のうちの１つの候補フィールドと識別するステップを含む請求項２０の方法。
【請求項２２】
前記複数種類のフィールド関連性が、一次キーと外部キーとの関連性を含む請求項２１の方法。
【請求項２３】
前記複数種類のフィールド関連性が、共通領域関連性を含む請求項２１の方法。
【請求項２４】
前記量を計算するステップが、前記第１フィールド、および前記第２フィールドの文字値から変換される論理値に基づいて前記量を計算するステップを含む請求項１の方法。
【請求項２５】
前記量を計算するステップが、前記量を並列計算するステップを含み、前記並列計算ステップは、前記データレコードをパーツにパーティション化するステップ、および並列成分のセットのうちの別々のものを用いて前記パーツを処理するステップを含む請求項７の方法。
【請求項２６】
前記パーツが、前記第１フィールド、および前記第２フィールドの値に基づく請求項２５の方法。
【請求項２７】
同一の値を有するデータレコードが、同一のパーツにある請求項２６の方法。
【請求項２８】
データ処理システム上で実行されると、請求項１から２７までの何れかの方法ステップ全てを実行するように成された命令を含むソフトウエア。
【請求項２９】
コンピューター可読媒体上に実装される請求項２８のソフトウエア。
【請求項３０】
データを処理するためのシステムであって、
第１データソースのレコード内の第１フィールドの値を特性化する情報、および第２データソースのレコード内の第２フィールドの値を特性化する情報を受け取るよう構成された値処理モジュールと、
前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するよう構成される関連性処理モジュールと、
前記第１フィールドと、前記第２フィールドとに関連する情報を提示するよう構成されるインターフェースと、
を含むシステム。
【請求項３１】
データを処理するためのシステムであって、
第１データソースのレコード内の第１フィールドの値を特性化する情報、および第２データソースのレコード内の第２フィールドの値を特性化する情報を受け取るための手段と、
前記受け取った情報に基づいて、前記第１フィールドと、前記第２フィールドとの間の関連性を特性化する量を計算するための手段と、
前記第１フィールドと、前記第２フィールドとを関連付ける情報を提示するための手段と、
を含むシステム。
【外国語明細書】
2010267288000001.pdf
2010267288000002.pdf
2010267288000003.pdf
2010267288000004.pdf