(57)【要約】  データをプロファイリングすることが、各特定の集合についての定量的情報を記憶するために、レコードの複数の集合にアクセスすることを含み、定量的情報は、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリスト（３００Ａ〜３００Ｃ）を含み、値カウントエントリの各々は、選択されたフィールドに現れる値、及びその値が現れるレコードの数のカウントを含む。２又は３以上の集合の定量的情報を処理することが、値カウントエントリの組み合わせリスト（３０４）を生成するために、第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリをマージすること（３０２）と、別個のフィールド値エントリのリスト（３０８）を生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約すること（３０６）とを含み、別個のフィールド値エントリは、別個の値を識別し、且つ、２又は３以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む。
2016502166.tif 000002
【特許請求の範囲】
【請求項１】
データ記憶システムに記憶されたデータをプロファイリングするための方法であって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするステップであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするステップと、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理するステップと
を含み、
前記処理するステップが、
値カウントエントリの組み合わせリストを生成するために、前記２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリをマージするステップと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約するステップであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、前記２又は３以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約するステップと
を含む、方法。
【請求項２】
対応するリストの値カウントエントリをマージするステップが、前記値カウントエントリの値に基づいて、前記値カウントエントリをソートするステップを含む、請求項１に記載の方法。
【請求項３】
値カウントエントリをソートするステップが、前記値カウントエントリの値に基づいて、主ソート順序によりソートするステップと、２又は３以上の集合の識別子に基づいて、副ソート順序によりソートするステップとを含む、請求項２に記載の方法。
【請求項４】
集合のうちの２又は３以上の集合の定量的情報を処理するステップが、前記集合のうちの３又は４以上の集合の前記定量的情報を処理するステップを含む、請求項１に記載の方法。
【請求項５】
３又は４以上の集合のうちの少なくとも２つの集合の第１のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第１のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項４に記載の方法。
【請求項６】
３又は４以上の集合のうちの少なくとも２つの集合の、第１のサブセットとは異なる第２のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第２のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項５に記載の方法。
【請求項７】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリが、選択されたフィールドに値が現れるレコードの前記特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む、請求項１に記載の方法。
【請求項８】
処理するステップが、別個のフィールド値エントリのリストを更新するために、２又は３以上の集合のうちの第３の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、前記別個のフィールド値エントリの少なくともいくつかが、第１の集合、第２の集合、及び前記第３の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第１の集合、前記第２の集合、及び前記第３の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む、請求項１に記載の方法。
【請求項９】
データ記憶システムに記憶されたデータをプロファイリングするための、コンピュータ可読記憶媒体に記憶されたコンピュータプログラムであって、
コンピューティングシステムに、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理させるための命令と
を含み、
前記処理することが、
値カウントエントリの組み合わせリストを生成するために、前記２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリをマージすることと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約することであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、前記２又は３以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約することと
を含む、コンピュータプログラム。
【請求項１０】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするように構成された、前記データ記憶システムに接続されたインターフェースであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、インターフェースと、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理するように構成された少なくとも１つのプロセッサと
を含み、
前記処理することが、
値カウントエントリの組み合わせリストを生成するために、前記２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリをマージすることと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約することであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、前記２又は３以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約することと
を含む、コンピューティングシステム。
【請求項１１】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするための手段であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするための手段と、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理するための手段と
を含み、
前記処理することが、
値カウントエントリの組み合わせリストを生成するために、前記２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリをマージすることと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約することであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、前記２又は３以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約することと
を含む、コンピューティングシステム。
【請求項１２】
データ記憶システムに記憶されたデータをプロファイリングするための方法であって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするステップであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするステップと、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理するステップと
を含み、
前記処理するステップが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むステップと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むステップであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第１の集合及び前記第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第１の集合及び前記第２の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップと
を含む、方法。
【請求項１３】
集合のうちの２又は３以上の集合の定量的情報を処理するステップが、前記集合のうちの３又は４以上の集合の前記定量的情報を処理するステップを含む、請求項１２に記載の方法。
【請求項１４】
３又は４以上の集合のうちの少なくとも２つの集合の第１のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第１のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項１３に記載の方法。
【請求項１５】
３又は４以上の集合のうちの少なくとも２つの集合の、第１のサブセットとは異なる第２のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第２のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項１４に記載の方法。
【請求項１６】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリが、選択されたフィールドに値が現れるレコードの前記特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む、請求項１２に記載の方法。
【請求項１７】
処理するステップが、別個のフィールド値エントリのリストを更新するために、２又は３以上の集合のうちの第３の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、前記別個のフィールド値エントリの少なくともいくつかが、第１の集合、第２の集合、及び前記第３の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第１の集合、前記第２の集合、及び前記第３の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む、請求項１２に記載の方法。
【請求項１８】
データ記憶システムに記憶されたデータをプロファイリングするための、コンピュータ可読記憶媒体に記憶されたコンピュータプログラムであって、
コンピューティングシステムに、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理させるための命令と
を含み、
前記処理することが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第１の集合及び前記第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第１の集合及び前記第２の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むことと
を含む、コンピュータプログラム。
【請求項１９】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするように構成された、前記データ記憶システムに接続されたインターフェースであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、インターフェースと、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理するように構成された少なくとも１つのプロセッサと
を含み、
前記処理することが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第１の集合及び前記第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第１の集合及び前記第２の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むことと
を含む、コンピューティングシステム。
【請求項２０】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするための手段であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするための手段と、
プロファイリング要約情報を生成するために、前記集合のうちの２又は３以上の集合の前記定量的情報を処理するための手段と
を含み、
前記処理することが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第１の集合及び前記第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第１の集合及び前記第２の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むことと
を含む、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれている、２０１２年１０月２２日に出願された米国特許出願第６１／７１６，７６６号の優先権を主張するものである。
【０００２】
本明細書は、ソース追跡によりデータをプロファイリングすることに関する。
【背景技術】
【０００３】
記憶されたデータセットは、様々な特徴が知られていないデータを含むことが多い。例えば、データセットについての値の範囲若しくは標準値、そのデータセットの異なるフィールド間の関係、又は異なるフィールドにおける値間での従属性が知られていないことがある。そのような特徴を決定するために、データプロファイリングは、データセットのソースを検査することを含むことができる。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするための方法が、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスするステップであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするステップと、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理するステップとを含む。処理するステップは、値カウントエントリの組み合わせリストを生成するために、２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリをマージするステップと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約するステップであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、２又は３以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約するステップとを含む。
【０００５】
態様は、以下の特徴のうちの１又は２以上を含むことができる。
【０００６】
対応するリストの値カウントエントリをマージするステップは、値カウントエントリからの値に基づいて、値カウントエントリをソートするステップを含む。
【０００７】
値カウントエントリをソートするステップは、値カウントエントリからの値に基づいて、主ソート順序によってソートするステップと、２又は３以上の集合の識別子に基づいて、副ソート順序によってソートするステップとを含む。
【０００８】
集合のうちの２又は３以上の集合の定量的情報を処理するステップは、集合のうちの３又は４以上の集合の定量的情報を処理するステップを含む。
【０００９】
方法は、３又は４以上の集合のうちの少なくとも２つの集合の第１のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第１のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【００１０】
方法は、３又は４以上の集合のうちの少なくとも２つの集合の、第１のサブセットとは異なる第２のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第２のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【００１１】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリは、選択されたフィールドに値が現れるレコードの特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む。
【００１２】
処理するステップは、別個のフィールド値エントリのリストを更新するために、２又は３以上の集合のうちの第３の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、別個のフィールド値エントリの少なくともいくつかが、第１の集合、第２の集合、及び第３の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第１の集合、第２の集合、及び第３の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む。
【００１３】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピュータプログラムが、コンピュータ可読記憶媒体に記憶される。コンピュータプログラムは、コンピューティングシステムに、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理させるための命令とを含む。処理することは、値カウントエントリの組み合わせリストを生成するために、２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリをマージすることと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約することであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、２又は３以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約することとを含む。
【００１４】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするように構成された、データ記憶システムに接続されたインターフェースであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、インターフェースと、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理するように構成された少なくとも１つのプロセッサとを含む。処理することは、値カウントエントリの組み合わせリストを生成するために、２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリをマージすることと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約することであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、２又は３以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約することとを含む。
【００１５】
別の態様によれば、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするための手段であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするための手段と、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理するための手段とを含む。処理することは、値カウントエントリの組み合わせリストを生成するために、２又は３以上の集合のうちの少なくとも第１の集合及び第２の集合の各々からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリをマージすることと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約することであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも１つからの別個の値を識別し、且つ、２又は３以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約することとを含む。
【００１６】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするための方法が、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスするステップであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするステップと、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理するステップとを含む。処理するステップは、別個のフィールド値エントリのリストを含む出力データを記憶するために、２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むステップと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第１の集合及び第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第１の集合及び第２の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップとを含む。
【００１７】
態様は、以下の特徴のうちの１又は２以上を含むことができる。
【００１８】
集合のうちの２又は３以上の集合の定量的情報を処理するステップは、集合のうちの３又は４以上の集合の定量的情報を処理するステップを含む。
【００１９】
方法は、３又は４以上の集合のうちの少なくとも２つの集合の第１のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第１のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【００２０】
方法は、３又は４以上の集合のうちの少なくとも２つの集合の、第１のサブセットとは異なる第２のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第２のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【００２１】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリは、選択されたフィールドに値が現れるレコードの特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む。
【００２２】
処理するステップは、別個のフィールド値エントリのリストを更新するために、２又は３以上の集合のうちの第３の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、別個のフィールド値エントリの少なくともいくつかが、第１の集合、第２の集合、及び第３の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第１の集合、第２の集合、及び第３の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む。
【００２３】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピュータプログラムが、コンピュータ可読記憶媒体に記憶される。コンピュータプログラムは、コンピューティングシステムに、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理させるための命令とを含む。処理することは、別個のフィールド値エントリのリストを含む出力データを記憶するために、２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むことと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むことであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第１の集合及び第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第１の集合及び第２の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むこととを含む。
【００２４】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするように構成された、データ記憶システムに接続されたインターフェースであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、インターフェースと、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理するように構成された少なくとも１つのプロセッサとを含む。処理することは、別個のフィールド値エントリのリストを含む出力データを記憶するために、２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むことと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むことであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第１の集合及び第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第１の集合及び第２の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むこととを含む。
【００２５】
別の態様によれば、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするための手段であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも１つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするための手段と、プロファイリング要約情報を生成するために、集合のうちの２又は３以上の集合の定量的情報を処理するための手段とを含む。処理することは、別個のフィールド値エントリのリストを含む出力データを記憶するために、２又は３以上の集合のうちの第１の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むことと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、２又は３以上の集合のうちの第２の集合からの少なくとも１つのフィールドについて、対応するリストの値カウントエントリを読み込むことであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第１の集合及び第２の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第１の集合及び第２の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むこととを含む。
【００２６】
態様は、以下の利点のうちの１又は２以上を含むことができる。
【００２７】
リレーショナルデータベース管理システム及び他のリレーショナルデータ記憶システムの設計の一態様は、キーとして知られる値であり、これらの値を使用して、異なるエンティティ（例えば、異なるテーブル又はデータセットなどの、レコードの異なる集合）において、レコードを識別する、及び／又はリンクする（若しくは「結合する」）ことができる。設計において意図される、レコード間のリレーショナル演算（例えば、結合演算）を、キーが首尾よく可能にする範囲は、参照整合性として知られている。レコードが挿入される、更新される、又は削除されるときに、経時的に参照整合性を維持することは、信頼できるリレーショナルデータ記憶システムを維持する一態様である。この目的のために、いくつかのリレーショナルデータベースは、リレーショナル整合性を施行するための制約（例えば、対応するレコードの主キーを参照する外部キーであるフィールド値を有するレコードを、その対応するレコードが既に別のエンティティに存在しない限り、あるエンティティに挿入することはできない）を与える。しかし、そのような制約をチェックすることは、データをロードするときのパフォーマンスを低下させることがあり、そのため、最も大きい若しくは最もアクティブなシステムの多くが、制約を持たないことがある、又は、制約がオフにされていることがある。そのため、リレーショナルシステムの参照整合性を評価する（assessing）ことは、システムのデータ品質を評価することの一部であり得る。データが挿入される、更新される、又は削除されるときに、参照整合性制約が自動的に施行されない場合、制約の違反が発生する恐れがあり、システムの参照整合性は損なわれることになる。
【００２８】
いくつかのシステムにおいて、通常の演算は、エンティティ間の結合演算を含むことができ、そこでは、１つのエンティティのレコードのキーフィールドにおける値が、別のエンティティのレコードのキーフィールドにおける値と比較される。これらの対応するキーフィールドにおける値は、結合演算のための「キー」と呼ばれる。キーによって結合されるように構成された２つのエンティティを記憶するデータ記憶システムの参照整合性は、キー上での結合を明示的に実現することによって、直接評価され得る。結合演算から生じることになる、結合されたレコードの様々な種類の分析は、参照整合性を評価するときに実施されてよい。例えば、以下のレコードカウント、すなわち、両方のエンティティにおいて一意であるキーによって結合されるレコードの数、１つのエンティティにおいて一意であり、しかしもう一方においてそうではないキーによって結合されるレコードの数、どちらのエンティティにおいても一意でないキーによって結合されるレコードの数、１つのエンティティにおいて存在せず、しかしもう一方のエンティティにおいて一意のキーを有するレコードの数、１つのエンティティにおいて存在せず、しかしもう一方のエンティティにおいて非一意のキーを有するレコードの数が、検討されてよい。これらのカウントは、まとめて、キーの一意性、デカルト積（例えば、両方の結合されたエンティティにおいて非一意のキー）、及び孤立したレコード（例えば、結合されたエンティティに存在しないキー）についての問題に答える。これらは、参照整合性のいくつかの基本測定の例である。本明細書で説明する技法は、プロファイリングされているデータの参照整合性の、これらの測定及び他の測定のいくつかの計算を促進する。
【００２９】
本発明の他の特徴及び利点は、以下の説明から、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【００３０】
【図１】データをプロファイリングするためのシステムのブロック図である。
【図２Ａ】出現（occurrence）の統計の例についての図である。
【図２Ｂ】出現の統計の例についてのベン図である。
【図３−６】例示的なデータプロファイリング手順の概略図である。
【発明を実施するための形態】
【００３１】
図１は、データプロファイリング方法を適用することができる、例示的なデータ処理システム１００を示す。システム１００は、記憶デバイス又はオンラインデータストリームへの接続などの、データの１又は２以上のソースを含むことができるデータソース１０２を含み、その各々が様々な記憶フォーマットのうちのいずれか（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット）でデータを記憶することができる。実行環境１０４が、プロファイリングモジュール１０６と、処理モジュール１０８とを含む。実行環境１０４は、ＵＮＩＸオペレーティングシステムなどの好適なオペレーティングシステムの制御下にある、１又は２以上の汎用コンピュータ上でホストされてよい。例えば、実行環境１０４は、複数ノード並行コンピューティング環境を含むことができ、複数ノード並行コンピューティング環境は、ローカルで（例えば、ＳＭＰコンピュータなどのマルチプロセッサシステム）、若しくはローカルに分散された（例えば、クラスタ若しくはＭＰＰとして接続された複数のプロセッサ）、又は、リモートで、若しくはリモートに分散された（例えば、ローカルエリアネットワーク（ＬＡＮ）及び／若しくはワイドエリアネットワーク（ＷＡＮ）を介して接続された複数のプロセッサ）のうちのいずれかで、又はそれらの任意の組み合わせで、複数の中央処理ユニット（ＣＰＵ）を用いるコンピュータシステムの構成を含む。
【００３２】
プロファイリングモジュール１０６は、データソース１０２からデータを読み込み、プロファイリングモジュール１０６及び処理モジュール１０８へのアクセスが可能なプロファイリングデータストア１１０に、プロファイリング要約情報を記憶する。例えば、プロファイリングデータストア１１０は、データソース１０２の記憶デバイス内に保持されても、又は実行環境１０４からアクセス可能な別のデータ記憶システムに保持されてもよい。プロファイリング要約情報に基づいて、処理モジュール１０８は、データソース１０２におけるデータに対して様々な処理タスクを実行することができ、タスクは、データを一掃（cleansing）すること、データを別のシステムにロードすること、又はデータソース１０２に記憶されたオブジェクトへのアクセスを管理することを含む。データソース１０２を提供する記憶デバイスは、例えば、実行環境１０４を稼働させるコンピュータに接続された記憶媒体（例えば、ハードドライブ１１２）上に記憶されて、実行環境１０４にローカルであってもよいし、又は、例えば、リモート接続若しくは（例えば、クラウドコンピューティングインフラストラクチャによって提供される）リモートサービス上で、実行環境１０４を稼働させるコンピュータと通信しているリモートシステム（例えば、メインフレーム１１４）上でホストされて、実行環境１０４にリモートであってもよい。
【００３３】
プロファイリングモジュール１０６は、データソース１０２に記憶されたデータを読み込み、記憶されたデータの参照整合性を評価するために有用な分析を含む様々な種類の分析を、効率的な方法で実行することができる。上で説明したように、参照整合性を評価するための１つの方法は、明示的な結合演算を実行し、結果として生じる結合されたレコードを分析することによる。しかしながら、特に、プロファイリングモジュール１０６によって実行されるデータプロファイリングの一部であり得る、より広いデータ品質評価（data quality evaluation）のコンテキストにおいては、ペアのエンティティ間で明示的な結合演算を実行することは、常に参照整合性を評価するための最も効率的な方法であるわけではない。いくつかのデータプロファイリング手順は、１若しくは２以上の選択されたフィールド（又はフィールドの組み合わせ）のセットにおける別個の値の集合を調査することによって、データセットの品質を特徴付ける。データプロファイリングアクティビティを促進するために、センサス計算を実行して、選択されたフィールドの各々についての別個の値のセットを列挙し、各別個の値を有するレコードの数のカウントを含む、センサスデータを生成することができる。例えば、選択されたフィールドについての値カウントエントリのリストとして、センサスデータを配置することができ、各値カウントエントリは、選択されたフィールドに現れる別個の値、及び選択されたフィールドにその別個の値が現れるレコードの数のカウントを含む。いくつかの実施形態において、センサスデータは、単一のデータセットに記憶され、高速ランダムアクセスのためにフィールドによってインデックスされてもよく、一方他の実施形態においては、センサスデータは、例えば、フィールドごとに１つの複数のデータセットに記憶されてもよい。
【００３４】
１つの方法において、参照整合性評価は、異なるタイプの結合されたレコード及び異なるタイプの結合されないレコードに関連付けられた様々な数を特徴付ける出現統計を使用した、２つのエンティティのフィールド間の結合演算の結果を要約する結合分析によって提供される。第１のエンティティ（エンティティＡ）のキーフィールド（フィールドＡ）と、第２のエンティティ（エンティティＢ）の対応するキーフィールド（フィールドＢ）との結合演算について、異なるパターンの出現数の例が、図２Ａのチャートにおいて示されている。「出現数」は、値がフィールドに出現する回数を表す。出現数の０は、値がフィールドに現れないことを意味する。出現数の１は、フィールドのまさに１つのレコードのみに値が現れることを意味する。出現値の「Ｍ」又は「Ｎ」は、フィールドの２以上のレコードに値が現れることを意味する。この例において、チャートの各行は、対応するパターン、すなわち「フィールドＡ出現数」×「フィールドＢ出現数」に関連付けられたカウントを含む。チャートの各列は、特定のタイプである、異なるパターンに関連付けられたカウントを含む。タイプ「Ａ−ｄｉｓｔｉｎｃｔ」（「Ｂ−ｄｉｓｔｉｎｃｔ」）は、出現の特定のパターンに関連付けられた、エンティティＡ（エンティティＢ）のレコードに現れる別個の値の数を表す。タイプ「Ａ−ｃｏｕｎｔ」（「Ｂ−ｃｏｕｎｔ」）は、出現の特定のパターンに関連付けられた、エンティティＡ（エンティティＢ）のレコードの合計数を表す。タイプ「ＡＢ−ｃｏｕｎｔ」は、出現の特定のパターンに関連付けられた、結合されたレコードの合計数を表す。チャートの下半分（すなわち、出現のパターン、１×１、１×Ｎ、Ｎ×１、Ｎ×Ｍを有する行）は、結合されたレコード（ここでは、特定のキー値が、フィールドＡとＢとの両方に現れる）を表し、チャートの上半分（すなわち、出現のパターン、１×０、０×１、Ｎ×０、０×Ｎを有する）は、結合されないレコード（ここでは、特定のキー値が、１つのフィールドＡ又はＢのみに現れる）を表す。このチャートに現れる実際のカウントは、値：１つのレコードにおける「ａ」、１つのレコードにおける「ｂ」、２つのレコードにおける「ｄ」、２つのレコードにおける「ｅ」を有するＡフィールドから、及び、値：１つのレコードにおける「ａ」、２つのレコードにおける「ｃ」、１つのレコードにおける「ｄ」、３つのレコードにおける「ｅ」を有するＢフィールドから、生じることになるカウントである。そのようにして、エンティティＡにおける６つのレコード、及びエンティティＢにおける７つのレコードの合計が存在する。図２Ｂは、出現統計の別の形式を視覚的に表すベン図を示す。図は、エンティティＡ（１つの結合されないレコード）及びエンティティＢ（２つの結合されないレコード）に関連付けられた、円のオーバーラップしない部分において、（外部結合において）通過（passed through）されたか、又は結合されないレコードとして（内部結合において）拒絶されたかのいずれかの、結合演算において一致しないレコードの数を示す。図は、オーバーラップする部分において、結合演算において一致する各エンティティについての残りのレコードの数（エンティティ���における５つのレコード、エンティティＢにおける５つのレコード）を示す。これらの１０の一致するレコードは、９つの結合されたレコードの合計（これは、列「ＡＢ−ｃｏｕｎｔ」におけるカウントの和である）を生じる。円の相対的なサイジング及びオーバーラップのセンタリングを使用して、各領域におけるカウントを定性的に指し示すことができる。
【００３５】
結合分析は、エンティティの実際のレコードに対する実際の結合演算の実行に基づいて、又は、エンティティについてのセンサスデータのそれぞれのセットに対して「センサス結合」演算を実行することによって（例えば、参照により本明細書に組み込まれている米国特許第７，８４９，０７５号に説明されるように）、実行されてよい。センサス結合において、各エンティティは、センサスレコードのセットを有し、ここで、各レコードは、フィールド識別子（例えば、フィールドＡ又はフィールドＢ）と、そのフィールドに現れる別個の値と、その別個の値が現れるレコードの数のカウントとを含む。２つのエンティティのキーフィールドについて生成されたセンサスレコードを比較することによって、センサス結合演算は、潜在的に、２つのエンティティからの個々のレコードのそれらのキーフィールドを比較する結合演算よりも、より小さな数の比較を行う。センサス結合演算が２つの入力センサスレコードにおける値の間に一致を見つけた場合、一致した値、２つのカウントに基づいた対応する出現のパターン、及びペアのキーフィールドに対する結合演算において生成されることになるレコードの合計数（これは、センサスレコードにおける２つのカウントの積である）を包含する、出力レコードが生成される。値について一致が見つからない場合、値はまた、対応する出現のパターン及びレコードの合計数（これは、単一のセンサスレコードにおける単一のカウントである）と共に出力される。センサス結合演算の出力レコードのこの情報は、結合演算のために、上の出現統計のチャートにおけるカウントのすべてを集めるのに十分である。
【００３６】
いくつかのケースでは、例えば、レコードの複数の集合（例えば、１若しくは２以上のデータベースからの複数のテーブル、及び／又は、１若しくは２以上のファイルベースのデータストアからの複数のデータセット）を含むデータソースの参照整合性を分析するために、複数のペアのエンティティに対して結合分析を実行できることが有用である。ペアごとに出現統計を決定するために、特定のエンティティを、多くの他のエンティティとペアにしてもよい。しかしながら、複数回読み込まれることになる、各エンティティのキーフィールドにおけるレコード、又はエンティティごとのそれぞれのセンサスファイルにおけるセンサスレコードを要求する代わりに、プロファイリングモジュール１０６は、データソースに対するより時間消費の少ない読み込み処理を用いて、出現統計を生成することができる。例えば、３つのデータセットＡ、Ｂ、及びＣが存在し、結合分析がＡ／Ｂ、Ａ／Ｃ、及びＢ／Ｃについてのペアでの出現統計を求める場合、各ペアの別々の独立した分析は、各センサスファイルが２回読み込まれることを求めることになる。一般に、Ｎ個のエンティティがすべての考え得る組み合わせにおいて独立して分析されるためには、Ｎ（Ｎ−１）／２個の一意のペアが存在し、これは、各エンティティがＮ−１回（他のエンティティごとに１回）読み込まれることを要求することになる。分析されるエンティティの数が２よりも大きい（例えば、３若しくは４以上、又は、１０若しくは１１以上、又は１００若しくは１０１以上など、２よりも著しく大きい）ときに、本明細書で説明した方法のいくつかを用いて一緒にエンティティを処理することによって、著しい効率を達成することができる。例えば、いくつかのケースでは、データベースのエンティティ関係図に従って、多くのエンティティ（例えば、テーブル）にわたって結合分析を実行することができる。
【００３７】
プロファイリングモジュール１０６は、（エンティティレコード又はセンサスレコードのいずれかに対して）実行されることになる実際の結合演算を要求せずに、キーフィールドに対する複数のペアでの結合演算（又は多方向結合）の結果を生成する方法を適用することによって、同じセンサスファイルの反復読み込み操作を回避することができる。そのような方法の以下の２つの例は、各エンティティに出現する共通のキーフィールド（例えば、アカウント番号フィールド）について、エンティティごとにセンサスファイルを書き込む（又は、あらかじめ記憶されたセンサスファイルを読み込む）ために、複数のエンティティにアクセスすることを含む。（結合分析のためには必要とされない他のフィールドについての他のセンサスファイルがまた存在してもよい。）「集約」方法は、センサスレコードのソートされた組み合わせリスト（又は少なくとも、ソースエンティティを識別するために識別子でラベル付けされた、センサスレコードからの値及びカウント）を生成するために、キーフィールドについて対応するセンサスファイルからのセンサスレコードをマージすることもまた含む。いくつかの実施形態において、各センサスファイル内のセンサスレコードがソートされ、それにより、記憶及び読み込みアクセス時間に関して、マージ処理をより効率的にする。
【００３８】
いくつかの実施形態においては、異なるセンサスファイルからのセンサスレコードを、センサスレコードの中間組み合わせリストにマージし、ソートすることは要求されない。「更新」方法において、あらかじめ受信されたセンサスデータから生成されており、記憶システム又はデータ構造に保持されている、且つ、着信センサスレコードからのキー値によってアクセス可能な、出力データエントリのリストを更新するように、着信（潜在的にソートされていない）センサスレコードを処理することができる。新しいセンサスレコードが到着すると、出力データエントリが、着信センサスレコードからのキー値を用いて記憶装置から取り出され、更新され、再び記憶装置に書き込まれる。ディスク、インメモリデータ構造、及び一度だけ書き込み可能な記憶装置（この場合、前の結果は、所定の位置で更新され得ず、記憶域の最後に追加されなければならない）を含む、様々な記憶システムがサポートされる。
【００３９】
「更新」方法において、センサスファイルは同時に処理される必要はないが、センサスファイルは経時的に利用可能になるので、更新として組み込むことができる。とりわけ、あらかじめ処理されたセンサスファイルの後のバージョンを、前の結果を更新するように再処理することができる。別々に計算された結果の２又は３以上のセットを組み合わせることもまた可能である。
【００４０】
いくつかの実施形態において、更新方法及び集約方法の両方の混合を使用することができる。同時に利用可能なセンサスファイルの場合、メモリフットプリントを削減するために、又はパフォーマンスを向上させるために、集約を使用することができる。別々の時間に到着するセンサスファイルの場合、前の結果を更新するために、更新を使用することができる。集約方法を、センサスファイルのセットに独立して適用することができ、一方その結果が、更新方法を使用して後で組み合わせられる。
【００４１】
集約方法の例が、図３に示されている。この例において、それぞれのソースエンティティであるエンティティＡ、エンティティＢ、及びエンティティＣについての３つのセンサスファイル、３００Ａ、３００Ｂ、及び３００Ｃが（本方法は任意の数のセンサスファイルのために機能するものの）、プロファイリングモジュール１０６への入力として用いられる。各センサスファイルは、センサスファイルが属するソースエンティティ（「Ａ」、「Ｂ」、又は「Ｃ」）を指し示すソース識別子で始まるセンサスレコードを含む。ソース識別子の後に、センサスレコードは、センサスファイルに関連付けられたキーフィールドに現れる別個のキーフィールド値を含み、そのキーフィールド値を含むレコードの数のカウントがそれに続く。この例において、センサスファイルにおけるセンサスレコードのすべてが、エンティティ内の所望の固有のキーフィールドについてである。別の例においては、センサスレコードに、各値に関連付けられたフィールドを識別する追加的な識別子が含まれる。結合分析に対する所望のセンサスレコードにのみアクセスすることは、エンティティのすべてのフィールドについてのすべてのセンサスレコードを読み込み、関係のないものを破棄することよりも効率的なので、いくつかの実施形態は、この例でのように、異なる、独立してアクセス可能なセンサスファイル内に、異なるフィールドについてのセンサスレコードを記憶する。代替として、異なるフィールドについてのセンサスレコードを、異なるセクションへのランダムアクセスのために構成された共通のファイル又はデータストアの、異なるセクションに記憶することができる。一緒に分析されることになるセンサスファイルのグループを指定する別の識別子を追加することによって、異なるキーフィールドについての複数の結合分析を、同じ実行内で実施することができる。
【００４２】
プロファイリングモジュール１０６のマージサブモジュール３０２が、センサスレコードのすべてから、センサスエントリをソートした組み合わせリスト３０４を生成するために、入力センサスファイルからセンサスレコードを読み込む。いくつかの実施形態において、入力センサスファイルは、順次的に読み込まれる（及び、例えば、入力センサスファイルが記憶媒体の分割されたデータセグメントに記憶されている場合は、並行して読み込んでもよい）。並行実施形態の場合、センサスレコードは、各センサスファイルにおいてキーフィールド値によって分割されてよく、その結果、共通のキーフィールド値を共有するすべてのレコードが、同じデータセグメントに配置される。入力センサスファイルからのセンサスレコードは、センサスレコードからのキーフィールド値に基づいて、主ソート順序によってソートされ、次いで、ソース識別子に基づいて、副ソート順序によってソートされる。図３に示すリスト３０４において、センサスエントリは、最初に主ソートされたキーフィールド値を、それに続いて副ソートされたソース識別子を、それに続いてレコードカウントを示すように書き直されているが、これらの項目は、各センサスエントリ内で任意の順序に記憶されてよい。センサスファイルの異なるそれぞれのグループに対して複数の結合分析が同時に行われることになる場合は、一緒に分析されることになるセンサスファイルのグループを指定するラベルが、主ソートキーとして（キーフィールド値に基づいた副ソート、及びソース識別子に基づいた三次ソートと共に）追加されて、一緒に分析されることが意図されるレコードが隣接するように保証することができる。
【００４３】
プロファイリングモジュール１０６の集約サブモジュール３０６が、別個のキーフィールド値エントリのリスト３０８を生成するために、リスト３０４からのエントリを集約し、各別個のキーフィールド値エントリは、別個のキーフィールド値を識別し、入力センサスファイル（この例では、ソースエンティティＡ、Ｂ、及びＣ）によって表されるソースエンティティの各々について、別個のキーフィールド値が現れるレコードの数を定量化する情報を識別する。同じキーフィールド値を共有する、リスト３０４におけるソートされたセンサスエントリは、ソース識別子を介して（例えば、ロールアップ処理を用いて）集約される。いくつかの実施形態において、集約サブモジュール３０６は、各別個のキーフィールド値に関連付けられた２つのベクトルを包含するデータ構造に、エントリを集約した結果を記憶する。１つのベクトルは、ソースエンティティごとに個々のエンティティレコードカウントを記憶し、もう一方のベクトルは、ソースエンティティのペアごとにペアでの結合レコードカウントを記憶する。そのため、第１のベクトルの長さは、ソースエンティティの数によって決定され、第２のベクトルの長さは、ソースエンティティの一意のペアの数によって決定される。第１のベクトルの各要素は、特定のソースエンティティに対応し、関連付けられたキーフィールド値を包含するレコードのカウントを保持し、このカウントは、カウントがゼロでない場合にはセンサスファイルからのカウント、又は、そのキーフィールド値がセンサスファイルに現れなかった場合にはゼロのカウントである。このデータ構造はまた、複数の分析において、センサスファイルの別々のグループの中で変化するファイルの数に適応することができる。例えば、集約サブモジュール３０６は、記憶された変数又はルックアップ操作などのメカニズムを使用して、ベクトルにおけるインデックスを、グループごとに特定のセンサスファイルに関連付けることができる。第２のベクトルの各エントリは、ソースエンティティの特定のペアの間の結合演算から生じることになる結合レコードの数のカウントを保持し、これは、（第１のベクトルにある）ペアごとにカウントの積として計算される。第１のベクトルにおけるエンティティの順序に基づいて（例えば、第１のインデックスが第２のインデックス未満のインデックスのすべてのペアからなるマルチインデックスを形成することによって）、第２のベクトルのインデックス構造を決定することができる。
【００４４】
図３の例において、キーフィールド値「ｃ」を有する２つのセンサスレコードが、センサスファイル３００Ｂ及び３００ＣのエンティティＢ及びエンティティＣに、１つずつ存在する。エンティティＢセンサスレコードにおけるエンティティレコードのカウントは２であり、エンティティＣセンサスレコードにおけるエンティティレコードのカウントは１である。リスト３０８における対応する集約された出力データ構造は、「ｃ［０  ２  １］［０  ０  ２］」であり、ここで、データ構造における第１の項目は、キーフィールド値「ｃ」であり、次の項目は、エンティティＡ、Ｂ、及びＣそれぞれにおけるレコードカウントの第１のベクトルであり、最後の項目は、エンティティペアＡ／Ｂ、Ａ／Ｃ、及びＢ／Ｃそれぞれについてのカウントの積の第２のベクトルである。この第２のベクトルは、いくつかの実施形態において省略されてもよく、代わりに、その値が第１のベクトルにおける値によって完全に決定された以後で生成されてもよい。
【００４５】
リスト３０８における情報から、提供されるべき出現統計のために、図２Ａのチャート及び図２Ｂのベン図などの要約情報が、リスト３０８におけるデータ構造からの適切な値にアクセスすることによって、ソースエンティティのペアごとに計算されてよい（３方向及びより高次の結合についての同様の要約情報もまた可能である）。非一意性は、しばしば特定の関心であるため、一意及び非一意のレコードのペアリングのためのカウントは、別々に報告されてもよい。上で説明したように、結合分析の結果を視覚的に表すために、ペアごとにベン図を生成することができる。例えば、ペアＡ／Ｂについて、円の相対的なサイズ及び円３１２のセンタリング、並びに結果として生じるオーバーラップを配置して、対応する出現チャート３１０の情報に基づいて決定された各領域におけるカウントの近似値を、定量的に指し示すことができる。
【００４６】
いくつかの実施形態において、センサスファイル３００Ａ、３００Ｂ、３００Ｃにおけるセンサスレコードについてのデータ構造はまた、キーフィールド値が現れる特定のエンティティ内での、レコードのそれぞれの位置を識別する位置情報を含むことができる。一実施形態において、センサスレコードの生成中に、ベクトルが、関連付けられたキーフィールド値を有するあらゆるレコードの一意のレコード識別子として入力される。エンティティの元のデータにおけるレコードが、一意のレコード識別子を有さない場合、例えば、一続きの連続した番号を各レコードに割り当てることによって、プロファイリング手順の一部として、そのようなレコード識別子を生成し、レコードに追加することができる。以下でより詳細に説明するように、この位置情報は次いで、マージ段階においてセンサスレコードから収集されたセンサスエントリ内に含まれてよく、集約段階において組み合わされてよい。
【００４７】
位置情報を記憶するための他の実施形態が可能であり、そのうちのいくつかは、パフォーマンス及び／又は削減された記憶域空間において、利点を与えることができる。例えば、レコード識別子のベクトルに代わって、ビットベクトルを使用することができる。ビットベクトルの各ビットは、特定のレコード識別子に対応し、対応するレコード識別子を有する関連付けられたレコードが、関連付けられたキーフィールド値を有する場合に、ビットが設定される。ビットベクトルのビットとレコード識別子との対応関係は、明示的であっても、又は暗黙的であってもよい。例えば、必ずしも１対１ではなく、ビットを対応するレコード識別子に関連付ける、明示的なマッピングが存在してもよいし、又は、各ビットの位置がレコードの位置の順次的な順序に対応する、暗黙的なマッピングが存在してもよい。いくつかの実施形態において、結果として生じるビットベクトルは、記憶装置におけるさらなる節約のために圧縮される。
【００４８】
位置データ構造を各センサスエントリに関連付けることによって、この位置情報を、それが集約された出力データ構造ごとに位置データ構造のベクトルとして現れる、リスト３０８へと伝播することができる。位置データ構造のベクトルは、ソースエンティティごとに１つの位置データ構造（例えば、ビットベクトル）を含む。リスト３０８の各集約された出力データ構造における位置データ構造のベクトルの存在は、結果から、元のソースエンティティにおける対応するレコードへの「ドリルダウン」を促進する。いくつかのケースにおいて、ソースエンティティがキーフィールド値によってインデックスされている場合、キーフィールド値それ自体を使用して、元のソースエンティティにおけるレコードをルックアップすることができるが、これは、いくつかのソースエンティティには当てはまらないことがある。位置データ構造は、元のソースエンティティの汎用インデックスとして働くことができ、そのソースエンティティに関連付けられたセンサスファイルは、（キー値を位置データ構造内のインデックスにリンクする）副インデックスとして働くことができる。
【００４９】
ペアでの出現チャート３１０及び関連付けられたベン図３１２の生成は、リスト３０８における出力データ構造を介した集約を含む。例えば、各出現カテゴリ（例えば、１×０、１×１など）に対応する出力データ構造におけるカウントを総計して、結果として得られる合計カウントを生み出す。位置データ構造もまた、組み合わせることができる。レコード識別子のベクトルである位置データ構造のケースでは、特定の出現カテゴリについての特定のソースエンティティにおける異なるキーフィールド値に対応するベクトルは、つなぎ合わされる。ビットベクトルである位置データ構造のケースでは、特定の出現カテゴリについての特定のソースエンティティにおける異なるキーフィールド値に対応するビットベクトルは、一緒に論理和が取られる。結果は、出現チャートの各エントリ、又はベン図のエントリに対応する、組み合わされた位置データ構造である。ユーザは、この出現カテゴリについての、サンプルレコード又はレコードの包括的なセットのいずれかを取り出すために、この位置データ構造を使用して、このエントリからドリルダウンすることができる。参照整合性評価のコンテキストでは、例えば、複製であるレコード又は孤立したレコードにアクセスできることは極めて貴重であり、これは、そうするための能力を提供する。
【００５０】
出現チャート及びベン図への集約が位置データ構造それ自体を組み合わせず、代わりに、リスト３０８におけるキーフィールド値に対応するビットベクトルを構築する、異なる実施形態が可能である。この実施形態では、ビットインデックスを、リスト３０８における各別個のキーフィールド値とペアにする、ビット対キー値のマッピングが構築される。集約の間、どのキーフィールド値が所与の出現チャートエントリに寄与するかを指し示すビットベクトルが、入力される。次に、２つのステップでのドリルダウンに進行することができる。出現チャートエントリについてのビットベクトルは、（ビット対キー値のマッピングから）関連付けられたキーフィールド値のセットを見つけるために使用される。これらのキーフィールド値は、元のレコードを取り出すために元のソースエンティティにおいて直接ルックアップされるか、又は、例えば、リスト３０８若しくはセンサスファイル３００Ａ〜３００Ｃ（これらは次いで元のレコードを取り出すために使用される）における位置データ構造を取り出すためにルックアップされるかのいずれかである。この実施形態は、とりわけ、元のソースエンティティが既にキーフィールド値によってインデックスされている場合に、記憶要件及び効率に関して利点を与えることができる。
【００５１】
図４は、（エンティティＣについての）センサスファイル４００Ｃがプロファイリングモジュール１０６の更新サブモジュール４０６に到着する、更新方法を示しており、更新サブモジュール４０６は、更新されたリスト４０８ＡＢＣを生成するために、（エンティティＡ及びＢのセンサスファイルからあらかじめ生成された）あらかじめ生成された出力リスト４０８ＡＢを更新する。センサスファイル４００Ｃにおけるセンサスエントリ「Ｃ  ｃ  １」は、別個のキーフィールド値「ｃ」、及びその値が現れるエンティティＣの１つのレコードのカウントを表す。キーフィールド値「ｃ」を有する４０８ＡＢにおける対応する出力データ構造が取り出される。キーフィールド値「ｃ」を有するレコードのエンティティＡ及びエンティティＢにおけるカウントを示す第１のベクトル「［０  ２］」が、キーフィールド値「ｃ」を有するエンティティＣにおけるレコードのカウントを示す要素を追加するように、「［０  ２  １］」に更新される。同様に、カウントのペアでの積を示す第２のベクトルが、「［０］」から「［０  ０  ２］」に更新され、ここで、第２の要素は、エンティティＡについてのカウントとエンティティＣについてのカウントとの積（０×２＝０）であり、一方で第３の要素は、エンティティＢについてのカウントとエンティティＣについてのカウントとの積（１×２＝２）である。結果は、更新された出力データ構造のリスト４０８ＡＢＣに書き込まれる。
【００５２】
図５は、（エンティティＢについての）センサスファイル５００Ｂが更新サブモジュール４０６に到着する、更新方法を示しており、更新サブモジュール４０６は、（エンティティＡのセンサスファイル及びエンティティＢの前のバージョンのセンサスファイルからあらかじめ生成された）あらかじめ生成された出力リスト５０８ＡＢを更新する。センサスファイル５００Ｂにおけるセンサスエントリ「Ｂ  ｃ  ４」は、別個のキーフィールド値「ｃ」、及びその値が現れるエンティティＢの４つのレコードのカウントを表す。リスト５０８ＡＢの対応する出力データ構造から、エンティティＢにおける「ｃ」についての前のカウントは、（第１のベクトル「［０  ２］」における第２の要素に従って）２であった。このカウントが、「［０  ４］」を取得するために、新しいカウントで第１のベクトルにおいて更新される。第２のベクトルが次いで、エンティティＡ及びエンティティＢからのカウントの積で更新され、この例では、「［０］」のままで変わらない。結果は、更新された出力リスト５１０ＡＢに書き込まれる。
【００５３】
図６は、２つの別々に生成された出力リストが組み合わされた、更新方法の別の例を示している。出力リスト６０８ＡＢは、エンティティＡ及びエンティティＢからのセンサスレコードの組み合わせに基づいて生成され、出力リスト６０８ＢＣは、エンティティＢ及びエンティティＣについてのセンサスレコードの組み合わせに基づいて生成された。この例では、両方の出力リストの生成において、エンティティＢについての同じセンサスレコードが使用された。（センサスファイルの異なるバージョンがエンティティＢについての異なるセンサスレコードを提供する他の例では、図５に示す手順が、出力データ構造においてエンティティＢ値を更新するために最初に適用されて、最新のセンサス値に対応することができる。）プロファイリングモジュール１０６の組み合わせサブモジュール６０６が、出力データ構造からの情報を一致するキーフィールド値により組み合わせ、例えば、リスト６０８ＡＢからの出力データ構造「ｃ［０  ２］［０］」と、リスト６０８ＢＣからの出力データ構造「ｃ［２  １］［２］」とを組み合わせる。第１のベクトルの各々における要素は、各出力データ構造において表されるそれぞれのエンティティのセンサスカウントに対応する。２つの第１のベクトルは、それらの要素の共用体を取り、両方の出力データ構造において表される任意のエンティティについての（最新の）１つの要素のみを保つことによって、組み合わされる。この例では、組み合わせの結果は、更新された第１のベクトル「［０  ２  １］」である。更新された第２のベクトルから、更新された第１のベクトルに従ってカウントのペアでの積が計算され、更新された第２のベクトル「［０  ０  ２］」をもたらす。更新された出力データ構造は、出力リスト６０８ＡＢＣに記憶される。
【００５４】
上で説明したデータプロファイリング方法は、好適なソフトウェアを実行するコンピューティングシステムを用いることにより実装することができる。例えば、ソフトウェアは、１又は２以上のプログラムされた、又はプログラム可能な（分散型、クライアント／サーバ型、又はグリッドなどの様々なアーキテクチャであってよい）コンピューティングシステム上で実行される、１又は２以上のコンピュータプログラムにおける手順を含むことができ、コンピューティングシステムの各々は、少なくとも１つのプロセッサと、少なくとも１つのデータ記憶システム（揮発性及び／又は不揮発性のメモリ及び／又は記憶要素を含む）と、（少なくとも１つの入力デバイス又はポートを使用して入力を受信し、少なくとも１つの出力デバイス又はポートを使用して出力を提供するための）少なくとも１つのユーザインターフェースとを含む。ソフトウェアは、例えば、設計、構成、及びデータフローグラフの実行に関するサービスを提供する、より大きなプログラムの１又は２以上のモジュールを含むことができる。プログラムのモジュール（例えば、データフローグラフの要素）は、データ構造、又はデータリポジトリに記憶されたデータモデルに準拠する他の組織化されたデータとして実装されてよい。
【００５５】
ソフトウェアは、（例えば、汎用若しくは特殊目的コンピューティングシステム、又はデバイスによって可読な）ＣＤ−ＲＯＭ若しくは他のコンピュータ可読媒体などの有形の、非一時的な媒体上で提供されてもよいし、又は、（例えば、伝播シグナルで符号化されて）ネットワークの通信媒体上で、ソフトウェアが実行されるコンピューティングシステムの有形の、非一時的な媒体に配信されてもよい。処理のうちのいくつか又は全部は、特殊目的コンピュータ上で、或いは、コプロセッサ若しくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ）、又は専用の特定用途向け集積回路（ＡＳＩＣ）などの特殊目的ハードウェアを使用して実行されてもよい。処理は、分散されたやり方で実装されてもよく、そこでは、ソフトウェアによって規定された異なる部分の計算が、異なるコンピューティング要素によって実行される。そのような各コンピュータプログラムは、本明細書で説明した処理を実行するために記憶デバイス媒体がコンピュータによって読み込まれるとき、コンピュータを構成し、動作させるために、好ましくは、汎用又は特殊目的プログラム可能なコンピュータによってアクセス可能な記憶デバイスのコンピュータ可読記憶媒体上（例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光学媒体）に記憶される、又はそこにダウンロードされる。本発明のシステムはまた、コンピュータプログラムで構成された、有形の、非一時的な媒体として実装されるものとみなされてもよく、そこでは、そのように構成された媒体が、固有のあらかじめ定義されたやり方で、本明細書で説明した処理ステップのうちの１又は２以上を実行するように、コンピュータを動作させる。
【００５６】
本発明のいくつかの実施形態が説明されてきた。それにも関わらず、上述した説明は、例証することを意図しており、以下の特許請求の範囲によって定義される本発明の範囲を限定することを意図しないことが理解されるべきである。それに応じて、他の実施形態もまた、以下の特許請求の範囲内である。例えば、様々な改良形態が、本発明の範囲から逸脱することなく行われてよい。加えて、上で説明したステップのうちのいくつかは、順序非依存であってよく、したがって、説明されたものとは異なる順序で実行することができる。
【図１】
2016502166.tif 000003
【図２】
2016502166.tif 000004
【図３】
2016502166.tif 000005
【図４】
2016502166.tif 000006
【図５】
2016502166.tif 000007
【図６】
2016502166.tif 000008
【国際調査報告】
2016502166.tif 000009
2016502166.tif 000010
2016502166.tif 000011