(57)【特許請求の範囲】
【請求項１】
少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするための方法であって、
前記データストレージシステムに接続されたインターフェースを介して前記データストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするステップと、
１又は２以上の値に関するプロファイル情報に基づいてレコードの前記集合の１又は２以上のフィールドの第１のセットに現れる値を特徴付ける結果情報を生成するためにレコードの前記集合を処理するステップであって、プロファイリングされているフィールドに現れる値に関するプロファイル情報が、前記値がプロファイリングされている前記フィールドに現れるレコードの前記集合を要約する、ステップとを含み、前記処理するステップが、
レコードの前記集合の２又は３以上のフィールドの第２のセットに関して、それぞれのエントリが（１）２又は３以上のフィールドの前記第２のセットに現れる異なる値の組合せ、及び（２）前記異なる値の組合せに関するプロファイル情報を特定するエントリの対応するリストを受け取るステップと、
第１の異なる値の組合せを有する前記リストの第１のエントリの第１のプロファイル情報と、前記第１の異なる値の組合せと異なる少なくとも１つの値を有する少なくとも１つのフィールドに関する第２のプロファイル情報とを組み合わせること、及び前記組み合わせたプロファイル情報に基づいて１又は２以上のフィールドの前記第１のセットの少なくとも１つのフィールドに現れる少なくとも１つの値に関するプロファイル情報を判定することに少なくとも部分的に基づいて、レコードの前記集合の１又は２以上のフィールドの前記第１のセットに現れる値を特徴付ける前記結果情報を生成するステップとを含み、
前記異なる値の組合せに関するプロファイル情報が、それぞれの異なる値の組合せに関して、前記異なる値の組合せが現れる集合のすべてのレコードを特定する位置情報を含む、前記方法。
【請求項２】
リストが、２又は３以上のフィールドの第２のセットに現れる値のすべての異なる組合せに関するエントリを含む、請求項１に記載の方法。
【請求項３】
１又は２以上のフィールドの第１のセットが、２又は３以上のフィールドの第２のセットのいかなるフィールドも含まない、請求項２に記載の方法。
【請求項４】
第１の異なる値の組合せを有するリストの第１のエントリの第１のプロファイル情報と、前記第１の異なる値の組合せと異なる少なくとも１つの値を有する少なくとも１つのフィールドに関する第２のプロファイル情報とを組み合わせることが、第１の異なる値の組合せを有する前記リストの第１のエントリの第１のプロファイル情報と、１又は２以上のフィールドの第１のセットの少なくとも１つのフィールドに関する第２のプロファイル情報とを組み合わせることを含む、請求項３に記載の方法。
【請求項５】
リストの第１のエントリのプロファイル情報が、第１の異なる値の組合せが２又は３以上のフィールドの第２のセットに現れる集合のすべてのレコードを特定する位置情報を含む、請求項４に記載の方法。
【請求項６】
第１の異なる値の組合せと異なる少なくとも１つの値を有する少なくとも１つのフィールドに関するプロファイル情報が、前記少なくとも１つの値が１又は２以上のフィールドの第１のセットに現れる集合のすべてのレコードを特定する位置情報を含む、請求項５に記載の方法。
【請求項７】
第１のプロファイル情報と第２のプロファイル情報とを組み合わせることが、前記第１のプロファイル情報と第２のプロファイル情報との共通部分の演算を実行することを含む、請求項４に記載の方法。
【請求項８】
リストの各エントリが、前記リストのエントリに関連するインデックス値のすべての中で一意である、前記エントリに関するインデックス値に関連付けられる、請求項２に記載の方法。
【請求項９】
１又は２以上のフィールドの第１のセットが、２又は３以上のフィールドの第２のセットのすべてのフィールドよりも少ないフィールドのサブセットである、請求項８に記載の方法。
【請求項１０】
第１の異なる値の組合せを有するリストの第１のエントリの第１のプロファイル情報と、前記第１の異なる値の組合せと異なる少なくとも１つの値を有する少なくとも１つのフィールドに関する第２のプロファイル情報とを組み合わせることが、第１の異なる値の組合せを有する前記リストの第１のエントリの第１のプロファイル情報と、第２の異なる値の組合せを有する前記リストの第２のエントリの第２のプロファイル情報とを組み合わせることを含む、請求項９に記載の方法。
【請求項１１】
第１の異なる値の組合せ及び第２の異なる値の組合せが、第１のフィールドに関して同一の値を有し、第２のフィールドに関して異なる値を有し、前記第１のフィールドが、第１のセットと第２のセットとの両方にあり、前記第２のフィールドが、前記第２のセットにはあるが、前記第１のセットにはない、請求項１０に記載の方法。
【請求項１２】
第１のプロファイル情報が、第１のエントリに関連する第１のインデックス値を含み、第２のプロファイル情報が、第２のエントリに関連する第２のインデックス値を含む、請求項１０に記載の方法。
【請求項１３】
各エントリが、異なる値の組合せが２又は３以上のフィールドの第２のセットに現れるレコードの数のカウントをさらに特定する、請求項１に記載の方法。
【請求項１４】
処理するステップが、特定されたカウントによって各リストのエントリをソートするステップをさらに含む、請求項１３に記載の方法。
【請求項１５】
異なる値の組合せに関する位置情報を生成するステップが、前記異なる値の組合せの第１の異なる値に関する位置情報と、前記異なる値の組合せの第２の異なる値に関する位置情報との共通部分を判定するステップを含む、請求項１に記載の方法。
【請求項１６】
位置情報が、異なる値が現れるすべてのレコードに関する一意のインデックス値を特定する、請求項１に記載の方法。
【請求項１７】
位置情報が、特定の一意のインデックス値を記憶することによって前記特定の一意のインデックス値を特定する、請求項１６に記載の方法。
【請求項１８】
位置情報が、前記位置情報に一意のインデックス値を符号化することによって前記一意のインデックス値を特定する、請求項１６に記載の方法。
【請求項１９】
一意のインデックス値を符号化することが、前記一意のインデックス値に対応するベクトル内の位置にビットを記憶することを含む、請求項１８に記載の方法。
【請求項２０】
少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするための、コンピュータ可読ストレージ媒体に記憶されるコンピュータプログラムであって、コンピューティングシステムに請求項１〜１９のいずれかに記載された方法を実行させるための命令を含む、前記コンピュータプログラム。
【請求項２１】
少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
前記データストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするように構成された、前記データストレージシステムに接続されたインターフェースと、
請求項１〜１９のいずれかに記載された方法を実行するように構成された少なくとも１つのプロセッサを含む、前記コンピューティングシステム。
【請求項２２】
少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
前記データストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするための手段と、
１又は２以上の値に関するプロファイル情報に基づいてレコードの前記集合の１又は２以上のフィールドの第１のセットに現れる値を特徴付ける結果情報を生成するためにレコードの前記集合を処理するための手段であって、プロファイリングされているフィールドに現れる値に関するプロファイル情報が、前記値がプロファイリングされている前記フィールドに現れるレコードの前記集合を要約する、手段とを含み、前記処理することが、
レコードの前記集合の２又は３以上のフィールドの第２のセットに関して、それぞれのエントリが（１）２又は３以上のフィールドの前記第２のセットに現れる異なる値の組合せ、及び（２）前記異なる値の組合せに関するプロファイル情報を特定するエントリの対応するリストを受け取ることと、
第１の異なる値の組合せを有する前記リストの第１のエントリの第１のプロファイル情報と、前記第１の異なる値の組合せと異なる少なくとも１つの値を有する少なくとも１つのフィールドに関する第２のプロファイル情報とを組み合わせること、及び前記組み合わせたプロファイル情報に基づいて１又は２以上のフィールドの前記第１のセットの少なくとも１つのフィールドに現れる少なくとも１つの値に関するプロファイル情報を判定することに少なくとも部分的に基づいて、レコードの前記集合の１又は２以上のフィールドの前記第１のセットに現れる値を特徴付ける前記結果情報を生成することとを含み、
前記異なる値の組合せに関するプロファイル情報が、それぞれの異なる値の組合せに関して、前記異なる値の組合せが現れる集合のすべてのレコードを特定する位置情報を含む、前記コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願の相互参照
本出願は、２０１２年１０月２２日に出願した米国特許出願第６１／７１６，７６６号の優先権を主張する２０１３年８月２日に出願した米国特許出願第１３／９５８，０５７号の優先権を主張するものである。
【０００２】
本明細書は、位置情報を用いてデータをプロファイリングすることに関する。
【背景技術】
【０００３】
記憶されるデータセットは、さまざまな特徴が知られていないデータを含むことが多い。データセットのデータは、（「属性」又は「列」とも呼ばれる）それぞれのフィールドに関する値を有するレコードとして編成される可能性がある。フィールドの値は、文字列、数、又はフィールドに関する関連するデータ形式情報にしたがって符号化され、形式を整えられたおそらくはヌル値を含む任意のデータを含み得る。場合によっては、フィールドに関するデータ形式情報は知られているが、フィールドに現れる実際の値は知られていない可能性がある。例えば、データセット内のレコードのフィールドに関する値の範囲若しくは典型的な値、データセット内のレコードの異なるフィールドの間の関係、又は異なるフィールドの値の間の従属性が、未知である可能性がある。データプロファイリングは、そのような特徴を判定するためにデータセットのソースを検査することをともなう可能性がある。
【発明の概要】
【課題を解決するための手段】
【０００４】
一態様においては、概して、少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするための方法が、データストレージシステムに接続されたインターフェースを介してデータストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするステップと、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するステップとを含む。処理するステップは、異なる値から構成される第１のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する、対応する位置情報を、集合のレコードの１又は２以上のフィールドの第１のセットに現れる異なる値の第１のセットに関して生成するステップと、１又は２以上のフィールドの第１のセットに関して、各エントリが異なる値から構成される第１のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成するステップと、１又は２以上のフィールドの第１のセットと異なる集合のレコードの１又は２以上のフィールドの第２のセットに関して、各エントリが１又は２以上のフィールドの第２のセットに現れる異なる値から構成される第２のセットからの異なる値を特定するエントリの対応するリストを生成するステップと、１又は２以上のフィールドの第１のセットに現れる少なくとも１つの値に関する位置情報を用いてレコードの集合の少なくとも１つのレコードの位置を特定すること、及び位置を特定されたレコードの１又は２以上のフィールドの第２のセットに現れる少なくとも１つの値を特定することに少なくとも部分的に基づいて、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するステップとを含む。
【０００５】
態様は、以下の特徴のうちの１又は２以上を含み得る。
【０００６】
各エントリが、異なる値が１又は２以上のフィールドに現れるレコードの数のカウントをさらに特定する。
【０００７】
処理するステップは、特定されたカウントによって各リストのエントリをソートするステップをさらに含む。
【０００８】
処理するステップは、第２の異なる値のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する、対応する位置情報を、第２の異なる値のセットに関して生成するステップであって、１又は２以上のフィールドの第２のセットに対応するリストに関して、第２の異なる値のセットの異なる値を特定する各エントリが異なる値に関する位置情報を含む、ステップをさらに含む。
【０００９】
処理するステップは、異なる値のペアのそれぞれに関して、異なる値のペアが現れるすべてのレコードを特定する、対応する位置情報を、各ペアの第１の値がレコードの１又は２以上のフィールドの第１のセットに現れ、各ペアの第２の値がレコードの１又は２以上のフィールドの第２のセットに現れる、異なる値のペアのセットに関して生成するステップをさらに含む。
【００１０】
異なる値のペアのセットの異なる値のペアに関する位置情報を生成するステップは、第１の異なる値のセットの第１の異なる値に関する位置情報と、第２の異なる値のセットの第２の異なる値に関する位置情報との共通部分（intersection）を判定するステップを含む。
【００１１】
共通部分を判定するステップは、第１の異なる値に関する位置情報を用いて集合内のレコードの位置を特定するステップと、位置を特定されたレコードを用いて第２の異なる値を特定するステップとを含む。
【００１２】
方法は、各リストのエントリで特定された異なる値の数によって、１又は２以上のフィールドの第１のセットに対応するリスト及び１又は２以上のフィールドの第２のセットに対応するリストを含む複数のリストのグループをソートするステップをさらに含む。
【００１３】
処理するステップは、異なる値のペアのそれぞれに関して、異なる値のペアが現れるすべてのレコードを特定する、対応する位置情報を、各ペアの第１の値がレコードの１又は２以上のフィールドの第１のセットに現れ、各ペアの第２の値が１又は２以上のフィールドの第１のセットと異なるレコードの１又は２以上のフィールドの第２のセットに現れる、異なる値のペアのセットに関して生成するステップと、異なる値のペアのセットに関して、各エントリが異なる値のペアのセットの異なる値のペア及び異なる値のペアに関する位置情報を特定するエントリの対応するリストを生成するステップとをさらに含む。
【００１４】
位置情報が、異なる値が現れるすべてのレコードに関する一意のインデックス値を特定する。
【００１５】
位置情報が、特定の一意のインデックス値を記憶することによってその特定の一意のインデックス値を特定する。
【００１６】
位置情報が、位置情報に一意のインデックス値を符号化することによって一意のインデックス値を特定する。
【００１７】
一意のインデックス値を符号化することが、一意のインデックス値に対応するベクトル内の位置にビットを記憶することを含む。
【００１８】
集合が、１又は２以上のフィールドの第１のセットを含むフィールドを有するレコードの第１のサブセットと、１又は２以上のフィールドの第２のセットを含むフィールドを有するレコードの第２のサブセットとを含む。
【００１９】
処理するステップは、（１）一意のインデックス値が第１のサブセットのすべてのレコードに関連付けられた第１のサブセットのレコードのフィールドのインデックス値と、（２）キー値が値の第２のサブセットのすべてのレコードに関連付けられた第２のサブセットのレコードのフィールドのキー値とのマッピングを提供する情報を生成するステップであって、キー値が第２のサブセットのレコードを第１のサブセットのレコードとリンクする、ステップをさらに含む。
【００２０】
位置情報は、異なる値が現れるすべてのレコードに関する一意のインデックス値を特定する。
【００２１】
別の態様においては、概して、少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピュータプログラムが、コンピュータ可読ストレージ媒体に記憶される。コンピュータプログラムは、コンピューティングシステムに、データストレージシステムに接続されたインターフェースを介してデータストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスさせ、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理させるための命令を含む。処理することは、異なる値から構成される第１のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する対応する位置情報を、集合のレコードの１又は２以上のフィールドの第１のセットに現れる異なる値の第１のセットに関して生成することと、１又は２以上のフィールドの第１のセットに関して、各エントリが異なる値から構成される第１のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成することと、１又は２以上のフィールドの第１のセットと異なる集合のレコードの１又は２以上のフィールドの第２のセットに関して、各エントリが１又は２以上のフィールドの第２のセットに現れる異なる値から構成される第２のセットからの異なる値を特定するエントリの対応するリストを生成することと、１又は２以上のフィールドの第１のセットに現れる少なくとも１つの値に関する位置情報を用いてレコードの集合の少なくとも１つのレコードの位置を特定すること、及び位置を特定されたレコードの１又は２以上のフィールドの第２のセットに現れる少なくとも１つの値を特定することに少なくとも部分的に基づいて、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成することとを含む。
【００２２】
別の態様においては、概して、少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、データストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするように構成された、データストレージシステムに接続されたインターフェースと、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するように構成された少なくとも１つのプロセッサとを含む。処理することは、異なる値から構成される第１のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する対応する位置情報を、集合のレコードの１又は２以上のフィールドの第１のセットに現れる異なる値の第１のセットに関して生成することと、１又は２以上のフィールドの第１のセットに関して、各エントリが異なる値から構成される第１のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成することと、１又は２以上のフィールドの第１のセットと異なる集合のレコードの１又は２以上のフィールドの第２のセットに関して、各エントリが１又は２以上のフィールドの第２のセットに現れる異なる値から構成される第２のセットからの異なる値を特定するエントリの対応するリストを生成することと、１又は２以上のフィールドの第１のセットに現れる少なくとも１つの値に関する位置情報を用いてレコードの集合の少なくとも１つのレコードの位置を特定すること、及び位置を特定されたレコードの１又は２以上のフィールドの第２のセットに現れる少なくとも１つの値を特定することに少なくとも部分的に基づいて、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成することとを含む。
【００２３】
別の態様においては、概して、少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、データストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするための手段と、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するための手段とを含む。処理することは、異なる値から構成される第１のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する対応する位置情報を、集合のレコードの１又は２以上のフィールドの第１のセットに現れる異なる値の第１のセットに関して生成することと、１又は２以上のフィールドの第１のセットに関して、各エントリが異なる値から構成される第１のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成することと、１又は２以上のフィールドの第１のセットと異なる集合のレコードの１又は２以上のフィールドの第２のセットに関して、各エントリが１又は２以上のフィールドの第２のセットに現れる異なる値から構成される第２のセットからの異なる値を特定するエントリの対応するリストを生成することと、１又は２以上のフィールドの第１のセットに現れる少なくとも１つの値に関する位置情報を用いてレコードの集合の少なくとも１つのレコードの位置を特定すること、及び位置を特定されたレコードの１又は２以上のフィールドの第２のセットに現れる少なくとも１つの値を特定することに少なくとも部分的に基づいて、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成することとを含む。
【００２４】
別の態様においては、概して、少なくとも１つのデータストレージシステムに記憶されたデータをプロファイリングするための方法、コンピュータ可読媒体、及びシステムが、データストレージシステムに接続されたインターフェースを介してデータストレージシステムに記憶されたレコードの少なくとも１つの集合にアクセスするステップと、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するステップとを含む。処理するステップは、２又は３以上のフィールドの第１のセットに関して、それぞれのエントリが集合のレコードの２又は３以上のフィールドの第１のセットに現れる異なる値の組合せ及び異なる値の組合せに関するプロファイル情報を特定するエントリの対応するリストを生成するステップと、２又は３以上のフィールドの第１のセットに現れる値の少なくとも２つの異なる組合せに関するエントリのリストからのプロファイル情報を組み合わせること、及び組み合わせたプロファイル情報に基づいて１又は２以上の指定されたフィールドのうちの少なくとも１つに現れる少なくとも１つの値に関するプロファイル情報を判定することに少なくとも部分的に基づいて、レコードの集合の１又は２以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するステップとを含む。
【００２５】
態様は、以下の利点のうちの１又は２以上を含む可能性がある。
【００２６】
一部のデータプロファイリング手順は、データセットのレコードのドメイン（domain）の異なる値のセンサスをまとめることによってデータセットのデータ品質の測定値を計算し、「ドメイン」が、そのデータセットのレコードの１若しくは２以上のフィールド、フィールドの組合せ、又はフィールドの一部分からなる。センサスがドメインに関してまとめられるとき、そのドメインに関する異なる値のセットを数え上げ、それぞれの異なる値を有するレコードの数のカウントを含むセンサスデータが記憶される。例えば、センサスデータは、各値のカウントのエントリが選択されたドメインに現れる異なる値とその異なる値が選択されたドメインに現れるレコードの数のカウントとを含む、選択されたドメインに関する値のカウントのエントリのリストとして構成される可能性がある。一部の実施形態においては、各フィールドが、別々のドメインである。一部の実施形態においては、センサスデータは、単一のデータセットに記憶され、任意で、高速なランダムアクセスのためにフィールドによってインデックス付けされ、一方、その他の実施形態においては、センサスデータは、例えば、各フィールドにつき１つずつ複数のデータセットに記憶される可能性がある。
【００２７】
データ品質の測定値は、異なる値の数及び分布、指定された検証規則にしたがって妥当である値又は妥当でない値の数及び分布、１又は２以上のフィールドの別のセットの値が固定されたままにされる（「セグメンテーション（segmentation）」とも呼ばれる）ときの１又は２以上のフィールドの１つのセットの値の数及び分布、並びに２又は３以上のフィールドの値の間の相関（「関数従属性」とも呼ばれる）を含み得る。特定の測定値が計算されることになる度に、好適なセンサスが、データセットのデータを処理することによって取得され得る。しかし、フィールドの組合せに関するデータ品質の測定値を計算するときなどのいくつかの場合には、データの全体が再び処理されることを要求する代わりに、フィールドのその組合せに関する計算は、個々のフィールドに関して既に計算された記憶されたセンサスデータを用いて実行され得る。
【００２８】
一部の実施形態において、選択されたドメインに関するセンサスデータは、センサスデータのそれぞれの異なる値に関して、その異なる値が選択されたドメインに現れるあらゆるレコードを特定する位置情報を含む。位置情報は、データの全体に対して一回だけ計算される必要がある。フィールドの組合せを含むデータ品質の測定値、特に、複数のフィールドを組み込むセグメンテーション、相関、又は検証規則を含む測定値のその後の評価は、新しいセンサスデータを計算するためにデータセットのレコードを記憶するソースに戻ることなく位置情報を有する既存のセンサスデータから直接計算され得る。これは、さらなるデータ品質の測定値の計算を大幅に効率的にする。さらに、位置情報を有するセンサスデータは、データ品質の結果へとドリルダウンするため、つまり、データ品質の結果に関連する基礎を成すデータレコード、例えば、妥当でないレコード、又は主キーフィールドの重複するレコードを返すために使用され得る。異なるデータセットのドメインがプロファイリングされている場合、インデックスマップが、異なるデータセットのレコードを関連付けるために結合操作を実行する必要を回避するために使用され得る。
【００２９】
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
【図面の簡単な説明】
【００３０】
【図１】データをプロファイリングするためのシステムブロック図である。
【図２Ａ】データプロファイリング手順のための動作及びデータの概略図である。
【図２Ｂ】データプロファイリング手順に関するフローチャートである。
【図３】関数従属性の結果に関して生成されるデータの概略図である。
【図４】組み合わされたセンサスの生成のための手順のフローチャートである。
【図５】組み合わされたセンサスの生成に関するデータの概略図である。
【図６Ａ】関数従属性を判定するための手順に関するフローチャートである。
【図６Ｂ】関数従属性の情報を有する組み合わされたセンサスの例の図である。
【図７】エッジのドリルダウンの手順の概略図である。
【図８Ａ】インデックスマップに関するデータの概略図である。
【図８Ｂ】関数従属性の結果に関するデータの概略図である。
【図９】ノードのドリルダウンの手順の概略図である。
【図１０】セグメントセンサス及びセグメント分けされた組み合わされたセンサスに関するデータの概略図である。
【図１１】セグメントキューブ（segment cube）に関するデータの概略図である。
【発明を実施するための形態】
【００３１】
図１は、データプロファイリング技術が使用され得る例示的なデータ処理システム１００を示す。システム１００は、ストレージデバイス、又はオンラインデータストリームへの接続などのデータの１又は２以上のソースを含み得るデータソース１０２を含み、それらの１又は２以上のソースのそれぞれは、さまざまな記憶形式（例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブの形式）のいずれかでデータを記憶し得る。実行環境１０４は、プロファイリングモジュール１０６及び処理モジュール１０８を含む。実行環境１０４は、ＵＮＩＸオペレーティングシステムなどの好適なオペレーティングシステムの制御の下で１又は２以上の多目的コンピュータでホストされる可能性がある。例えば、実行環境１０４は、ローカルの（例えば、ＳＭＰコンピュータなどのマルチプロセッサシステム）、又はローカルに分散された（例えば、クラスタ若しくはＭＰＰとして接続された複数のプロセッサ）、又はリモートの若しくはリモートに分散された（例えば、ローカルエリアネットワーク（ＬＡＮ，local area network）及び／若しくは広域ネットワーク（ＷＡＮ，wide-area network）を介して接続された複数のプロセッサ）、又はこれらの任意の組合せのいずれかの複数の中央演算処理装置（ＣＰＵ，central processing unit）を用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含み得る。
【００３２】
プロファイリングモジュール１０６は、データソース１０２からデータを読み、プロファイリングモジュール１０６及び処理モジュール１０８がアクセス可能であるプロファイリングデータストア１１０にプロファイリングサマリ情報を記憶する。例えば、プロファイリングデータストア１１０は、データソース１０２のストレージデバイス内に、又は実行環境１０４内からアクセス可能な別個のデータストレージシステムに実装される場合がある。プロファイリングサマリ情報に基づいて、処理モジュール１０８は、データをクレンジングすること、データを別のシステムにロードすること、又はデータソース１０２に記憶されたオブジェクトへのアクセスを管理することを含め、データソース１０２のデータに対するさまざまな処理タスクを実行することができる。データソース１０２を提供するストレージデバイスは、実行環境１０４のローカルにあり、例えば、実行環境１０４を実行するコンピュータに接続されたストレージ媒体（例えば、ハードドライブ１１２）に記憶される場合があり、又は実行環境１０４のリモートにあり、例えば、（例えば、クラウドコンピューティングインフラストラクチャによって提供される）リモート接続若しくはサービスを介して実行環境１０４を実行するコンピュータと通信するリモートシステム（例えば、メインフレーム１１４）でホストされる場合がある。
【００３３】
プロファイリングモジュール１０６は、データソース１０２に記憶されたデータを読み、例えば、関数従属性又はセグメンテーションに基づいてデータ品質の測定値を計算するために有用な分析を含むさまざまな種類の分析を効率的に実行することができる。一部の実施形態において、分析は、データソース１０２に記憶されたデータセットのレコードのそれぞれの個々のフィールドに関するセンサスデータを生成し、そのセンサスデータをプロファイリングデータストア１１０に記憶することを含む。上述のように、ドメインに現れるそれぞれの異なる値に関するエントリを含む特定のデータセットのレコードの特定のドメインに関するセンサスデータは、異なる値が現れる特定のデータセット内のレコードのそれぞれの位置を（例えば、レコードインデックス値によって）特定する位置情報も含み得る。１つの実施形態においては、関連する値に関するセンサスエントリの生成中に、ベクトルが、関連する値を有するあらゆるレコードの一意レコード識別子と入力される。データセットの元のデータのレコードが一意レコード識別子を持たない場合、例えば、各レコードに順番に番号を割り振ることによってプロファイリング手順の一部としてそのようなレコード識別子を生成し、レコードに追加する。そして、この位置情報は、センサスエントリに含められる場合があり、以下でより詳細に説明されるように、関数従属性又はセグメンテーションに関する計算のためのさらなる組み合わされたセンサスデータの生成で使用される場合がある。
【００３４】
位置情報を記憶するためのその他の実施形態が可能であり、それらの実施形態の一部は性能上の利点及び／又は縮減された記憶空間をもたらし得る。例えば、ビットベクトルが、レコード識別子のベクトルの代わりに使用される。ビットベクトルの各ビットが、特定のレコード識別子に対応し、ビットは、対応するレコード識別子を有する関連するレコードが関連する値を有する場合に設定される。ビットベクトルのビットとレコード識別子との間の対応は、明示的であるか又は暗黙的である可能性がある。例えば、ビットを対応するレコード識別子に関連付ける、１対１であるとは限らない明示的なマッピングが存在する場合があり、又は各ビットの位置がレコードの位置の連続した順序付けに対応する暗黙的なマッピングが存在する場合がある。一部の実施形態において、結果として得られるビットベクトルは、ストレージのさらなる節約のために圧縮される。
【００３５】
位置情報は、ビットベクトルのベクトルで記憶される場合もある。例えば、ビットベクトルの各ビットは、おそらくは、ビットの位置と、相互参照付きのファイルに記憶されたレコード識別子との間のマッピングによって関連するレコード識別子に対応する。ビットベクトルのベクトルのビットベクトルエントリのベクトルインデックスが、フィールド内のワード数又は（例えば、複数のデータパーティションで並列にセンサスデータを処理するときに）値が現れるデータパーティションなどの補足情報を暗黙的に符号化するために使用される場合がある。明示的な補足情報が、ビットベクトルに関連するか、又はビットベクトルのベクトルのビットベクトルエントリに関連するさらなるフィールドで指定される場合がある。この補足情報は、後で使用するために値を含むレコードのセットを区別するために使用される。
【００３６】
図２Ａは、データプロファイリングの手順の過程で実行される処理と、データソース１０２からの１又は２以上のデータセットに対してプロファイリングモジュール１０６において実行される手順の過程で受信され、生成されるデータの例を示す。図２Ｂは、手順に関するフローチャートである。図２Ａ及び２Ｂを参照すると、プロファイリングモジュール１０６が、プロファイリングするデータセット２０１のそれぞれが各データセットのレコードのそれぞれに関するインデックス値を有することを保証するためのインデックス付け処理２００を実行し、インデックス値は、生成される位置情報によって参照され得る各レコードに関する明確に定義された（well-defined）位置を与える。例えば、特定のデータセットに関するインデックス値は、各レコードに、そのレコードのテーブルの行番号、区切られたファイル内の位置、記憶アドレス、主キーの値、又はレコードの任意のその他の一意の属性に基づいて割り振られる（例えば、１から始まり、１ずつインクリメントされる）インクリメントされる整数である場合がある。割り振られたインデックス値は、例えば、データソース１０２の元のデータセット内の各レコードに関するフィールドとして値を追加することによってインデックス付けされたデータセット２０３を提供するために各レコードに明示的に追加されるか、又はデータソース１０２若しくはプロファイリングデータストア１１０に新しいデータセットとして記憶される場合がある。元のデータセットがインデックスとして使用され得るフィールドを既に含む場合、インデックス付け処理２００は、省略されるか、又はインデックスとしてそのフィールドを使用する能力を検証するためにのみ実行される可能性がある。インデックス付け処理２００は、以下でより詳細に説明されるように、１つのデータセットに関するインデックスと別のデータセットのインデックスとの間の対応を提供するインデックスマップを生成することを含み得る。
【００３７】
プロファイリングモジュール１０６は、選択された１セットのドメインのそれぞれに関して位置情報を有するセンサスデータを計算するセンサス処理２０５を実行する。この例において、各ドメインは、単一のフィールドである。したがって、この例において、センサス処理２０５の結果は、それぞれが特定のデータセットの特定のフィールドに関するセンサスデータ２０７の複数のセットである。各データセットは、プロファイリングのために指定された１セットのフィールドを有する場合があり、又はデフォルト設定により、各データセットのすべてのフィールドがプロファイリングされる場合がある。その他の例において、ドメインは、フィールドの一部分であるか、複数のフィールド又はフィールドの部分の組合せである場合がある。（「センサス」とも呼ばれる）特定のドメインに関するセンサスデータの各セットは、ドメイン内に現れる異なる値、特定の値が現れたレコードの数のカウント、及びどのレコードに特定の値が現れたかを特定する関連する位置情報を含むエントリのリストを含む。一部の実施形態において、カウントは、必要とされるときに位置情報から導出され得る場合がある（例えば、値が現れたレコードの位置を特定するビットベクトルのビットの合計が、値が現れたレコードの数をもたらす）のでセンサスに明示的に含まれない。一部の実施形態において、プロファイリングモジュール１０６は、ドメイン内の値の位置を修飾する又は特徴付ける情報などの、位置情報を拡張する追加の情報を蓄積する。
【００３８】
プロファイリングモジュール１０６は、潜在的に、センサスデータ２０７のセットが生成された後、長い時間が経ってから受信される場合がある、所望のマルチドメインデータプロファイリングの結果を指定する入力（例えば、ユーザ入力）を受信する。その入力により、計算に含まれることになる複数のドメインも（明示的又は暗黙的に）指定される。マルチドメインデータプロファイリングの結果を計算するために、プロファイリングモジュール１０６は、指定されたドメインのそれぞれのフィールドに関するセンサスの集合２０９を選択する。１つの種類のマルチドメインデータプロファイリングの結果は、同じレコードの（つまり、同じインデックスの）それぞれのフィールドに現れる値の一意のタプルを指定する「組み合わされた（纏められた）センサス」である。その他の種類のマルチドメインデータプロファイリングの結果は、関数従属性の結果又はセグメンテーションの結果を含み、関数従属性の結果又はセグメンテーションの結果のそれぞれは、以下でより詳細に説明されるように、組み合わされたセンサスの計算から始まる場合がある。
【００３９】
任意で、プロファイリングモジュール１０６は、センサス及びそれぞれのセンサスのセンサスエントリが現在のマルチドメインデータプロファイリングの結果又はその後のマルチドメインプロファイリングの結果の計算をより効率的な順番になるように集合２０９をソートする場合がある。この例において、それぞれのセンサスは、現れた回数によって降順にエントリが現れるようにソートされ（２１０）、したがって、最も頻度の高い値が、最初に現れる。加えて、一部の実施形態において、エントリは、現れた回数が同じである別の値よりもデータセット内で先に最初に現れる値がソートされたセンサスにおいて先に現れるように位置情報によってさらに細かくソートされる場合がある。これは、２つの異なる値に関して、一方の値の最初の登場（つまり、小さい方のレコードインデックス）が他方の値の最初の登場とは異なるはずであるので、センサスの値に明確に定義された順序付けを与える。センサスの集合２０９は、それぞれのセンサスにおける異なる値の数によってやはりソートされ（２２０）、最も頻度の高い値のカウントによって降順にさらに細かくソートされる。このソートは、（異なる値の数で）より短いセンサスが先に現れ、異なる値の数が同じである２つのセンサスに関しては、最も頻度の高い値がより大きなカウントを有する方のセンサスが先に現れるソートされたセンサスのソートされた集合２２５をもたらす。関数従属性に対応するマルチドメインデータプロファイリングの結果に関しては、異なる値の数が比較的少ないフィールドの間に関数従属性がより存在しやすい。異なる値の数が増えるにつれて、フィールドは、主キーなどの一意属性、又はその他の値と疑似相関を有する傾向がある、重複する値の数が少ない属性を表す可能性がより高くなる。より短いセンサスをより長いセンサスよりも前に順序付けすることによって、関数従属性の分析に関連性がある可能性がより高いフィールドを、より速く処理する。場合によっては、ソートされた集合２２５のセンサスのすべてのエントリのすべてを処理し続けることなく結果が計算され得る停止条件を認識することさえあり得る可能性がある。関数従属性以外のマルチドメインデータプロファイリングの結果に関しては、結果を計算するためにソートされた集合２２５全体を処理する必要がある場合があり、その場合、順序付けは必要ない場合がある。この例においては、順序付け２１０が、順序付け２２０の前に行われるが、その他の例においては、順序付け２２０が、順序付け２１０の前に行われる場合がある。
【００４０】
プロファイリングモジュール１０６は、ソートされた集合２２５のセンサスエントリを逐次的に読み込み、その他のセンサスエントリからの情報と組み合わせ、組み合わされたセンサス２４０をもたらす、組み合わされたセンサスの生成処理２３０を実行する。異なるセンサスエントリからの情報を効率的に組み合わせるために、プロファイリングモジュール１０６は、以下でより詳細に説明されるように、位置情報を使用して、組み合わされたセンサス２４０の生成に関連性があるインデックス付けされたデータセット２０３からのレコードの位置を特定する。組み合わされたセンサスの生成処理２３０が複数回、実行され得る。例えば、組み合わされたセンサス２４０のタプルが３つ以上のフィールドからの値を含む場合、そのタプルに関して組み合わされたセンサス２４０のセンサスエントリを構築するとき、プロファイリングモジュール１０６は、最初の実行の際に、フィールドのうちの２つに関する一対（pairwise）の組み合わせを実行する場合があり、その後の実行の際に、センサスエントリが、既に形成された組み合わされたセンサス２４０のバージョンからの任意のエントリと組み合わされる場合がある。
【００４１】
図３を参照すると、プロファイリング手順の例が、示されている。Ａ−元のデータセット３００が、Ａ−インデックス付けされたデータセット３１０を提供するために（インデックス付け処理２００において）インデックス付けされる。Ａ−元のデータセット３００は、３つの示された列に対応する３つのフィールドを有し、６つの示された行に対応する６つのレコードを有し、データセットの第１のレコードは、３つのフィールドに関して値「ｄ」、「ｑ」、「ｄ８」をそれぞれ有する。（「１」から始まる）増加する整数値を有するサロゲートキーフィールドが、Ａ−インデックス付けされたデータセット３１０の各レコードを一意に特定するための位置インデックスとしてレコードの初めに追加されている。この例において、プロファイリングモジュール１０６は、Ａ−元のデータセット３００の初めの２つのフィールドに関してセンサスのソートしたＡ−センサス集合３２０を計算する。第１のフィールド（すなわち、第１の列）は、「ｇ」と名付けられ、第２のフィールド（すなわち、第２の列）は、「ｆ」と名付けられ、第３のフィールドの名前は、この例においてはプロファイリングされていないのでこの例においては無関係である。したがって、Ａ−センサス集合に２つのセンサス、ｇフィールドに関するセンサス（「ｇ−センサス」と呼ばれる）及びｆフィールドに関するセンサス（「ｆ−センサス」と呼ばれる）が存在する。Ａ−センサス集合３２０のそれぞれのセンサスは、エントリのソートされたリストを含み、各エントリは、値、その値が現れた数のカウント、及びその値に関する位置情報を示すレコードインデックスのベクトルを含む。したがって、ｆ−センサスに関してスペースで区切られた文字列「ｑ  ３  Ａ［１，４，５］」によって示されるこの例の第１のセンサスエントリは、値「ｑ」がＡ−元のデータセット３００に３回現れ、ベクトル「Ａ［１，４，５］」によって示されるようにＡ−インデックス付けされたデータセット３１０のレコード１、４、及び５に現れることを示す。それぞれのフィールドに関するセンサスが、値のカウントによって降順にソートされ、位置情報ベクトルの第１のインデックスによって昇順にさらに細かくソートされる。Ａ−センサス集合３２０のセンサスのセットは、それぞれのセンサスにおける異なる値の数でさらにソートされ、最も短いセンサスを最初に配置し、これは、この例においては、ｆ−フィールドに関するセンサスをｇ−フィールドに関するセンサスの前に置く。
【００４２】
プロファイリングモジュール１０６は、組み合わされたセンサス生成処理２３０を実行して組み合わされたセンサス３３０を計算する。この例において、組み合わされたセンサスのタプルは、値のペア（組合せ）である。スペースで区切られた文字列「ｇ  ｆ  ｄ  ｑ  ２  ３  ２  Ａ［１，４］」によって示されるこの例の組み合わされたセンサスの第１のエントリは、ペアのうちの第１のフィールドが「ｇ」であり、ペアのうちの第２のフィールドが「ｆ」であり、第１のフィールドの値が「ｄ」であり、第２のフィールドの値が「ｑ」であり、第１の値が２回現れ、第２の値が３回現れ、第１のフィールドの第１の値（すなわち、ｇ−値「ｄ」）と第２のフィールドの第２の値（すなわち、ｆ−値「ｑ」）との両方を含むレコードの数が２であり、ベクトル「Ａ［１，４］」によって示されるようにＡ−インデックス付けされたデータセット３１０のこれらのレコードが１及び４であることを示す。そして、組み合わされたセンサス３３０が、以下でより詳細に説明されるように、さまざまなデータプロファイリングの分析結果を計算するために使用され得る。
【００４３】
一部の実施形態においては、上述の例に関する関数従属性の結果３４０などの組み合わされたセンサスに基づく結果が、ユーザインターフェースでグラフィカルに表示され得る。それぞれの円は、フィールドのラベル「ｇ」及び「ｆ」の下に異なる値を含み、値のカウントが、円の横（ｇ−フィールドに関しては左、ｆ−フィールドに関しては右）に示される。円の間のそれぞれの有向辺は、それぞれの端の値のペア（組合せ）を示し、辺の上のカウントは、ペアを共有するレコードの数である。さまざまなカウントから、個々の値及びフィールドのペアの相関の評価が、プロファイリングモジュール１０６によって決定され、表示され得る。この例において、プロファイリングモジュール１０６は、「ｇがｆを決定する」という評価を表示する。
【００４４】
一部の実施形態において、組み合わされたセンサスの生成処理２３０は、フィールドに関する個々のセンサスに現れる異なる値のデカルト積を形成する必要なしに２つのフィールドに一緒に（つまり、同じレコードに）現れる値の異なるペアの組み合わされたセンサスを生成することができる。そのようなデカルト積は、例えば、そのようなデカルト積から形成された値のすべてのペアに関する位置情報を取得し、両方の値を共有するレコードの位置を特定するために関連する位置情報の共通部分（intersection）を計算することによってそのような組み合わされたセンサスを計算するために使用され得る。しかし、完全なデカルト積を使用するこのプロセスは、多くのペアがそれらのペアの位置情報に重なりがない可能性があるので非効率的である場合がある。図４のフローチャート及び図５の概略図は、ペアの位置情報の重なりを確かに共有するペアを効率的に特定し、組み合わせ、共有しないペアを回避することが可能な、組み合わされたセンサスの生成処理２３０で使用され得る手順を示す。この例において、位置情報は、レコードインデックスのベクトルとして示され、説明されるが、ベクトルに対する計算は、位置情報のその他の表現を用いて実行される場合がある。例えば、ｆ−値の位置情報「ｆ−Ａ［］」及びｇ−値の位置情報「ｇ−Ａ［］」に関して、ｆ−Ａ［］及びｇ−Ａ［］の共通部分は、それぞれのビットベクトルに対する論理積（ＡＮＤ）演算を実行することによって、両方のベクトルがビットベクトルとして表されるようにして実行され得る。
【００４５】
図４のフローチャートのステップは、フィールドｆ及びｇに関して、概略を上述したように、Ａ−センサス集合３２０が準備された後に開始され、第１のセンサス（この例においては、ｆ−センサス）のソートされたエントリに対して繰り返し実行される。プロファイリングモジュール１０６が、ｆ−センサスの次のセンサスエントリ（つまり、第１の繰り返しのための第１のセンサスエントリ）を読み込む（４００）。現在のエントリのｆ−値に関する関連する位置情報から、その値が現れる第１のレコードが、そのレコードのｇ−フィールドに存在する対にされたｇ−値を見つけるためにＡ−インデックス付けされたデータセット３１０において検査される（４１０）。プロファイリングモジュール１０６が、そのｇ−値に関連するｇ−センサスから位置情報を取得する（４２０）。結果として得られるｇ−値の位置情報（ｇ−Ａ［］）が、ペアを共有するすべてのレコードを特定する情報（f-A[] AND g-A[]）を記憶し（４３０）、現在のｆ−値を有するがｇ−値は異なるレコードの残りのセットに関して位置情報を更新する情報（f-A[] = f-A[] AND (NOT g-A[])）を記憶する（４４０）ためにｆ−値の位置情報（ｆ−Ａ［］）と組み合わされる。ペアにされた値が、組み合わされたセンサス３３０に書き込まれる（４５０）。残りのセットに関する位置情報が、その位置情報が空であるかどうかを判定するために検査される（４６０）。その位置情報が空でない場合、残りのセットの第１のレコードが、Ａ−インデックス付けされたデータセット３１０から現在のｆ−値と対にされた別のｇ−値を見つけるために検査される（４１０）。残りのセットに関する位置情報が空である場合、ｆ−センサスからの次のセンサスエントリが、別の繰り返しを実行するために読み込まれる（４００）。ｆ−センサスのエントリのすべてが手順の完全な繰り返しで読み込まれ、処理された後、組み合わされたセンサス３３０は、完成する。
【００４６】
図５は、図４の手順の例を示し、矢印は、部分的に完成された組み合わされたセンサス３３０’が存在するところまでプロファイリングモジュール１０６によって実行された一連の処理を示す。そして今度は、以前の整列に基づいて最も頻度の高いｆ−値であるｆ−値「ｑ」を有する第１のエントリから開始し、Ａ−センサス集合３２０内のｆ−センサスのセンサスエントリが、考慮（調査）される。位置情報ベクトルの第１の要素「１」が、Ａ−インデックス付けされたデータセット３１０の対応するレコードのｇ−フィールドの値を検査するために使用される（５２２）。この例においては、対応するレコード（すなわち、インデックス位置１のレコード）で、ｇ−フィールドは、値「ｄ」を有する。値「ｄ」に関するｇ−センサスエントリが、位置情報ベクトルによって示される値「ｄ」を共有するレコードの完全なセットを取得するために検査される（５２４）。ｆ−値「ｑ」に関する位置情報ベクトルが、レコードの２つのセット、すなわち、値「ｑ」及び「ｄ」の対を有するレコードのセット５２７（g AND f）と、値「ｑ」を有するが「ｄ」は持たないレコードのセット５２８（f AND NOT g）とに関する位置情報を形成するためにｇ−値「ｄ」に関する位置情報と比較される（５２６）。共有された値に関する位置情報が、組み合わされたセンサス３３０’の適切なエントリにベクトルとして記憶される（５２９）。この例において、組み合わされたセンサスのエントリは、各値に関するソース、値及びそれらの値のセンサスのカウント、両方の値を含むすべてのレコードに関する位置情報、並びにそのようなレコードの数からなる。エントリ「ｇ  ｆ  ｄ  ｑ  ２  ３  ２  Ａ［１，４］」は、ｇ−値「ｄ」が２回現れ、ｆ−値「ｑ」が３回現れ、位置インデックス１及び４に対応する、両方の値を共有する２つのレコードが存在することを示す。
【００４７】
プロファイリングモジュール１０６は、値「ｑ」を有するレコードの残りのセット５２８を処理する。位置情報ベクトルの第１の（及び唯一の）要素「５」が、Ａ−インデックス付けされたデータセット３１０の対応するレコードのｇ−フィールドの値を検査するために使用され（５４０）、検査した結果として、ｇ−フィールドに関する値「ｂ」が得られる。値「ｂ」のｇ−センサスエントリが、セット５２８と比較される位置情報Ａ［５］を取得するために検査される（５４４）。これらのセットの共通部分が計算され（５４６）、組み合わされたセンサス３３０’の適切なエントリに記憶される。セットの間の差は、この場合は空であるが、空でなかったならば、手順が、ｆ−フィールドのこの特定の値「ｑ」と対にされたｇ−フィールドのさらなる値を見つけるために繰り返されることになる。ｆ−値「ｑ」を有するレコードのセットが検査し尽くされたとき、手順はｆ−センサスの次のエントリに移り、プロセスが繰り返される。
【００４８】
図６Ａ及び６Ｂを参照すると、プロファイリングモジュール１０６は、フィールドのペアの値の相関（「関数従属性」）を判定するための手順を実行し、関数従属性の結果を定量化する相関の割合（correlation fraction）を含めるように組み合わされたセンサスを拡張することができる。潜在的な関数従属性に関して分析されるフィールドのペアの組み合わされたセンサスが、上述のように、フィールドに関する個々のセンサスに基づいて計算される（６００）。組み合わされたセンサスのエントリに含まれる値のそれぞれのペアのそれぞれの値に関して、その値を有するレコードの数（「値のカウント」）に対する値のその対を有するレコードの数（「対のカウント」）の比を表す「相関の割合」が、計算される（６１０）。プロファイリングモジュール１０６は、拡張した組み合わされたセンサス６１５を生成するためにエントリに相関の割合（この例においては「１」及び「２／３」）を記憶する。例えば、組み合わされたセンサスエントリ「ｇ  ｆ  ｄ  ｑ  ２  ３  ２  Ａ［１，４］」は、フィールド「ｇ」の値「ｄ」を有する２つのレコード、フィールド「ｆ」の値「ｑ」を有する３つのレコード、及びレコードのインデックス１及び４によってＡ−インデックス付けされたデータセット３１０内で位置を特定される値の対「ｄ  ｑ」を有する２つのレコードが存在することを示す。（「ｑ」とペアにされた（組み合わされた））ｇ−値「ｄ」に関する相関の割合は、２／２＝１であり、一方、（「ｄ」とペアにされた（組み合わされた））ｆ−値「ｑ」に関する相関の割合は、２／３である。
【００４９】
それぞれの値に関する相関の割合が、どの値が閾値で相互に関連付けられるかを判定する（６２０）ためにその閾値と比較される。例えば、相関の割合が閾値０．９５を超える場合、１００個の事例のうちの５つ未満が、現在の値とは異なるペアにされた値を有する。ここでは、「ｄ」が０．９５の閾値で「ｑ」に相互に関連付けられるが、その逆には相互に関連付けられず、つまり、ｇ−値が「ｄ」である場合、対応するｆ−値は「ｑ」であるに違いないが、ｆ−値が「ｑ」である場合は、対応するｇ−値が「ｄ」である確率は２／３しかない。
【００５０】
所与の閾値で相互に関連付けられる（フィールドのうちの１つの）値に関連付けられるレコードの総数がカウントされ（６３０）、所与の閾値で相互に関連付けられるデータセット全体におけるレコードの割合を判定する（６４０）ためにレコードの総数によって割られる。この割合が第２のフィールドの相関の閾値を超える場合、フィールド全体が、他方のフィールドに相互に関連付けられると言われる。一部の実施形態において、フィールドの相関の決定に寄与するレコードのカウントは、値の事例の数が閾値未満であるときのレコードのカウントを除外する場合があり、又はそのような値に基づく相関を潜在的に疑わしいものとして報告する場合がある。これは、例えば、値の相手の値に取るに足りないくらいに相互に関連付けられるその値の単一の事例のみが存在するときのように、事例の数が少なすぎる場合、相関は偶然であるか又は取るに足りない可能性があるからである。
【００５１】
フィールドの相関の計算が、逆方向に相互に関連付けられるレコードの割合を決定するために他方のフィールドを用いて繰り返される。この例においては、ｇ−値のすべてがｆ−値に個々に相互に関連付けられ、したがって、相互に関連付けられるレコードの総数は６であり、レコードの総数は６であり、レコードのうちの相互に関連付けられる割合は６／６＝１である。結論は、「ｇ」が「ｆ」を決定するということであり、つまり、ｇ−値の知識が、（このフィールドの相関の閾値で）対応するｆ−値の知識を保証する。対照的に、ｆ−値は相関の閾値を超えず、したがって、ｆ−フィールドはｇ−フィールドと相互に関連付けられない。
【００５２】
図７を参照すると、関数従属性の結果３４０からＡ−問い合わせ結果７１０へのエッジ（edge）のドリルダウン（７００）が、レコードに現れる値のペアを示す表示された結果３４０のエッジによって表される、それらのレコードに関連するより詳細な情報を示すために（例えば、グラフィカルユーザインターフェースでの表示された結果３４０とのユーザインタラクションに応じて）実行される。エッジによって現れる値のペア「ｄ  ｑ」が、そのペアに関する位置情報を取得するために、（現れる頻度によってソートされ、位置情報の第１のインデックスによってさらに細かくソートされ、組み合わされたセンサス３３０と同じである）組み合わされたセンサス３３０’’内で検査される（７２５）。そして、位置情報が、Ａ−インデックス付けされたデータセット３１０から関連するレコードを取得する（７３５）ために使用される。これらのレコードが、Ａ−問い合わせ結果７１０で表示される（７４５）。
【００５３】
前例においては、同じデータセットの２つのフィールド（ｇ及びｆ）の相関が計算された。キーフィールドによってリンクされた異なるデータセットの２つのフィールドの相関の計算が、図８Ａ及び８Ｂに示される。Ａ−元のデータセット８００及びＢ−元のデータセット８２０は、３つのフィールドをそれぞれ有し、共通のキーフィールドである１つのフィールドをそれぞれ有する。共通のキーフィールドのキー値は、必ずしも一意でない。しかし、キーフィールドのキー値は、それぞれのキーフィールドの同じキー値によって２つのデータセットの対応するレコードを関連付けるようにする。Ａ−元のデータセット８００の各レコードの一意識別子（Ａ−ｒｅｃｏｒｄ＿ｉｄと呼ばれる）が、Ａ−インデックス付けされたデータセット８１０を生成するために各レコードにフィールドとして追加される。同様に、Ｂ−元のデータセット８２０の各レコードの一意識別子（Ｂ−ｒｅｃｏｒｄ＿ｉｄと呼ばれる）が、Ｂ−インデックス付けされたデータセット８３０を生成するためにフィールドとして追加される。インデックスマップ８４０が、各Ａ−ｒｅｃｏｒｄ＿ｉｄを同じレコードのキーフィールドのキー値と関連付けるために使用される。したがって、インデックスマップ８４０は、Ａ−インデックス付けされたデータセット８１０の最初の２つの列のコピーである。インデックスマップ８４０は、例えば、プロファイリングデータストア１１０内のファイルにＡ−インデックス付けされたデータセット８１０とは分けて記憶される場合がある。
【００５４】
この例において、キーフィールドは、（図８ＡにおいてＡ−元のデータセット８００の第１の列に示された）Ａ−元のデータセット８００の主キーであり、（図８ＡにおいてＢ−元のデータセット８２０の第２の列に示された）Ｂ−元のデータセット８２０の外部キーである。Ａ−ｒｅｃｏｒｄ＿ｉｄの値は、そのキーフィールドが主キーであるので（そのキーフィールドに対するＢ−ｒｅｃｏｒｄ＿ｉｄの値の代わりに）そのキーフィールドへのマッピングのために選択され得る。しかし、データセットは、各データセットのキーフィールドとして指定された何らかのフィールドが存在する限り、そのような主キー／外部キーの関係を有することを必ずしも要求されない。インデックスマップ８４０は、両方のデータセットが２つの異なるレコードに繰り返されたキーフィールドの値を有するこの例のように、Ａ−データセットに重複した主キーの値が存在する可能性があるので有用である。インデックスマップ８４０を用いて、プロファイリングモジュール１０６は、両方のデータセットが位置情報を指定するための参照の共通の枠組みを持つように、Ａ−ｒｅｃｏｒｄ＿ｉｄの値を含む新しいフィールドを有するＢ−インデックス付けされたデータセット８３０の新しいバージョンを生成する。そのようにするために、プロファイリングモジュール１０６は、Ｂ−インデックス付けされたデータセット８３０のキーフィールドの値をインデックスマップ８４０のキー値と比較して、対応するＡ−ｒｅｃｏｒｄ＿ｉｄの値との任意の数の一致を見つける。この例においては、（外部キーの値「ｋ４」を有する）Ｂ−インデックス付けされたデータセット８３０からの１つのレコードが、２つの異なるＡ−ｒｅｃｏｒｄ＿ｉｄの値にマッチングされ（８４５）、プロファイリングモジュール１０６が、Ｂ−インデックス付けされたデータセット８３０のレコードにＡ−ｒｅｃｏｒｄ＿ｉｄを付けるときに２つの対応するレコード（インデックスとして「Ａ４」が追加された１つのレコード及びインデックスとして「Ａ６」が追加されたもう１つのレコード）を追加して（８４７）Ｂ／Ａ−インデックス付けされたデータセット８５０を生成する。Ｂ−インデックス付けされたデータセット８３０のその他のレコードは、インデックスマップ８４０の単一のＡ−ｒｅｃｏｒｄ＿ｉｄの値にマッチングされ、したがって、Ｂ／Ａ−インデックス付けされたデータセット８５０に追加されるそれぞれの単一のレコードにそれぞれ対応し、対応するＡ−ｒｅｃｏｒｄ＿ｉｄの値がインデックスとして追加される。
【００５５】
ここで図８Ｂを参照すると、Ａ−センサス８６０が、（第１のフィールドの）Ａ−ｒｅｃｏｒｄ＿ｉｄの値に関連して位置情報が参照されるようにして、Ａ−インデックス付けされたデータセット８１０の第３のフィールドに関して計算され、Ｂ−センサス８７０が、インデックスマップ８４０を用いて追加された（第１のフィールドの）Ａ−ｒｅｃｏｒｄ＿ｉｄの値に関連して位置情報がやはり参照されるようにして、Ｂ／Ａ−インデックス付けされたデータセット８５０の第５のフィールドに関して計算される。２つのセンサスの位置情報が、（Ａ−センサスからのフィールドが「Ａ」とラベル付けされ、Ｂ−センサスからのフィールドが「Ｂ」とラベル付けされる）センサスによって示されるフィールドのペアに関する組み合わされたセンサス８８０を計算するために上述のように組み合わされ（８７５）、組み合わされたセンサス８８０は、続いて、ＡフィールドとＢフィールドとが相互に関連付けられないと結論づける関数従属性の結果８９０を表示するために使用される。
【００５６】
図９を参照すると、関数従属性の結果８９０からのノードのドリルダウン（９００）が、ノードで表示された値によって表されるレコードに関連するより詳細な情報を示すために（例えば、グラフィカルユーザインターフェースでの表示された結果８９０とのユーザインタラクションに応じて）実行される。Ｂフィールドからの「ｐ」値を表示するノードの選択に応じて、Ａ−元のデータセット８００とＢ−元のデータセット８２０との両方からの、そのノードに対応するレコードが取得され、ノード検索結果９１０で表示される。ドリルダウンは、まず、組み合わされたセンサス８８０において「ｐ」値を検査（検索）し（９１５）、（Ｂフィールドに関して「ｐ」を含む）それぞれの一致するエントリを見つけることによって達成される。これらのエントリに関する位置情報が、論理和（union）を用いて（Ａ−ｒｅｃｏｒｄ＿ｉｄの値に関連する）位置情報Ａ［１，３，４，６］を生成して組み合わされる。そして、これらの位置のそれぞれが、それらの位置の任意のレコードを取得するためにＡ−インデックス付けされたデータセット８１０とＢ／Ａ−インデックス付けされたデータセット８５０との両方で検査される（９２５）。Ａ−インデックス付けされたデータセット８１０の取得されたレコードは、ノード検索結果９１０に表示され（９３５）、「Ａ」とラベル付けされる。Ｂ−元のデータセット８２０の取得されたレコードは、同じＢ−ｒｅｃｏｒｄ＿ｉｄの値を共有するすべてのレコードを見つけるために比較され、共有するすべてのレコードは、ノード検索結果９１０でそれらのレコードのうちの１つだけが表示されるように重複を排除される（９４５）。この例において、Ａ−ｒｅｃｏｒｄ＿ｉｄの値Ａ４及びＡ６を有するレコードは、同じＢ−ｒｅｃｏｒｄ＿ｉｄの値Ｂ２を有する。Ａ−元のデータセット８００からのレコードの重複するキーフィールドの値は、単一のＢ−元のデータセット８２０のレコードに対応する複数のＡ−元のデータセット８００のレコードを持つことによってノード検索結果９１０に示される。
【００５７】
図１０に、セグメンテーションを用いるセンサスの計算の例が、示される。Ａ−元のデータセット１０００は、３つのフィールドｆ、ｇ、及びｈを有する。Ａ−元のデータセット１０００の各レコードの一意識別子（ｒｅｃｏｒｄ＿ｉｄと呼ばれる）が、Ａ−インデックス付けされたデータセット１０１０を生成するために各レコードにフィールドとして追加される。３つのフィールドのそれぞれに関する位置情報を有するソートされたセンサスの集合１０２０が、計算される。一部の実施形態において、システム１００は、ｆ−フィールドとｇ−フィールドとの組合せを指定された値を含むように制限することによって与えられるセグメント（つまり、データセットのすべてのレコードよりも少ないレコードのサブセット）のｈ−フィールドのデータプロファイル（すなわち、データの分布）はどうであるか？などの業務上の疑問（business question）に答えるためにユーザが問い合わせ（検索）することを可能にし得る。例えば、ｆ−フィールドが、ｆ−フィールドに関するあり得る値「ｆ」又は「ｍ」をそれぞれ有するレコードによって性別を示す場合があり、一方、ｇ−フィールドは、ｇ−フィールドに関するあり得る値「ｐ」又は「ｑ」をそれぞれ有するレコードによって「国外（foreign）」又は「国内（domestic）」を示す場合がある。ｆ−及びｇ−フィールドでセグメント分けされた（例えば、センサスによって示される）データプロファイルは、「国外  男性」又は「国内  女性」に関してｈ−フィールドの最も頻度の高い値は何であるか？のような疑問に答えることを容易にすることができる。
【００５８】
集合１０２０は、Ａ−元のデータセット１０００のレコードのすべてを処理することを必要とせずに、セグメント分けされたプロファイルを計算するために使用され得る。セグメントセンサス１０３０が、ｆ−フィールド及びｇ−フィールドのセンサスと、組み合わされたセンサスを計算するための上述の手順とを用いて、組み合わされたセンサスとして構築され得る。一部の実施形態において、セグメントセンサス１０３０の各エントリは、そのエントリに関連するセグメントの都合のよい識別のための（ｓｅｇｍｅｎｔ＿ｉｄと呼ばれる）一意の値を与えられる。組み合わされたセンサスを計算するための手順が、セグメント分けされた組み合わされたセンサス１０４０を形成するために再び適用され、セグメント分けされた組み合わされたセンサス１０４０は、Ａ−センサス集合１０２０のｈ−フィールドのセンサスとセグメントセンサス１０３０との組合せである。例えば、セグメント分けされた組み合わされたセンサス１０４０のｈ−ｓ１エントリは、初めにセグメントセンサス１０３０のｓ１エントリを取得し、関連する位置情報Ａ［１，４］を読み込むことによって計算され得る。位置ベクトルの第１の要素「１」が、ｈ−フィールドの値「ｄ」及び対応する位置情報Ａ［１，４］を見つけるためにＡ−センサス集合１０２０のｈ−フィールドに関するセンサスで検査される。セグメントセンサス１０３０のｓ１とラベル付けされたエントリの位置情報Ａ［１，４］が、ｈ−センサスの「ｄ」エントリの位置情報Ａ［１，４］と比較される。これらの２つのエントリの間で位置情報の要素のすべてが一致するので、ｓ１−セグメントに関する結果として得られる組み合わされたセンサスエントリのベクトルは、「ｄ  ２  Ａ［１，４］」であることが分かり、ｓ１−セグメントに残っている位置エントリは存在しない。これは、ｓ１−セグメントが単一のｈ−フィールドの値「ｄ」のみからなることを示す。ｈ−センサスのレコードと組み合わせてその他のセグメントの値を用いて組み合わされたセンサスの構築を続けることは、セグメント分けされた組み合わされたセンサス１０４０を埋める。
【００５９】
図１１に、セグメントキューブの計算の例が、示される。セグメンテーションが図１０の例と同様に複数のフィールドの値の組合せに基づくとき、セグメント分けされたセンサスの結果がより少ないフィールドのそれぞれの組合せを含むセグメントに関するセンサスの結果へと再集約されるセグメントキューブが構築され得る。図１０の例に関して、計算されたセグメント分けされた組み合わされたセンサス１０４０は、「国外  男性」（つまり、セグメントｓ４）及び「国内  女性」（つまり、セグメントｓ１）のようなセグメントを表す。ユーザは、セグメント「国外」又は「男性」に関するプロファイルを要求し得る。新しいセグメントに関して直接に図１０の計算を繰り返すために戻る代わりに、前のセグメンテーションの結果が、以下のように「セグメントキューブ」のこれらのその他のエントリを計算するためにｈ−センサスと組み合わされ得る。
【００６０】
セグメントキューブ１０２０を形成するために、まず、元のセグメントのフィールドのあらゆるサブセットが形成される。現在の例において、完全なセグメンテーションは、２つのセグメンテーションのフィールドｆ及びｇに基づく。２つのフィールドのこのセットの２つのサブセット、すなわち、ｆのみからなるセット及びｇのみからなるセットが、存在する。これらのそれぞれをセグメントキューブフィールドと呼ぶ。元のセグメントのフィールドが３つのフィールドｆ、ｇ、及びｈからなっているとすれば、セグメントキューブフィールドは、セット｛ｆ，ｇ｝、｛ｆ，ｈ｝、｛ｇ，ｈ｝、｛ｆ｝、｛ｇ｝、及び｛ｈ｝であり、つまり、セグメントキューブフィールドはセグメンテーションのフィールドのすべての（空でない）サブセットのセットの元である。
【００６１】
セグメントキューブ１１２０のエントリは、セグメントキューブフィールドのそれぞれに関連するそれぞれの異なる値（又は値の組合せ）からなる。一部の実施形態においては、セグメントキューブフィールドのそれぞれの値に関して、その値を含むセグメントの集合が特定され、そのようなセグメントのカウントとともにセグメントキューブ１１２０を記憶するデータ構造にセグメントの位置情報として保有される。別法は、（セグメントセンサスエントリと呼ばれる）セグメントセンサス１０３０のそれぞれの対応するエントリに関して論理和をとることによってＡ−インデックス付けされたデータセット１０１０に追加されたｒｅｃｏｒｄ＿ｉｄに関連する位置情報を組み合わせることである。Ａ−位置情報（すなわち、ｒｅｃｏｒｄ＿ｉｄに関連する位置情報）の代わりにセグメント位置情報（すなわち、ｓｅｇｍｅｎｔ＿ｉｄに関連する位置情報）を用いることは、概して、レコードよりも少ないセグメントが多く存在するのでより効率的である場合があり、したがって、位置情報がより小さくまとまる。一部の実施形態においては、エントリをラベル付けするためにセグメントキューブ１１２０の各エントリにフィールドが追加される。
【００６２】
例において、セグメントキューブフィールドｆは、セグメントｓ１及びｓ２に値「ｆ」を有し、したがって、関連するセグメントの位置情報は、Ｓ［ｓ１，ｓ２］である。これは、セグメントキューブエントリ「ｃ１  ｆ  ｆ  ２  Ｓ［ｓ１，ｓ２］」を形成する。ここで、ｃ１は、セグメントキューブエントリのラベルであり、最初のｆは、セグメントキューブフィールドであり、一方、「ｆ」は、そのセグメントキューブフィールドの値である。この値は、位置情報Ｓ［ｓ１，２］によって特定される２つのセグメントに現れる。あるいは、セグメントキューブフィールドｇが、セグメントｓ１及びｓ４に値「ｑ」を有し、したがって、関連するセグメントの位置情報は、Ｓ［ｓ１，ｓ４］である。セグメントキューブエントリは、「ｃ４  ｇ  ｑ  ２  Ｓ［ｓ１，ｓ４］」である。
【００６３】
セグメント分けされ、組み合わされたセンサス１０４０が、以下の手順によって、セグメントキューブＡ−センサス集合１１５０を形成するためにセグメントキューブ１１２０と組み合わされる（１１４０）。セグメントキューブ１１２０の各エントリは、どのセグメントが（１又は２以上の）関連するセグメントキューブフィールドの値を含むかを特定するセグメント位置情報を含む。参照されるセグメントのそれぞれのセグメントセンサスエントリのセットの論理和が、セグメントキューブフィールドの値を有するセンサスエントリの集合を与える。例えば、ｃ１セグメントキューブエントリは、セグメントの位置情報Ｓ［ｓ１，ｓ２］を有する。ｃ１セグメントの結果が、セグメント分けされた組み合わされたセンサス１０４０のｓ１及びｓ２の結果のセンサスエントリのセットの論理和を実行することによって形成される。ｓ１セグメントは、単一のエントリ「ｄ  ２  Ａ［１，４］」からなり、一方、ｓ２セグメントは、２つのエントリ「ａ  １  Ａ［２］」及び「ｅ  １  Ａ［６］」からなる。これらのエントリの論理和は、３つすべてのエントリのセットであり、セグメントキューブＡ−センサス集合１１５０のｈ−センサスのｃ１−セグメントを形成する。セグメントキューブから、ｃ１−セグメントが、ｆフィールドが値「ｆ」を有するレコードからなることが分かる。したがって、ｈ−センサスのｃ１−セグメントは、フィールドｆが値「ｆ」を有するｈ−センサスセグメントである。これは、図１０のＡ−センサス集合１０２０を検査することによって確認され得る。ｆ−フィールドは、レコードＡ［１，２，４，６］に値「ｆ」を有し、一方、ｈ−フィールドは、レコードＡ［１，４］に値「ｄ」を有し、レコードＡ［２］に「ａ」を有し、レコードＡ［６］に「ｅ」を有する。
【００６４】
値が２つ以上のセグメントに現れる場合、結果に関するＡ−位置情報が、各セグメントのＡ−位置情報の論理和から形成される。これは、示されたセグメントキューブ１１２０には現れないが、セグメント位置情報Ｓ［ｓ２，ｓ４］を有するセグメントキューブエントリが存在するとすれば、ｈ−値「ｅ」がセグメントｓ２とｓ４との両方に現れるので、そのセグメントキューブのセンサスの結果のｈ−値「ｅ」に関するＡ−位置情報は、Ａ［３，６］、すなわち、ｓ２−セグメントからのＡ［６］及びｓ４−セグメントからのＡ［３］の論理和になる。
【００６５】
Ｓ［ｓ２，ｓ４］のようなセグメントキューブエントリは、単にフィールドの組合せではなくセグメントの組合せを取ることによって形成されるより包括的なセグメントキューブのセグメントキューブエントリの事例である。一部の実施形態においては、そのようなセグメントの組合せが許容される。そのようなエントリでは、許容されるセグメントフィールドの値が、セグメントの選択された組合せのそれぞれのセグメントに関連するそれらの値に対応する。この例において、Ｓ［ｓ２，ｓ４］のセグメントキューブエントリは、ｆ−ｇフィールドが値「ｆ  ｐ」か又は「ｍ  ｑ」かのどちらかを有するセグメントに対応する。これは、フィールドとフィールドの値との条件付きの組合せが許容される複雑なセグメンテーションが形成されることを可能にする。
【００６６】
マルチフィールド検証規則が、元のデータセットのレコードのすべてを処理することを必要とせずに、位置情報を有するセンサスから計算され得る。マルチフィールド検証規則は、レコードが妥当であると考えられるために同時に満たされなければならない条件を２又は３以上のフィールドの値に適用する。条件を満たさないレコードは、妥当でないと考えられる。マルチフィールド検証規則の例は、ｆ−値（性別）が「ｆ」である場合、ｇ−値（国外／国内）が「ｐ」でなければならないということである。一部の実施形態において、検証規則は、不当（negative）で表される、つまり、満たされるときにレコードを妥当でないと特定する、２又は３以上のフィールドの値を組み合わせる規則が、与えられる。この例において、妥当でないレコードを特定する規則は、ｆ−値が「ｆ」であり、ｇ−値が「ｐ」でない場合、レコードは妥当でないということである可能性がある。
【００６７】
データ品質レポートが、１又は２以上の検証規則に関する妥当なレコード及び妥当でないレコードのカウントを含み得る。最初のセンサスが実行される前に検証規則が指定される場合、それらの検証規則は、センサスの収集中に検証される場合があり、妥当なレコード及び妥当でないレコードの関連するカウントが、実行される場合がある。しかし、多くの場合、検証規則は、センサスによって明らかにされた値及び値の組合せに応じて最初のセンサスの後に提案される。この場合、センサスをもう一度実行し、新しい検証規則を適用する代わりに、位置情報を有するセンサスが、センサスを再計算することなく妥当なレコード及び妥当でないレコードを特定するために使用され得る。マルチフィールド検証規則がフィールドの値の条件付きの組合せによって表されるので、検証規則の各値に対応するセンサスエントリは、概して、位置情報に対するブール演算を用いて組み合わされ、規則を検査するために使用され得る。妥当でないと考えられるすべての値の組合せは、妥当でないとマークを付けられ、妥当でないレコードの集合にカウントされる場合がある。位置情報は、検証規則の下で妥当であるか又は妥当でないかのどちらかである特定のレコードを特定するためにドリルダウンするためにやはり使用され得る。
【００６８】
検証規則「ｆ−値が『ｆ』である場合、ｇ−値は『ｐ』でなければならない」を考える。Ａ−センサス集合１０２０が、ブール値「f=”f” and g=”p”」を計算するために使用され得る。f=”f”を有するレコードに関するこの位置情報は、Ａ［１，２，４，６］であり、一方、g=”p”を有するレコードに関する位置情報は、Ａ［２，３，６］である。妥当であるレコードは、位置情報の２つのセットの共通部分によって形成され、Ａ［２，６］をもたらす。妥当でないレコードは、ベクトルＡ［１，４］によって位置を特定される妥当でないレコードをもたらすブール値「f=”f” and g!=”p”」によって計算されたレコードである。そして、結果として得られる位置情報は、妥当であるか又は妥当でないかのどちらかのレコードを取得するために使用され得る。例えば、レコード２及び６が、f=”f”及びg=”p”を有する２つのレコードを返すためにＡ−インデックス付けされたファイル１０１０から取得され得る。
【００６９】
上述の方法は、好適なソフトウェアを実行するコンピューティングシステムを用いて実装され得る。例えば、ソフトウェアは、それぞれが少なくとも１つのプロセッサ、（揮発性及び／又は不揮発性メモリ及び／又はストレージ要素を含む）少なくとも１つのデータストレージシステム、（少なくとも１つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも１つの出力デバイス又はポートを用いて出力を与えるための）少なくとも１つのユーザインターフェースを含む（分散、クライアント／サーバ、又はグリッドなどのさまざまなアーキテクチャである場合がある）１又は２以上のプログラムされた又はプログラミング可能なコンピュータシステムで実行される１又は２以上のコンピュータプログラムの手順を含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの１又は２以上のモジュールを含む可能性がある。プログラムのモジュール（例えば、データフローグラフの要素）は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
【００７０】
ソフトウェアは、ＣＤ−ＲＯＭ又は（例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な）その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される（例えば、伝播信号で符号化される）場合がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ（ＦＰＧＡ，field-programmable gate array）若しくは専用の特定用途向け集積回路（ＡＳＩＣ，application-specific integrated circuit）などの専用のハードウェアを用いて実行される場合がある。処理は、ソフトウェアによって指定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される場合がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読まれるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体（例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体）に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの１又は２以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【００７１】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、以下の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順番に依存しない可能性があり、したがって、説明された順番とは異なる順番で実行され得る。
【図１】
0006377622.tif 000002
【図２Ａ】
0006377622.tif 000003
【図２Ｂ】
0006377622.tif 000004
【図３】
0006377622.tif 000005
【図４】
0006377622.tif 000006
【図５】
0006377622.tif 000007
【図６Ａ−６Ｂ】
0006377622.tif 000008
【図７】
0006377622.tif 000009
【図８Ａ】
0006377622.tif 000010
【図８Ｂ】
0006377622.tif 000011
【図９】
0006377622.tif 000012
【図１０】
0006377622.tif 000013
【図１１】
0006377622.tif 000014