(58)【調査した分野】(Int.Cl.,DB名)
処理するステップが、異なる値のペアのそれぞれに関して、前記異なる値のペアが現れるすべてのレコードを特定する、対応する位置情報を、各ペアの第1の値がレコードの1又は2以上のフィールドの第1のセットに現れ、各ペアの第2の値が前記レコードの1又は2以上のフィールドの第2のセットに現れる、異なる値のペアのセットに関して生成するステップをさらに含む、請求項1に記載の方法。
異なる値のペアのセットの異なる値のペアに関する位置情報を生成するステップが、第1の異なる値のセットの第1の異なる値に関する位置情報と、第2の異なる値のセットの第2の異なる値に関する位置情報との共通部分を判定するステップを含む、請求項4に記載の方法。
共通部分を判定するステップが、第1の異なる値に関する位置情報を用いて集合内のレコードの位置を特定するステップと、前記位置を特定されたレコードを用いて第2の異なる値を特定するステップとを含む、請求項5に記載の方法。
各リストのエントリで特定された異なる値の数によって、1又は2以上のフィールドの第1のセットに対応するリスト及び1又は2以上のフィールドの第2のセットに対応するリストを含む複数のリストのグループをソートするステップをさらに含む、請求項1に記載の方法。
集合が、1又は2以上のフィールドの第1のセットを含むフィールドを有するレコードの第1のサブセットと、1又は2以上のフィールドの第2のセットを含むフィールドを有するレコードの第2のサブセットとを含む、請求項1に記載の方法。
処理するステップが、(1)一意のインデックス値が第1のサブセットのすべてのレコードに関連付けられた前記第1のサブセットのレコードのフィールドのインデックス値と、(2)キー値が第2のサブセットのすべてのレコードに関連付けられた前記第2のサブセットのレコードのフィールドのキー値とのマッピングを提供する情報を生成するステップであって、
前記キー値が前記第2のサブセットのレコードを前記第1のサブセットのレコードとリンクする、ステップをさらに含む、請求項13に記載の方法。
少なくとも1つのデータストレージシステムに記憶されたデータをプロファイリングするための、コンピュータ可読ストレージ媒体に記憶されるコンピュータプログラムであって、コンピューティングシステムに請求項1〜15のいずれかに記載の方法を実施させる、前記コンピュータプログラム。
【発明の概要】
【課題を解決するための手段】
【0004】
一態様においては、概して、少なくとも1つのデータストレージシステムに記憶されたデータをプロファイリングするための方法が、データストレージシステムに接続されたインターフェースを介してデータストレージシステムに記憶されたレコードの少なくとも1つの集合にアクセスするステップと、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するステップとを含む。処理するステップは、異なる値から構成される第1のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する、対応する位置情報を、集合のレコードの1又は2以上のフィールドの第1のセットに現れる異なる値の第1のセットに関して生成するステップと、1又は2以上のフィールドの第1のセットに関して、各エントリが異なる値から構成される第1のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成するステップと、1又は2以上のフィールドの第1のセットと異なる集合のレコードの1又は2以上のフィールドの第2のセットに関して、各エントリが1又は2以上のフィールドの第2のセットに現れる異なる値から構成される第2のセットからの異なる値を特定するエントリの対応するリストを生成するステップと、1又は2以上のフィールドの第1のセットに現れる少なくとも1つの値に関する位置情報を用いてレコードの集合の少なくとも1つのレコードの位置を特定すること、及び位置を特定されたレコードの1又は2以上のフィールドの第2のセットに現れる少なくとも1つの値を特定することに少なくとも部分的に基づいて、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するステップとを含む。
【0005】
態様は、以下の特徴のうちの1又は2以上を含み得る。
【0006】
各エントリが、異なる値が1又は2以上のフィールドに現れるレコードの数のカウントをさらに特定する。
【0007】
処理するステップは、特定されたカウントによって各リストのエントリをソートするステップをさらに含む。
【0008】
処理するステップは、第2の異なる値のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する、対応する位置情報を、第2の異なる値のセットに関して生成するステップであって、1又は2以上のフィールドの第2のセットに対応するリストに関して、第2の異なる値のセットの異なる値を特定する各エントリが異なる値に関する位置情報を含む、ステップをさらに含む。
【0009】
処理するステップは、異なる値のペアのそれぞれに関して、異なる値のペアが現れるすべてのレコードを特定する、対応する位置情報を、各ペアの第1の値がレコードの1又は2以上のフィールドの第1のセットに現れ、各ペアの第2の値がレコードの1又は2以上のフィールドの第2のセットに現れる、異なる値のペアのセットに関して生成するステップをさらに含む。
【0010】
異なる値のペアのセットの異なる値のペアに関する位置情報を生成するステップは、第1の異なる値のセットの第1の異なる値に関する位置情報と、第2の異なる値のセットの第2の異なる値に関する位置情報との共通部分(intersection)を判定するステップを含む。
【0011】
共通部分を判定するステップは、第1の異なる値に関する位置情報を用いて集合内のレコードの位置を特定するステップと、位置を特定されたレコードを用いて第2の異なる値を特定するステップとを含む。
【0012】
方法は、各リストのエントリで特定された異なる値の数によって、1又は2以上のフィールドの第1のセットに対応するリスト及び1又は2以上のフィールドの第2のセットに対応するリストを含む複数のリストのグループをソートするステップをさらに含む。
【0013】
処理するステップは、異なる値のペアのそれぞれに関して、異なる値のペアが現れるすべてのレコードを特定する、対応する位置情報を、各ペアの第1の値がレコードの1又は2以上のフィールドの第1のセットに現れ、各ペアの第2の値が1又は2以上のフィールドの第1のセットと異なるレコードの1又は2以上のフィールドの第2のセットに現れる、異なる値のペアのセットに関して生成するステップと、異なる値のペアのセットに関して、各エントリが異なる値のペアのセットの異なる値のペア及び異なる値のペアに関する位置情報を特定するエントリの対応するリストを生成するステップとをさらに含む。
【0014】
位置情報が、異なる値が現れるすべてのレコードに関する一意のインデックス値を特定する。
【0015】
位置情報が、特定の一意のインデックス値を記憶することによってその特定の一意のインデックス値を特定する。
【0016】
位置情報が、位置情報に一意のインデックス値を符号化することによって一意のインデックス値を特定する。
【0017】
一意のインデックス値を符号化することが、一意のインデックス値に対応するベクトル内の位置にビットを記憶することを含む。
【0018】
集合が、1又は2以上のフィールドの第1のセットを含むフィールドを有するレコードの第1のサブセットと、1又は2以上のフィールドの第2のセットを含むフィールドを有するレコードの第2のサブセットとを含む。
【0019】
処理するステップは、(1)一意のインデックス値が第1のサブセットのすべてのレコードに関連付けられた第1のサブセットのレコードのフィールドのインデックス値と、(2)キー値が値の第2のサブセットのすべてのレコードに関連付けられた第2のサブセットのレコードのフィールドのキー値とのマッピングを提供する情報を生成するステップであって、キー値が第2のサブセットのレコードを第1のサブセットのレコードとリンクする、ステップをさらに含む。
【0020】
位置情報は、異なる値が現れるすべてのレコードに関する一意のインデックス値を特定する。
【0021】
別の態様においては、概して、少なくとも1つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピュータプログラムが、コンピュータ可読ストレージ媒体に記憶される。コンピュータプログラムは、コンピューティングシステムに、データストレージシステムに接続されたインターフェースを介してデータストレージシステムに記憶されたレコードの少なくとも1つの集合にアクセスさせ、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理させるための命令を含む。処理することは、異なる値から構成される第1のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する対応する位置情報を、集合のレコードの1又は2以上のフィールドの第1のセットに現れる異なる値の第1のセットに関して生成することと、1又は2以上のフィールドの第1のセットに関して、各エントリが異なる値から構成される第1のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成することと、1又は2以上のフィールドの第1のセットと異なる集合のレコードの1又は2以上のフィールドの第2のセットに関して、各エントリが1又は2以上のフィールドの第2のセットに現れる異なる値から構成される第2のセットからの異なる値を特定するエントリの対応するリストを生成することと、1又は2以上のフィールドの第1のセットに現れる少なくとも1つの値に関する位置情報を用いてレコードの集合の少なくとも1つのレコードの位置を特定すること、及び位置を特定されたレコードの1又は2以上のフィールドの第2のセットに現れる少なくとも1つの値を特定することに少なくとも部分的に基づいて、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成することとを含む。
【0022】
別の態様においては、概して、少なくとも1つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、データストレージシステムに記憶されたレコードの少なくとも1つの集合にアクセスするように構成された、データストレージシステムに接続されたインターフェースと、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するように構成された少なくとも1つのプロセッサとを含む。処理することは、異なる値から構成される第1のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する対応する位置情報を、集合のレコードの1又は2以上のフィールドの第1のセットに現れる異なる値の第1のセットに関して生成することと、1又は2以上のフィールドの第1のセットに関して、各エントリが異なる値から構成される第1のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成することと、1又は2以上のフィールドの第1のセットと異なる集合のレコードの1又は2以上のフィールドの第2のセットに関して、各エントリが1又は2以上のフィールドの第2のセットに現れる異なる値から構成される第2のセットからの異なる値を特定するエントリの対応するリストを生成することと、1又は2以上のフィールドの第1のセットに現れる少なくとも1つの値に関する位置情報を用いてレコードの集合の少なくとも1つのレコードの位置を特定すること、及び位置を特定されたレコードの1又は2以上のフィールドの第2のセットに現れる少なくとも1つの値を特定することに少なくとも部分的に基づいて、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成することとを含む。
【0023】
別の態様においては、概して、少なくとも1つのデータストレージシステムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、データストレージシステムに記憶されたレコードの少なくとも1つの集合にアクセスするための手段と、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するための手段とを含む。処理することは、異なる値から構成される第1のセットのそれぞれの異なる値に関して、異なる値が現れるすべてのレコードを特定する対応する位置情報を、集合のレコードの1又は2以上のフィールドの第1のセットに現れる異なる値の第1のセットに関して生成することと、1又は2以上のフィールドの第1のセットに関して、各エントリが異なる値から構成される第1のセットの異なる値及び異なる値に関する位置情報を特定するエントリの対応するリストを生成することと、1又は2以上のフィールドの第1のセットと異なる集合のレコードの1又は2以上のフィールドの第2のセットに関して、各エントリが1又は2以上のフィールドの第2のセットに現れる異なる値から構成される第2のセットからの異なる値を特定するエントリの対応するリストを生成することと、1又は2以上のフィールドの第1のセットに現れる少なくとも1つの値に関する位置情報を用いてレコードの集合の少なくとも1つのレコードの位置を特定すること、及び位置を特定されたレコードの1又は2以上のフィールドの第2のセットに現れる少なくとも1つの値を特定することに少なくとも部分的に基づいて、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成することとを含む。
【0024】
別の態様においては、概して、少なくとも1つのデータストレージシステムに記憶されたデータをプロファイリングするための方法、コンピュータ可読媒体、及びシステムが、データストレージシステムに接続されたインターフェースを介してデータストレージシステムに記憶されたレコードの少なくとも1つの集合にアクセスするステップと、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するためにレコードの集合を処理するステップとを含む。処理するステップは、2又は3以上のフィールドの第1のセットに関して、それぞれのエントリが集合のレコードの2又は3以上のフィールドの第1のセットに現れる異なる値の組合せ及び異なる値の組合せに関するプロファイル情報を特定するエントリの対応するリストを生成するステップと、2又は3以上のフィールドの第1のセットに現れる値の少なくとも2つの異なる組合せに関するエントリのリストからのプロファイル情報を組み合わせること、及び組み合わせたプロファイル情報に基づいて1又は2以上の指定されたフィールドのうちの少なくとも1つに現れる少なくとも1つの値に関するプロファイル情報を判定することに少なくとも部分的に基づいて、レコードの集合の1又は2以上の指定されたフィールドに現れる値を特徴付ける結果情報を生成するステップとを含む。
【0025】
態様は、以下の利点のうちの1又は2以上を含む可能性がある。
【0026】
一部のデータプロファイリング手順は、データセットのレコードのドメイン(domain)の異なる値のセンサスをまとめることによってデータセットのデータ品質の測定値を計算し、「ドメイン」が、そのデータセットのレコードの1若しくは2以上のフィールド、フィールドの組合せ、又はフィールドの一部分からなる。センサスがドメインに関してまとめられるとき、そのドメインに関する異なる値のセットを数え上げ、それぞれの異なる値を有するレコードの数のカウントを含むセンサスデータが記憶される。例えば、センサスデータは、各値のカウントのエントリが選択されたドメインに現れる異なる値とその異なる値が選択されたドメインに現れるレコードの数のカウントとを含む、選択されたドメインに関する値のカウントのエントリのリストとして構成される可能性がある。一部の実施形態においては、各フィールドが、別々のドメインである。一部の実施形態においては、センサスデータは、単一のデータセットに記憶され、任意で、高速なランダムアクセスのためにフィールドによってインデックス付けされ、一方、その他の実施形態においては、センサスデータは、例えば、各フィールドにつき1つずつ複数のデータセットに記憶される可能性がある。
【0027】
データ品質の測定値は、異なる値の数及び分布、指定された検証規則にしたがって妥当である値又は妥当でない値の数及び分布、1又は2以上のフィールドの別のセットの値が固定されたままにされる(「セグメンテーション(segmentation)」とも呼ばれる)ときの1又は2以上のフィールドの1つのセットの値の数及び分布、並びに2又は3以上のフィールドの値の間の相関(「関数従属性」とも呼ばれる)を含み得る。特定の測定値が計算されることになる度に、好適なセンサスが、データセットのデータを処理することによって取得され得る。しかし、フィールドの組合せに関するデータ品質の測定値を計算するときなどのいくつかの場合には、データの全体が再び処理されることを要求する代わりに、フィールドのその組合せに関する計算は、個々のフィールドに関して既に計算された記憶されたセンサスデータを用いて実行され得る。
【0028】
一部の実施形態において、選択されたドメインに関するセンサスデータは、センサスデータのそれぞれの異なる値に関して、その異なる値が選択されたドメインに現れるあらゆるレコードを特定する位置情報を含む。位置情報は、データの全体に対して一回だけ計算される必要がある。フィールドの組合せを含むデータ品質の測定値、特に、複数のフィールドを組み込むセグメンテーション、相関、又は検証規則を含む測定値のその後の評価は、新しいセンサスデータを計算するためにデータセットのレコードを記憶するソースに戻ることなく位置情報を有する既存のセンサスデータから直接計算され得る。これは、さらなるデータ品質の測定値の計算を大幅に効率的にする。さらに、位置情報を有するセンサスデータは、データ品質の結果へとドリルダウンするため、つまり、データ品質の結果に関連する基礎を成すデータレコード、例えば、妥当でないレコード、又は主キーフィールドの重複するレコードを返すために使用され得る。異なるデータセットのドメインがプロファイリングされている場合、インデックスマップが、異なるデータセットのレコードを関連付けるために結合操作を実行する必要を回避するために使用され得る。
【0029】
本発明のその他の特徴及び利点は、以下の説明及び請求項から明らかになるであろう。
【発明を実施するための形態】
【0031】
図1は、データプロファイリング技術が使用され得る例示的なデータ処理システム100を示す。システム100は、ストレージデバイス、又はオンラインデータストリームへの接続などのデータの1又は2以上のソースを含み得るデータソース102を含み、それらの1又は2以上のソースのそれぞれは、さまざまな記憶形式(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームによって使用されるネイティブの形式)のいずれかでデータを記憶し得る。実行環境104は、プロファイリングモジュール106及び処理モジュール108を含む。実行環境104は、UNIXオペレーティングシステムなどの好適なオペレーティングシステムの制御の下で1又は2以上の多目的コンピュータでホストされる可能性がある。例えば、実行環境104は、ローカルの(例えば、SMPコンピュータなどのマルチプロセッサシステム)、又はローカルに分散された(例えば、クラスタ若しくはMPPとして接続された複数のプロセッサ)、又はリモートの若しくはリモートに分散された(例えば、ローカルエリアネットワーク(LAN,local area network)及び/若しくは広域ネットワーク(WAN,wide-area network)を介して接続された複数のプロセッサ)、又はこれらの任意の組合せのいずれかの複数の中央演算処理装置(CPU,central processing unit)を用いるコンピュータシステムの構成を含むマルチノード並列コンピューティング環境を含み得る。
【0032】
プロファイリングモジュール106は、データソース102からデータを読み、プロファイリングモジュール106及び処理モジュール108がアクセス可能であるプロファイリングデータストア110にプロファイリングサマリ情報を記憶する。例えば、プロファイリングデータストア110は、データソース102のストレージデバイス内に、又は実行環境104内からアクセス可能な別個のデータストレージシステムに実装される場合がある。プロファイリングサマリ情報に基づいて、処理モジュール108は、データをクレンジングすること、データを別のシステムにロードすること、又はデータソース102に記憶されたオブジェクトへのアクセスを管理することを含め、データソース102のデータに対するさまざまな処理タスクを実行することができる。データソース102を提供するストレージデバイスは、実行環境104のローカルにあり、例えば、実行環境104を実行するコンピュータに接続されたストレージ媒体(例えば、ハードドライブ112)に記憶される場合があり、又は実行環境104のリモートにあり、例えば、(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモート接続若しくはサービスを介して実行環境104を実行するコンピュータと通信するリモートシステム(例えば、メインフレーム114)でホストされる場合がある。
【0033】
プロファイリングモジュール106は、データソース102に記憶されたデータを読み、例えば、関数従属性又はセグメンテーションに基づいてデータ品質の測定値を計算するために有用な分析を含むさまざまな種類の分析を効率的に実行することができる。一部の実施形態において、分析は、データソース102に記憶されたデータセットのレコードのそれぞれの個々のフィールドに関するセンサスデータを生成し、そのセンサスデータをプロファイリングデータストア110に記憶することを含む。上述のように、ドメインに現れるそれぞれの異なる値に関するエントリを含む特定のデータセットのレコードの特定のドメインに関するセンサスデータは、異なる値が現れる特定のデータセット内のレコードのそれぞれの位置を(例えば、レコードインデックス値によって)特定する位置情報も含み得る。1つの実施形態においては、関連する値に関するセンサスエントリの生成中に、ベクトルが、関連する値を有するあらゆるレコードの一意レコード識別子と入力される。データセットの元のデータのレコードが一意レコード識別子を持たない場合、例えば、各レコードに順番に番号を割り振ることによってプロファイリング手順の一部としてそのようなレコード識別子を生成し、レコードに追加する。そして、この位置情報は、センサスエントリに含められる場合があり、以下でより詳細に説明されるように、関数従属性又はセグメンテーションに関する計算のためのさらなる組み合わされたセンサスデータの生成で使用される場合がある。
【0034】
位置情報を記憶するためのその他の実施形態が可能であり、それらの実施形態の一部は性能上の利点及び/又は縮減された記憶空間をもたらし得る。例えば、ビットベクトルが、レコード識別子のベクトルの代わりに使用される。ビットベクトルの各ビットが、特定のレコード識別子に対応し、ビットは、対応するレコード識別子を有する関連するレコードが関連する値を有する場合に設定される。ビットベクトルのビットとレコード識別子との間の対応は、明示的であるか又は暗黙的である可能性がある。例えば、ビットを対応するレコード識別子に関連付ける、1対1であるとは限らない明示的なマッピングが存在する場合があり、又は各ビットの位置がレコードの位置の連続した順序付けに対応する暗黙的なマッピングが存在する場合がある。一部の実施形態において、結果として得られるビットベクトルは、ストレージのさらなる節約のために圧縮される。
【0035】
位置情報は、ビットベクトルのベクトルで記憶される場合もある。例えば、ビットベクトルの各ビットは、おそらくは、ビットの位置と、相互参照付きのファイルに記憶されたレコード識別子との間のマッピングによって関連するレコード識別子に対応する。ビットベクトルのベクトルのビットベクトルエントリのベクトルインデックスが、フィールド内のワード数又は(例えば、複数のデータパーティションで並列にセンサスデータを処理するときに)値が現れるデータパーティションなどの補足情報を暗黙的に符号化するために使用される場合がある。明示的な補足情報が、ビットベクトルに関連するか、又はビットベクトルのベクトルのビットベクトルエントリに関連するさらなるフィールドで指定される場合がある。この補足情報は、後で使用するために値を含むレコードのセットを区別するために使用される。
【0036】
図2Aは、データプロファイリングの手順の過程で実行される処理と、データソース102からの1又は2以上のデータセットに対してプロファイリングモジュール106において実行される手順の過程で受信され、生成されるデータの例を示す。
図2Bは、手順に関するフローチャートである。
図2A及び2Bを参照すると、プロファイリングモジュール106が、プロファイリングするデータセット201のそれぞれが各データセットのレコードのそれぞれに関するインデックス値を有することを保証するためのインデックス付け処理200を実行し、インデックス値は、生成される位置情報によって参照され得る各レコードに関する明確に定義された(well-defined)位置を与える。例えば、特定のデータセットに関するインデックス値は、各レコードに、そのレコードのテーブルの行番号、区切られたファイル内の位置、記憶アドレス、主キーの値、又はレコードの任意のその他の一意の属性に基づいて割り振られる(例えば、1から始まり、1ずつインクリメントされる)インクリメントされる整数である場合がある。割り振られたインデックス値は、例えば、データソース102の元のデータセット内の各レコードに関するフィールドとして値を追加することによってインデックス付けされたデータセット203を提供するために各レコードに明示的に追加されるか、又はデータソース102若しくはプロファイリングデータストア110に新しいデータセットとして記憶される場合がある。元のデータセットがインデックスとして使用され得るフィールドを既に含む場合、インデックス付け処理200は、省略されるか、又はインデックスとしてそのフィールドを使用する能力を検証するためにのみ実行される可能性がある。インデックス付け処理200は、以下でより詳細に説明されるように、1つのデータセットに関するインデックスと別のデータセットのインデックスとの間の対応を提供するインデックスマップを生成することを含み得る。
【0037】
プロファイリングモジュール106は、選択された1セットのドメインのそれぞれに関して位置情報を有するセンサスデータを計算するセンサス処理205を実行する。この例において、各ドメインは、単一のフィールドである。したがって、この例において、センサス処理205の結果は、それぞれが特定のデータセットの特定のフィールドに関するセンサスデータ207の複数のセットである。各データセットは、プロファイリングのために指定された1セットのフィールドを有する場合があり、又はデフォルト設定により、各データセットのすべてのフィールドがプロファイリングされる場合がある。その他の例において、ドメインは、フィールドの一部分であるか、複数のフィールド又はフィールドの部分の組合せである場合がある。(「センサス」とも呼ばれる)特定のドメインに関するセンサスデータの各セットは、ドメイン内に現れる異なる値、特定の値が現れたレコードの数のカウント、及びどのレコードに特定の値が現れたかを特定する関連する位置情報を含むエントリのリストを含む。一部の実施形態において、カウントは、必要とされるときに位置情報から導出され得る場合がある(例えば、値が現れたレコードの位置を特定するビットベクトルのビットの合計が、値が現れたレコードの数をもたらす)のでセンサスに明示的に含まれない。一部の実施形態において、プロファイリングモジュール106は、ドメイン内の値の位置を修飾する又は特徴付ける情報などの、位置情報を拡張する追加の情報を蓄積する。
【0038】
プロファイリングモジュール106は、潜在的に、センサスデータ207のセットが生成された後、長い時間が経ってから受信される場合がある、所望のマルチドメインデータプロファイリングの結果を指定する入力(例えば、ユーザ入力)を受信する。その入力により、計算に含まれることになる複数のドメインも(明示的又は暗黙的に)指定される。マルチドメインデータプロファイリングの結果を計算するために、プロファイリングモジュール106は、指定されたドメインのそれぞれのフィールドに関するセンサスの集合209を選択する。1つの種類のマルチドメインデータプロファイリングの結果は、同じレコードの(つまり、同じインデックスの)それぞれのフィールドに現れる値の一意のタプルを指定する「組み合わされた(纏められた)センサス」である。その他の種類のマルチドメインデータプロファイリングの結果は、関数従属性の結果又はセグメンテーションの結果を含み、関数従属性の結果又はセグメンテーションの結果のそれぞれは、以下でより詳細に説明されるように、組み合わされたセンサスの計算から始まる場合がある。
【0039】
任意で、プロファイリングモジュール106は、センサス及びそれぞれのセンサスのセンサスエントリが現在のマルチドメインデータプロファイリングの結果又はその後のマルチドメインプロファイリングの結果の計算をより効率的な順番になるように集合209をソートする場合がある。この例において、それぞれのセンサスは、現れた回数によって降順にエントリが現れるようにソートされ(210)、したがって、最も頻度の高い値が、最初に現れる。加えて、一部の実施形態において、エントリは、現れた回数が同じである別の値よりもデータセット内で先に最初に現れる値がソートされたセンサスにおいて先に現れるように位置情報によってさらに細かくソートされる場合がある。これは、2つの異なる値に関して、一方の値の最初の登場(つまり、小さい方のレコードインデックス)が他方の値の最初の登場とは異なるはずであるので、センサスの値に明確に定義された順序付けを与える。センサスの集合209は、それぞれのセンサスにおける異なる値の数によってやはりソートされ(220)、最も頻度の高い値のカウントによって降順にさらに細かくソートされる。このソートは、(異なる値の数で)より短いセンサスが先に現れ、異なる値の数が同じである2つのセンサスに関しては、最も頻度の高い値がより大きなカウントを有する方のセンサスが先に現れるソートされたセンサスのソートされた集合225をもたらす。関数従属性に対応するマルチドメインデータプロファイリングの結果に関しては、異なる値の数が比較的少ないフィールドの間に関数従属性がより存在しやすい。異なる値の数が増えるにつれて、フィールドは、主キーなどの一意属性、又はその他の値と疑似相関を有する傾向がある、重複する値の数が少ない属性を表す可能性がより高くなる。より短いセンサスをより長いセンサスよりも前に順序付けすることによって、関数従属性の分析に関連性がある可能性がより高いフィールドを、より速く処理する。場合によっては、ソートされた集合225のセンサスのすべてのエントリのすべてを処理し続けることなく結果が計算され得る停止条件を認識することさえあり得る可能性がある。関数従属性以外のマルチドメインデータプロファイリングの結果に関しては、結果を計算するためにソートされた集合225全体を処理する必要がある場合があり、その場合、順序付けは必要ない場合がある。この例においては、順序付け210が、順序付け220の前に行われるが、その他の例においては、順序付け220が、順序付け210の前に行われる場合がある。
【0040】
プロファイリングモジュール106は、ソートされた集合225のセンサスエントリを逐次的に読み込み、その他のセンサスエントリからの情報と組み合わせ、組み合わされたセンサス240をもたらす、組み合わされたセンサスの生成処理230を実行する。異なるセンサスエントリからの情報を効率的に組み合わせるために、プロファイリングモジュール106は、以下でより詳細に説明されるように、位置情報を使用して、組み合わされたセンサス240の生成に関連性があるインデックス付けされたデータセット203からのレコードの位置を特定する。組み合わされたセンサスの生成処理230が複数回、実行され得る。例えば、組み合わされたセンサス240のタプルが3つ以上のフィールドからの値を含む場合、そのタプルに関して組み合わされたセンサス240のセンサスエントリを構築するとき、プロファイリングモジュール106は、最初の実行の際に、フィールドのうちの2つに関する一対(pairwise)の組み合わせを実行する場合があり、その後の実行の際に、センサスエントリが、既に形成された組み合わされたセンサス240のバージョンからの任意のエントリと組み合わされる場合がある。
【0041】
図3を参照すると、プロファイリング手順の例が、示されている。A−元のデータセット300が、A−インデックス付けされたデータセット310を提供するために(インデックス付け処理200において)インデックス付けされる。A−元のデータセット300は、3つの示された列に対応する3つのフィールドを有し、6つの示された行に対応する6つのレコードを有し、データセットの第1のレコードは、3つのフィールドに関して値「d」、「q」、「d8」をそれぞれ有する。(「1」から始まる)増加する整数値を有するサロゲートキーフィールドが、A−インデックス付けされたデータセット310の各レコードを一意に特定するための位置インデックスとしてレコードの初めに追加されている。この例において、プロファイリングモジュール106は、A−元のデータセット300の初めの2つのフィールドに関してセンサスのソートしたA−センサス集合320を計算する。第1のフィールド(すなわち、第1の列)は、「g」と名付けられ、第2のフィールド(すなわち、第2の列)は、「f」と名付けられ、第3のフィールドの名前は、この例においてはプロファイリングされていないのでこの例においては無関係である。したがって、A−センサス集合に2つのセンサス、gフィールドに関するセンサス(「g−センサス」と呼ばれる)及びfフィールドに関するセンサス(「f−センサス」と呼ばれる)が存在する。A−センサス集合320のそれぞれのセンサスは、エントリのソートされたリストを含み、各エントリは、値、その値が現れた数のカウント、及びその値に関する位置情報を示すレコードインデックスのベクトルを含む。したがって、f−センサスに関してスペースで区切られた文字列「q 3 A[1,4,5]」によって示されるこの例の第1のセンサスエントリは、値「q」がA−元のデータセット300に3回現れ、ベクトル「A[1,4,5]」によって示されるようにA−インデックス付けされたデータセット310のレコード1、4、及び5に現れることを示す。それぞれのフィールドに関するセンサスが、値のカウントによって降順にソートされ、位置情報ベクトルの第1のインデックスによって昇順にさらに細かくソートされる。A−センサス集合320のセンサスのセットは、それぞれのセンサスにおける異なる値の数でさらにソートされ、最も短いセンサスを最初に配置し、これは、この例においては、f−フィールドに関するセンサスをg−フィールドに関するセンサスの前に置く。
【0042】
プロファイリングモジュール106は、組み合わされたセンサス生成処理230を実行して組み合わされたセンサス330を計算する。この例において、組み合わされたセンサスのタプルは、値のペア(組合せ)である。スペースで区切られた文字列「g f d q 2 3 2 A[1,4]」によって示されるこの例の組み合わされたセンサスの第1のエントリは、ペアのうちの第1のフィールドが「g」であり、ペアのうちの第2のフィールドが「f」であり、第1のフィールドの値が「d」であり、第2のフィールドの値が「q」であり、第1の値が2回現れ、第2の値が3回現れ、第1のフィールドの第1の値(すなわち、g−値「d」)と第2のフィールドの第2の値(すなわち、f−値「q」)との両方を含むレコードの数が2であり、ベクトル「A[1,4]」によって示されるようにA−インデックス付けされたデータセット310のこれらのレコードが1及び4であることを示す。そして、組み合わされたセンサス330が、以下でより詳細に説明されるように、さまざまなデータプロファイリングの分析結果を計算するために使用され得る。
【0043】
一部の実施形態においては、上述の例に関する関数従属性の結果340などの組み合わされたセンサスに基づく結果が、ユーザインターフェースでグラフィカルに表示され得る。それぞれの円は、フィールドのラベル「g」及び「f」の下に異なる値を含み、値のカウントが、円の横(g−フィールドに関しては左、f−フィールドに関しては右)に示される。円の間のそれぞれの有向辺は、それぞれの端の値のペア(組合せ)を示し、辺の上のカウントは、ペアを共有するレコードの数である。さまざまなカウントから、個々の値及びフィールドのペアの相関の評価が、プロファイリングモジュール106によって決定され、表示され得る。この例において、プロファイリングモジュール106は、「gがfを決定する」という評価を表示する。
【0044】
一部の実施形態において、組み合わされたセンサスの生成処理230は、フィールドに関する個々のセンサスに現れる異なる値のデカルト積を形成する必要なしに2つのフィールドに一緒に(つまり、同じレコードに)現れる値の異なるペアの組み合わされたセンサスを生成することができる。そのようなデカルト積は、例えば、そのようなデカルト積から形成された値のすべてのペアに関する位置情報を取得し、両方の値を共有するレコードの位置を特定するために関連する位置情報の共通部分(intersection)を計算することによってそのような組み合わされたセンサスを計算するために使用され得る。しかし、完全なデカルト積を使用するこのプロセスは、多くのペアがそれらのペアの位置情報に重なりがない可能性があるので非効率的である場合がある。
図4のフローチャート及び
図5の概略図は、ペアの位置情報の重なりを確かに共有するペアを効率的に特定し、組み合わせ、共有しないペアを回避することが可能な、組み合わされたセンサスの生成処理230で使用され得る手順を示す。この例において、位置情報は、レコードインデックスのベクトルとして示され、説明されるが、ベクトルに対する計算は、位置情報のその他の表現を用いて実行される場合がある。例えば、f−値の位置情報「f−A[]」及びg−値の位置情報「g−A[]」に関して、f−A[]及びg−A[]の共通部分は、それぞれのビットベクトルに対する論理積(AND)演算を実行することによって、両方のベクトルがビットベクトルとして表されるようにして実行され得る。
【0045】
図4のフローチャートのステップは、フィールドf及びgに関して、概略を上述したように、A−センサス集合320が準備された後に開始され、第1のセンサス(この例においては、f−センサス)のソートされたエントリに対して繰り返し実行される。プロファイリングモジュール106が、f−センサスの次のセンサスエントリ(つまり、第1の繰り返しのための第1のセンサスエントリ)を読み込む(400)。現在のエントリのf−値に関する関連する位置情報から、その値が現れる第1のレコードが、そのレコードのg−フィールドに存在する対にされたg−値を見つけるためにA−インデックス付けされたデータセット310において検査される(410)。プロファイリングモジュール106が、そのg−値に関連するg−センサスから位置情報を取得する(420)。結果として得られるg−値の位置情報(g−A[])が、ペアを共有するすべてのレコードを特定する情報(f-A[] AND g-A[])を記憶し(430)、現在のf−値を有するがg−値は異なるレコードの残りのセットに関して位置情報を更新する情報(f-A[] = f-A[] AND (NOT g-A[]))を記憶する(440)ためにf−値の位置情報(f−A[])と組み合わされる。ペアにされた値が、組み合わされたセンサス330に書き込まれる(450)。残りのセットに関する位置情報が、その位置情報が空であるかどうかを判定するために検査される(460)。その位置情報が空でない場合、残りのセットの第1のレコードが、A−インデックス付けされたデータセット310から現在のf−値と対にされた別のg−値を見つけるために検査される(410)。残りのセットに関する位置情報が空である場合、f−センサスからの次のセンサスエントリが、別の繰り返しを実行するために読み込まれる(400)。f−センサスのエントリのすべてが手順の完全な繰り返しで読み込まれ、処理された後、組み合わされたセンサス330は、完成する。
【0046】
図5は、
図4の手順の例を示し、矢印は、部分的に完成された組み合わされたセンサス330’が存在するところまでプロファイリングモジュール106によって実行された一連の処理を示す。そして今度は、以前の整列に基づいて最も頻度の高いf−値であるf−値「q」を有する第1のエントリから開始し、A−センサス集合320内のf−センサスのセンサスエントリが、考慮(調査)される。位置情報ベクトルの第1の要素「1」が、A−インデックス付けされたデータセット310の対応するレコードのg−フィールドの値を検査するために使用される(522)。この例においては、対応するレコード(すなわち、インデックス位置1のレコード)で、g−フィールドは、値「d」を有する。値「d」に関するg−センサスエントリが、位置情報ベクトルによって示される値「d」を共有するレコードの完全なセットを取得するために検査される(524)。f−値「q」に関する位置情報ベクトルが、レコードの2つのセット、すなわち、値「q」及び「d」の対を有するレコードのセット527(g AND f)と、値「q」を有するが「d」は持たないレコードのセット528(f AND NOT g)とに関する位置情報を形成するためにg−値「d」に関する位置情報と比較される(526)。共有された値に関する位置情報が、組み合わされたセンサス330’の適切なエントリにベクトルとして記憶される(529)。この例において、組み合わされたセンサスのエントリは、各値に関するソース、値及びそれらの値のセンサスのカウント、両方の値を含むすべてのレコードに関する位置情報、並びにそのようなレコードの数からなる。エントリ「g f d q 2 3 2 A[1,4]」は、g−値「d」が2回現れ、f−値「q」が3回現れ、位置インデックス1及び4に対応する、両方の値を共有する2つのレコードが存在することを示す。
【0047】
プロファイリングモジュール106は、値「q」を有するレコードの残りのセット528を処理する。位置情報ベクトルの第1の(及び唯一の)要素「5」が、A−インデックス付けされたデータセット310の対応するレコードのg−フィールドの値を検査するために使用され(540)、検査した結果として、g−フィールドに関する値「b」が得られる。値「b」のg−センサスエントリが、セット528と比較される位置情報A[5]を取得するために検査される(544)。これらのセットの共通部分が計算され(546)、組み合わされたセンサス330’の適切なエントリに記憶される。セットの間の差は、この場合は空であるが、空でなかったならば、手順が、f−フィールドのこの特定の値「q」と対にされたg−フィールドのさらなる値を見つけるために繰り返されることになる。f−値「q」を有するレコードのセットが検査し尽くされたとき、手順はf−センサスの次のエントリに移り、プロセスが繰り返される。
【0048】
図6A及び6Bを参照すると、プロファイリングモジュール106は、フィールドのペアの値の相関(「関数従属性」)を判定するための手順を実行し、関数従属性の結果を定量化する相関の割合(correlation fraction)を含めるように組み合わされたセンサスを拡張することができる。潜在的な関数従属性に関して分析されるフィールドのペアの組み合わされたセンサスが、上述のように、フィールドに関する個々のセンサスに基づいて計算される(600)。組み合わされたセンサスのエントリに含まれる値のそれぞれのペアのそれぞれの値に関して、その値を有するレコードの数(「値のカウント」)に対する値のその対を有するレコードの数(「対のカウント」)の比を表す「相関の割合」が、計算される(610)。プロファイリングモジュール106は、拡張した組み合わされたセンサス615を生成するためにエントリに相関の割合(この例においては「1」及び「2/3」)を記憶する。例えば、組み合わされたセンサスエントリ「g f d q 2 3 2 A[1,4]」は、フィールド「g」の値「d」を有する2つのレコード、フィールド「f」の値「q」を有する3つのレコード、及びレコードのインデックス1及び4によってA−インデックス付けされたデータセット310内で位置を特定される値の対「d q」を有する2つのレコードが存在することを示す。(「q」とペアにされた(組み合わされた))g−値「d」に関する相関の割合は、2/2=1であり、一方、(「d」とペアにされた(組み合わされた))f−値「q」に関する相関の割合は、2/3である。
【0049】
それぞれの値に関する相関の割合が、どの値が閾値で相互に関連付けられるかを判定する(620)ためにその閾値と比較される。例えば、相関の割合が閾値0.95を超える場合、100個の事例のうちの5つ未満が、現在の値とは異なるペアにされた値を有する。ここでは、「d」が0.95の閾値で「q」に相互に関連付けられるが、その逆には相互に関連付けられず、つまり、g−値が「d」である場合、対応するf−値は「q」であるに違いないが、f−値が「q」である場合は、対応するg−値が「d」である確率は2/3しかない。
【0050】
所与の閾値で相互に関連付けられる(フィールドのうちの1つの)値に関連付けられるレコードの総数がカウントされ(630)、所与の閾値で相互に関連付けられるデータセット全体におけるレコードの割合を判定する(640)ためにレコードの総数によって割られる。この割合が第2のフィールドの相関の閾値を超える場合、フィールド全体が、他方のフィールドに相互に関連付けられると言われる。一部の実施形態において、フィールドの相関の決定に寄与するレコードのカウントは、値の事例の数が閾値未満であるときのレコードのカウントを除外する場合があり、又はそのような値に基づく相関を潜在的に疑わしいものとして報告する場合がある。これは、例えば、値の相手の値に取るに足りないくらいに相互に関連付けられるその値の単一の事例のみが存在するときのように、事例の数が少なすぎる場合、相関は偶然であるか又は取るに足りない可能性があるからである。
【0051】
フィールドの相関の計算が、逆方向に相互に関連付けられるレコードの割合を決定するために他方のフィールドを用いて繰り返される。この例においては、g−値のすべてがf−値に個々に相互に関連付けられ、したがって、相互に関連付けられるレコードの総数は6であり、レコードの総数は6であり、レコードのうちの相互に関連付けられる割合は6/6=1である。結論は、「g」が「f」を決定するということであり、つまり、g−値の知識が、(このフィールドの相関の閾値で)対応するf−値の知識を保証する。対照的に、f−値は相関の閾値を超えず、したがって、f−フィールドはg−フィールドと相互に関連付けられない。
【0052】
図7を参照すると、関数従属性の結果340からA−問い合わせ結果710へのエッジ(edge)のドリルダウン(700)が、レコードに現れる値のペアを示す表示された結果340のエッジによって表される、それらのレコードに関連するより詳細な情報を示すために(例えば、グラフィカルユーザインターフェースでの表示された結果340とのユーザインタラクションに応じて)実行される。エッジによって現れる値のペア「d q」が、そのペアに関する位置情報を取得するために、(現れる頻度によってソートされ、位置情報の第1のインデックスによってさらに細かくソートされ、組み合わされたセンサス330と同じである)組み合わされたセンサス330’’内で検査される(725)。そして、位置情報が、A−インデックス付けされたデータセット310から関連するレコードを取得する(735)ために使用される。これらのレコードが、A−問い合わせ結果710で表示される(745)。
【0053】
前例においては、同じデータセットの2つのフィールド(g及びf)の相関が計算された。キーフィールドによってリンクされた異なるデータセットの2つのフィールドの相関の計算が、
図8A及び8Bに示される。A−元のデータセット800及びB−元のデータセット820は、3つのフィールドをそれぞれ有し、共通のキーフィールドである1つのフィールドをそれぞれ有する。共通のキーフィールドのキー値は、必ずしも一意でない。しかし、キーフィールドのキー値は、それぞれのキーフィールドの同じキー値によって2つのデータセットの対応するレコードを関連付けるようにする。A−元のデータセット800の各レコードの一意識別子(A−record_idと呼ばれる)が、A−インデックス付けされたデータセット810を生成するために各レコードにフィールドとして追加される。同様に、B−元のデータセット820の各レコードの一意識別子(B−record_idと呼ばれる)が、B−インデックス付けされたデータセット830を生成するためにフィールドとして追加される。インデックスマップ840が、各A−record_idを同じレコードのキーフィールドのキー値と関連付けるために使用される。したがって、インデックスマップ840は、A−インデックス付けされたデータセット810の最初の2つの列のコピーである。インデックスマップ840は、例えば、プロファイリングデータストア110内のファイルにA−インデックス付けされたデータセット810とは分けて記憶される場合がある。
【0054】
この例において、キーフィールドは、(
図8AにおいてA−元のデータセット800の第1の列に示された)A−元のデータセット800の主キーであり、(
図8AにおいてB−元のデータセット820の第2の列に示された)B−元のデータセット820の外部キーである。A−record_idの値は、そのキーフィールドが主キーであるので(そのキーフィールドに対するB−record_idの値の代わりに)そのキーフィールドへのマッピングのために選択され得る。しかし、データセットは、各データセットのキーフィールドとして指定された何らかのフィールドが存在する限り、そのような主キー/外部キーの関係を有することを必ずしも要求されない。インデックスマップ840は、両方のデータセットが2つの異なるレコードに繰り返されたキーフィールドの値を有するこの例のように、A−データセットに重複した主キーの値が存在する可能性があるので有用である。インデックスマップ840を用いて、プロファイリングモジュール106は、両方のデータセットが位置情報を指定するための参照の共通の枠組みを持つように、A−record_idの値を含む新しいフィールドを有するB−インデックス付けされたデータセット830の新しいバージョンを生成する。そのようにするために、プロファイリングモジュール106は、B−インデックス付けされたデータセット830のキーフィールドの値をインデックスマップ840のキー値と比較して、対応するA−record_idの値との任意の数の一致を見つける。この例においては、(外部キーの値「k4」を有する)B−インデックス付けされたデータセット830からの1つのレコードが、2つの異なるA−record_idの値にマッチングされ(845)、プロファイリングモジュール106が、B−インデックス付けされたデータセット830のレコードにA−record_idを付けるときに2つの対応するレコード(インデックスとして「A4」が追加された1つのレコード及びインデックスとして「A6」が追加されたもう1つのレコード)を追加して(847)B/A−インデックス付けされたデータセット850を生成する。B−インデックス付けされたデータセット830のその他のレコードは、インデックスマップ840の単一のA−record_idの値にマッチングされ、したがって、B/A−インデックス付けされたデータセット850に追加されるそれぞれの単一のレコードにそれぞれ対応し、対応するA−record_idの値がインデックスとして追加される。
【0055】
ここで
図8Bを参照すると、A−センサス860が、(第1のフィールドの)A−record_idの値に関連して位置情報が参照されるようにして、A−インデックス付けされたデータセット810の第3のフィールドに関して計算され、B−センサス870が、インデックスマップ840を用いて追加された(第1のフィールドの)A−record_idの値に関連して位置情報がやはり参照されるようにして、B/A−インデックス付けされたデータセット850の第5のフィールドに関して計算される。2つのセンサスの位置情報が、(A−センサスからのフィールドが「A」とラベル付けされ、B−センサスからのフィールドが「B」とラベル付けされる)センサスによって示されるフィールドのペアに関する組み合わされたセンサス880を計算するために上述のように組み合わされ(875)、組み合わされたセンサス880は、続いて、AフィールドとBフィールドとが相互に関連付けられないと結論づける関数従属性の結果890を表示するために使用される。
【0056】
図9を参照すると、関数従属性の結果890からのノードのドリルダウン(900)が、ノードで表示された値によって表されるレコードに関連するより詳細な情報を示すために(例えば、グラフィカルユーザインターフェースでの表示された結果890とのユーザインタラクションに応じて)実行される。Bフィールドからの「p」値を表示するノードの選択に応じて、A−元のデータセット800とB−元のデータセット820との両方からの、そのノードに対応するレコードが取得され、ノード検索結果910で表示される。ドリルダウンは、まず、組み合わされたセンサス880において「p」値を検査(検索)し(915)、(Bフィールドに関して「p」を含む)それぞれの一致するエントリを見つけることによって達成される。これらのエントリに関する位置情報が、論理和(union)を用いて(A−record_idの値に関連する)位置情報A[1,3,4,6]を生成して組み合わされる。そして、これらの位置のそれぞれが、それらの位置の任意のレコードを取得するためにA−インデックス付けされたデータセット810とB/A−インデックス付けされたデータセット850との両方で検査される(925)。A−インデックス付けされたデータセット810の取得されたレコードは、ノード検索結果910に表示され(935)、「A」とラベル付けされる。B−元のデータセット820の取得されたレコードは、同じB−record_idの値を共有するすべてのレコードを見つけるために比較され、共有するすべてのレコードは、ノード検索結果910でそれらのレコードのうちの1つだけが表示されるように重複を排除される(945)。この例において、A−record_idの値A4及びA6を有するレコードは、同じB−record_idの値B2を有する。A−元のデータセット800からのレコードの重複するキーフィールドの値は、単一のB−元のデータセット820のレコードに対応する複数のA−元のデータセット800のレコードを持つことによってノード検索結果910に示される。
【0057】
図10に、セグメンテーションを用いるセンサスの計算の例が、示される。A−元のデータセット1000は、3つのフィールドf、g、及びhを有する。A−元のデータセット1000の各レコードの一意識別子(record_idと呼ばれる)が、A−インデックス付けされたデータセット1010を生成するために各レコードにフィールドとして追加される。3つのフィールドのそれぞれに関する位置情報を有するソートされたセンサスの集合1020が、計算される。一部の実施形態において、システム100は、f−フィールドとg−フィールドとの組合せを指定された値を含むように制限することによって与えられるセグメント(つまり、データセットのすべてのレコードよりも少ないレコードのサブセット)のh−フィールドのデータプロファイル(すなわち、データの分布)はどうであるか?などの業務上の疑問(business question)に答えるためにユーザが問い合わせ(検索)することを可能にし得る。例えば、f−フィールドが、f−フィールドに関するあり得る値「f」又は「m」をそれぞれ有するレコードによって性別を示す場合があり、一方、g−フィールドは、g−フィールドに関するあり得る値「p」又は「q」をそれぞれ有するレコードによって「国外(foreign)」又は「国内(domestic)」を示す場合がある。f−及びg−フィールドでセグメント分けされた(例えば、センサスによって示される)データプロファイルは、「国外 男性」又は「国内 女性」に関してh−フィールドの最も頻度の高い値は何であるか?のような疑問に答えることを容易にすることができる。
【0058】
集合1020は、A−元のデータセット1000のレコードのすべてを処理することを必要とせずに、セグメント分けされたプロファイルを計算するために使用され得る。セグメントセンサス1030が、f−フィールド及びg−フィールドのセンサスと、組み合わされたセンサスを計算するための上述の手順とを用いて、組み合わされたセンサスとして構築され得る。一部の実施形態において、セグメントセンサス1030の各エントリは、そのエントリに関連するセグメントの都合のよい識別のための(segment_idと呼ばれる)一意の値を与えられる。組み合わされたセンサスを計算するための手順が、セグメント分けされた組み合わされたセンサス1040を形成するために再び適用され、セグメント分けされた組み合わされたセンサス1040は、A−センサス集合1020のh−フィールドのセンサスとセグメントセンサス1030との組合せである。例えば、セグメント分けされた組み合わされたセンサス1040のh−s1エントリは、初めにセグメントセンサス1030のs1エントリを取得し、関連する位置情報A[1,4]を読み込むことによって計算され得る。位置ベクトルの第1の要素「1」が、h−フィールドの値「d」及び対応する位置情報A[1,4]を見つけるためにA−センサス集合1020のh−フィールドに関するセンサスで検査される。セグメントセンサス1030のs1とラベル付けされたエントリの位置情報A[1,4]が、h−センサスの「d」エントリの位置情報A[1,4]と比較される。これらの2つのエントリの間で位置情報の要素のすべてが一致するので、s1−セグメントに関する結果として得られる組み合わされたセンサスエントリのベクトルは、「d 2 A[1,4]」であることが分かり、s1−セグメントに残っている位置エントリは存在しない。これは、s1−セグメントが単一のh−フィールドの値「d」のみからなることを示す。h−センサスのレコードと組み合わせてその他のセグメントの値を用いて組み合わされたセンサスの構築を続けることは、セグメント分けされた組み合わされたセンサス1040を埋める。
【0059】
図11に、セグメントキューブの計算の例が、示される。セグメンテーションが
図10の例と同様に複数のフィールドの値の組合せに基づくとき、セグメント分けされたセンサスの結果がより少ないフィールドのそれぞれの組合せを含むセグメントに関するセンサスの結果へと再集約されるセグメントキューブが構築され得る。
図10の例に関して、計算されたセグメント分けされた組み合わされたセンサス1040は、「国外 男性」(つまり、セグメントs4)及び「国内 女性」(つまり、セグメントs1)のようなセグメントを表す。ユーザは、セグメント「国外」又は「男性」に関するプロファイルを要求し得る。新しいセグメントに関して直接に
図10の計算を繰り返すために戻る代わりに、前のセグメンテーションの結果が、以下のように「セグメントキューブ」のこれらのその他のエントリを計算するためにh−センサスと組み合わされ得る。
【0060】
セグメントキューブ1020を形成するために、まず、元のセグメントのフィールドのあらゆるサブセットが形成される。現在の例において、完全なセグメンテーションは、2つのセグメンテーションのフィールドf及びgに基づく。2つのフィールドのこのセットの2つのサブセット、すなわち、fのみからなるセット及びgのみからなるセットが、存在する。これらのそれぞれをセグメントキューブフィールドと呼ぶ。元のセグメントのフィールドが3つのフィールドf、g、及びhからなっているとすれば、セグメントキューブフィールドは、セット{f,g}、{f,h}、{g,h}、{f}、{g}、及び{h}であり、つまり、セグメントキューブフィールドはセグメンテーションのフィールドのすべての(空でない)サブセットのセットの元である。
【0061】
セグメントキューブ1120のエントリは、セグメントキューブフィールドのそれぞれに関連するそれぞれの異なる値(又は値の組合せ)からなる。一部の実施形態においては、セグメントキューブフィールドのそれぞれの値に関して、その値を含むセグメントの集合が特定され、そのようなセグメントのカウントとともにセグメントキューブ1120を記憶するデータ構造にセグメントの位置情報として保有される。別法は、(セグメントセンサスエントリと呼ばれる)セグメントセンサス1030のそれぞれの対応するエントリに関して論理和をとることによってA−インデックス付けされたデータセット1010に追加されたrecord_idに関連する位置情報を組み合わせることである。A−位置情報(すなわち、record_idに関連する位置情報)の代わりにセグメント位置情報(すなわち、segment_idに関連する位置情報)を用いることは、概して、レコードよりも少ないセグメントが多く存在するのでより効率的である場合があり、したがって、位置情報がより小さくまとまる。一部の実施形態においては、エントリをラベル付けするためにセグメントキューブ1120の各エントリにフィールドが追加される。
【0062】
例において、セグメントキューブフィールドfは、セグメントs1及びs2に値「f」を有し、したがって、関連するセグメントの位置情報は、S[s1,s2]である。これは、セグメントキューブエントリ「c1 f f 2 S[s1,s2]」を形成する。ここで、c1は、セグメントキューブエントリのラベルであり、最初のfは、セグメントキューブフィールドであり、一方、「f」は、そのセグメントキューブフィールドの値である。この値は、位置情報S[s1,2]によって特定される2つのセグメントに現れる。あるいは、セグメントキューブフィールドgが、セグメントs1及びs4に値「q」を有し、したがって、関連するセグメントの位置情報は、S[s1,s4]である。セグメントキューブエントリは、「c4 g q 2 S[s1,s4]」である。
【0063】
セグメント分けされ、組み合わされたセンサス1040が、以下の手順によって、セグメントキューブA−センサス集合1150を形成するためにセグメントキューブ1120と組み合わされる(1140)。セグメントキューブ1120の各エントリは、どのセグメントが(1又は2以上の)関連するセグメントキューブフィールドの値を含むかを特定するセグメント位置情報を含む。参照されるセグメントのそれぞれのセグメントセンサスエントリのセットの論理和が、セグメントキューブフィールドの値を有するセンサスエントリの集合を与える。例えば、c1セグメントキューブエントリは、セグメントの位置情報S[s1,s2]を有する。c1セグメントの結果が、セグメント分けされた組み合わされたセンサス1040のs1及びs2の結果のセンサスエントリのセットの論理和を実行することによって形成される。s1セグメントは、単一のエントリ「d 2 A[1,4]」からなり、一方、s2セグメントは、2つのエントリ「a 1 A[2]」及び「e 1 A[6]」からなる。これらのエントリの論理和は、3つすべてのエントリのセットであり、セグメントキューブA−センサス集合1150のh−センサスのc1−セグメントを形成する。セグメントキューブから、c1−セグメントが、fフィールドが値「f」を有するレコードからなることが分かる。したがって、h−センサスのc1−セグメントは、フィールドfが値「f」を有するh−センサスセグメントである。これは、
図10のA−センサス集合1020を検査することによって確認され得る。f−フィールドは、レコードA[1,2,4,6]に値「f」を有し、一方、h−フィールドは、レコードA[1,4]に値「d」を有し、レコードA[2]に「a」を有し、レコードA[6]に「e」を有する。
【0064】
値が2つ以上のセグメントに現れる場合、結果に関するA−位置情報が、各セグメントのA−位置情報の論理和から形成される。これは、示されたセグメントキューブ1120には現れないが、セグメント位置情報S[s2,s4]を有するセグメントキューブエントリが存在するとすれば、h−値「e」がセグメントs2とs4との両方に現れるので、そのセグメントキューブのセンサスの結果のh−値「e」に関するA−位置情報は、A[3,6]、すなわち、s2−セグメントからのA[6]及びs4−セグメントからのA[3]の論理和になる。
【0065】
S[s2,s4]のようなセグメントキューブエントリは、単にフィールドの組合せではなくセグメントの組合せを取ることによって形成されるより包括的なセグメントキューブのセグメントキューブエントリの事例である。一部の実施形態においては、そのようなセグメントの組合せが許容される。そのようなエントリでは、許容されるセグメントフィールドの値が、セグメントの選択された組合せのそれぞれのセグメントに関連するそれらの値に対応する。この例において、S[s2,s4]のセグメントキューブエントリは、f−gフィールドが値「f p」か又は「m q」かのどちらかを有するセグメントに対応する。これは、フィールドとフィールドの値との条件付きの組合せが許容される複雑なセグメンテーションが形成されることを可能にする。
【0066】
マルチフィールド検証規則が、元のデータセットのレコードのすべてを処理することを必要とせずに、位置情報を有するセンサスから計算され得る。マルチフィールド検証規則は、レコードが妥当であると考えられるために同時に満たされなければならない条件を2又は3以上のフィールドの値に適用する。条件を満たさないレコードは、妥当でないと考えられる。マルチフィールド検証規則の例は、f−値(性別)が「f」である場合、g−値(国外/国内)が「p」でなければならないということである。一部の実施形態において、検証規則は、不当(negative)で表される、つまり、満たされるときにレコードを妥当でないと特定する、2又は3以上のフィールドの値を組み合わせる規則が、与えられる。この例において、妥当でないレコードを特定する規則は、f−値が「f」であり、g−値が「p」でない場合、レコードは妥当でないということである可能性がある。
【0067】
データ品質レポートが、1又は2以上の検証規則に関する妥当なレコード及び妥当でないレコードのカウントを含み得る。最初のセンサスが実行される前に検証規則が指定される場合、それらの検証規則は、センサスの収集中に検証される場合があり、妥当なレコード及び妥当でないレコードの関連するカウントが、実行される場合がある。しかし、多くの場合、検証規則は、センサスによって明らかにされた値及び値の組合せに応じて最初のセンサスの後に提案される。この場合、センサスをもう一度実行し、新しい検証規則を適用する代わりに、位置情報を有するセンサスが、センサスを再計算することなく妥当なレコード及び妥当でないレコードを特定するために使用され得る。マルチフィールド検証規則がフィールドの値の条件付きの組合せによって表されるので、検証規則の各値に対応するセンサスエントリは、概して、位置情報に対するブール演算を用いて組み合わされ、規則を検査するために使用され得る。妥当でないと考えられるすべての値の組合せは、妥当でないとマークを付けられ、妥当でないレコードの集合にカウントされる場合がある。位置情報は、検証規則の下で妥当であるか又は妥当でないかのどちらかである特定のレコードを特定するためにドリルダウンするためにやはり使用され得る。
【0068】
検証規則「f−値が『f』である場合、g−値は『p』でなければならない」を考える。A−センサス集合1020が、ブール値「f=”f” and g=”p”」を計算するために使用され得る。f=”f”を有するレコードに関するこの位置情報は、A[1,2,4,6]であり、一方、g=”p”を有するレコードに関する位置情報は、A[2,3,6]である。妥当であるレコードは、位置情報の2つのセットの共通部分によって形成され、A[2,6]をもたらす。妥当でないレコードは、ベクトルA[1,4]によって位置を特定される妥当でないレコードをもたらすブール値「f=”f” and g!=”p”」によって計算されたレコードである。そして、結果として得られる位置情報は、妥当であるか又は妥当でないかのどちらかのレコードを取得するために使用され得る。例えば、レコード2及び6が、f=”f”及びg=”p”を有する2つのレコードを返すためにA−インデックス付けされたファイル1010から取得され得る。
【0069】
上述の方法は、好適なソフトウェアを実行するコンピューティングシステムを用いて実装され得る。例えば、ソフトウェアは、それぞれが少なくとも1つのプロセッサ、(揮発性及び/又は不揮発性メモリ及び/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを用いて入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを用いて出力を与えるための)少なくとも1つのユーザインターフェースを含む(分散、クライアント/サーバ、又はグリッドなどのさまざまなアーキテクチャである場合がある)1又は2以上のプログラムされた又はプログラミング可能なコンピュータシステムで実行される1又は2以上のコンピュータプログラムの手順を含み得る。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関連するサービスを提供するより大きなプログラムの1又は2以上のモジュールを含む可能性がある。プログラムのモジュール(例えば、データフローグラフの要素)は、データリポジトリに記憶されたデータモデルに準拠するデータ構造又はその他の編成されたデータとして実装され得る。
【0070】
ソフトウェアは、CD−ROM又は(例えば、多目的若しくは専用のコンピューティングシステム若しくはデバイスによって読み取り可能な)その他のコンピュータ可読媒体などの有形の非一時的媒体で提供されるか、或いはそのソフトウェアが実行されるコンピューティングシステムの有形の非一時的媒体にネットワークの通信媒体を介して配信される(例えば、伝播信号で符号化される)場合がある。処理の一部又はすべては、専用のコンピュータで、又はコプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA,field-programmable gate array)若しくは専用の特定用途向け集積回路(ASIC,application-specific integrated circuit)などの専用のハードウェアを用いて実行される場合がある。処理は、ソフトウェアによって指定された計算の異なる部分が異なる計算要素によって実行される分散された方法で実装される場合がある。それぞれのそのようなコンピュータプログラムは、本明細書において説明された処理を実行するためにストレージデバイスの媒体がコンピュータによって読まれるときにコンピュータを構成し、動作させるために、多目的又は専用のプログラミング可能なコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読ストレージ媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気式若しくは光学式媒体)に記憶されるか又はダウンロードされることが好ましい。本発明のシステムは、コンピュータプログラムで構成された有形の非一時的媒体として実装されると考えられる可能性もあり、そのように構成された媒体は、本明細書において説明された処理ステップのうちの1又は2以上を実行するために特定の予め定義された方法でコンピュータを動作させる。
【0071】
本発明のいくつかの実施形態が、説明された。しかしながら、上述の説明は、添付の請求項の範囲によって定義される本発明の範囲を例示するように意図されており、限定するように意図されていないことを理解されたい。したがって、その他の実施形態も、以下の請求項の範囲内にある。例えば、本発明の範囲を逸脱することなくさまざまな修正がなされ得る。さらに、上述のステップの一部は、順番に依存しない可能性があり、したがって、説明された順番とは異なる順番で実行され得る。