(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6207619
(24)【登録日】2017年9月15日
(45)【発行日】2017年10月4日
(54)【発明の名称】ソース追跡によるデータのプロファイリング
(51)【国際特許分類】
G06F 17/30 20060101AFI20170925BHJP
【FI】
G06F17/30 220Z
【請求項の数】20
【全頁数】23
(21)【出願番号】特願2015-537694(P2015-537694)
(86)(22)【出願日】2013年8月2日
(65)【公表番号】特表2016-502166(P2016-502166A)
(43)【公表日】2016年1月21日
(86)【国際出願番号】US2013053351
(87)【国際公開番号】WO2014065917
(87)【国際公開日】20140501
【審査請求日】2016年7月5日
(31)【優先権主張番号】61/716,766
(32)【優先日】2012年10月22日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100107984
【弁理士】
【氏名又は名称】廣田 雅紀
(74)【代理人】
【識別番号】100102255
【弁理士】
【氏名又は名称】小澤 誠次
(74)【代理人】
【識別番号】100096482
【弁理士】
【氏名又は名称】東海 裕作
(74)【代理人】
【識別番号】100188352
【弁理士】
【氏名又は名称】松田 一弘
(74)【代理人】
【識別番号】100131093
【弁理士】
【氏名又は名称】堀内 真
(74)【代理人】
【識別番号】100150902
【弁理士】
【氏名又は名称】山内 正子
(74)【代理人】
【識別番号】100141391
【弁理士】
【氏名又は名称】園元 修一
(74)【代理人】
【識別番号】100198074
【弁理士】
【氏名又は名称】山村 昭裕
(72)【発明者】
【氏名】アンダーソン アーレン
【審査官】
樋口 龍弥
(56)【参考文献】
【文献】
米国特許出願公開第2005/0102325(US,A1)
【文献】
特開2012−038066(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 17/30
(57)【特許請求の範囲】
【請求項1】
データ記憶システムに記憶されたデータをプロファイリングするための方法であって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするステップであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするステップと、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理するステップと
を含み、
前記処理するステップが、
値カウントエントリの組み合わせリストを生成するために、前記2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリをマージするステップと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約するステップであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、前記2又は3以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約するステップと
を含む、方法。
【請求項2】
対応するリストの値カウントエントリをマージするステップが、前記値カウントエントリの値に基づいて、前記値カウントエントリをソートするステップを含む、請求項1に記載の方法。
【請求項3】
値カウントエントリをソートするステップが、前記値カウントエントリの値に基づいて、主ソート順序によりソートするステップと、2又は3以上の集合の識別子に基づいて、副ソート順序によりソートするステップとを含む、請求項2に記載の方法。
【請求項4】
集合のうちの2又は3以上の集合の定量的情報を処理するステップが、前記集合のうちの3又は4以上の集合の前記定量的情報を処理するステップを含む、請求項1に記載の方法。
【請求項5】
3又は4以上の集合のうちの少なくとも2つの集合の第1のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第1のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項4に記載の方法。
【請求項6】
3又は4以上の集合のうちの少なくとも2つの集合の、第1のサブセットとは異なる第2のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第2のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項5に記載の方法。
【請求項7】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリが、選択されたフィールドに値が現れるレコードの前記特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む、請求項1に記載の方法。
【請求項8】
処理するステップが、別個のフィールド値エントリのリストを更新するために、2又は3以上の集合のうちの第3の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、前記別個のフィールド値エントリの少なくともいくつかが、第1の集合、第2の集合、及び前記第3の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第1の集合、前記第2の集合、及び前記第3の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む、請求項1に記載の方法。
【請求項9】
データ記憶システムに記憶されたデータをプロファイリングするための、コンピュータ可読記憶媒体に記憶されたコンピュータプログラムであって、
コンピューティングシステムに、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理させるための命令と
を含み、
前記処理することが、
値カウントエントリの組み合わせリストを生成するために、前記2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリをマージすることと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約することであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、前記2又は3以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約することと
を含む、コンピュータプログラム。
【請求項10】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするように構成された、前記データ記憶システムに接続されたインターフェースであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、インターフェースと、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理するように構成された少なくとも1つのプロセッサと
を含み、
前記処理することが、
値カウントエントリの組み合わせリストを生成するために、前記2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリをマージすることと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約することであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、前記2又は3以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約することと
を含む、コンピューティングシステム。
【請求項11】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするための手段であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするための手段と、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理するための手段と
を含み、
前記処理することが、
値カウントエントリの組み合わせリストを生成するために、前記2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリをマージすることと、
別個のフィールド値エントリのリストを生成するために、値カウントエントリの前記組み合わせリストの値カウントエントリを集約することであって、前記別個のフィールド値エントリの少なくともいくつかが、前記値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、前記2又は3以上の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、集約することと
を含む、コンピューティングシステム。
【請求項12】
データ記憶システムに記憶されたデータをプロファイリングするための方法であって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするステップであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするステップと、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理するステップと
を含み、
前記処理するステップが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むステップと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むステップであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第1の集合及び前記第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第1の集合及び前記第2の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップと
を含む、方法。
【請求項13】
集合のうちの2又は3以上の集合の定量的情報を処理するステップが、前記集合のうちの3又は4以上の集合の前記定量的情報を処理するステップを含む、請求項12に記載の方法。
【請求項14】
3又は4以上の集合のうちの少なくとも2つの集合の第1のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第1のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項13に記載の方法。
【請求項15】
3又は4以上の集合のうちの少なくとも2つの集合の、第1のサブセットとは異なる第2のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含む方法であって、前記プロファイリング要約情報が、前記第2のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む、請求項14に記載の方法。
【請求項16】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリが、選択されたフィールドに値が現れるレコードの前記特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む、請求項12に記載の方法。
【請求項17】
処理するステップが、別個のフィールド値エントリのリストを更新するために、2又は3以上の集合のうちの第3の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、前記別個のフィールド値エントリの少なくともいくつかが、第1の集合、第2の集合、及び前記第3の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第1の集合、前記第2の集合、及び前記第3の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む、請求項12に記載の方法。
【請求項18】
データ記憶システムに記憶されたデータをプロファイリングするための、コンピュータ可読記憶媒体に記憶されたコンピュータプログラムであって、
コンピューティングシステムに、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに接続されたインターフェース上で、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理させるための命令と
を含み、
前記処理することが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第1の集合及び前記第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第1の集合及び前記第2の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むことと
を含む、コンピュータプログラム。
【請求項19】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするように構成された、前記データ記憶システムに接続されたインターフェースであって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、インターフェースと、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理するように構成された少なくとも1つのプロセッサと
を含み、
前記処理することが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第1の集合及び前記第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第1の集合及び前記第2の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むことと
を含む、コンピューティングシステム。
【請求項20】
データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムであって、
レコードの複数の集合の各々についての定量的情報を記憶するために、前記データ記憶システムに記憶された前記レコードの複数の集合にアクセスするための手段であって、各特定の集合についての前記定量的情報が、前記特定の集合における前記レコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、前記選択されたフィールドに現れる値、及び前記選択されたフィールドに前記値が現れるレコードの数のカウントを含む、アクセスするための手段と、
プロファイリング要約情報を生成するために、前記集合のうちの2又は3以上の集合の前記定量的情報を処理するための手段と
を含み、
前記処理することが、
別個のフィールド値エントリのリストを含む出力データを記憶するために、前記2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことと、
記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、前記2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの前記値カウントエントリを読み込むことであって、その結果、前記別個のフィールド値エントリのうちの少なくともいくつかが、前記第1の集合及び前記第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、前記第1の集合及び前記第2の集合の各々について前記別個の値が現れるレコードの数を定量化する情報を含む、読み込むことと
を含む、コンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
関連出願の相互参照
本出願は、参照により本明細書に組み込まれている、2012年10月22日に出願された米国特許出願第61/716,766号の優先権を主張するものである。
【0002】
本明細書は、ソース追跡によりデータをプロファイリングすることに関する。
【背景技術】
【0003】
記憶されたデータセットは、様々な特徴が知られていないデータを含むことが多い。例えば、データセットについての値の範囲若しくは標準値、そのデータセットの異なるフィールド間の関係、又は異なるフィールドにおける値間での従属性が知られていないことがある。そのような特徴を決定するために、データプロファイリングは、データセットのソースを検査することを含むことができる。
【発明の概要】
【課題を解決するための手段】
【0004】
一態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするための方法が、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスするステップであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするステップと、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理するステップとを含む。処理するステップは、値カウントエントリの組み合わせリストを生成するために、2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリをマージするステップと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約するステップであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、2又は3以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約するステップとを含む。
【0005】
態様は、以下の特徴のうちの1又は2以上を含むことができる。
【0006】
対応するリストの値カウントエントリをマージするステップは、値カウントエントリからの値に基づいて、値カウントエントリをソートするステップを含む。
【0007】
値カウントエントリをソートするステップは、値カウントエントリからの値に基づいて、主ソート順序によってソートするステップと、2又は3以上の集合の識別子に基づいて、副ソート順序によってソートするステップとを含む。
【0008】
集合のうちの2又は3以上の集合の定量的情報を処理するステップは、集合のうちの3又は4以上の集合の定量的情報を処理するステップを含む。
【0009】
方法は、3又は4以上の集合のうちの少なくとも2つの集合の第1のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第1のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【0010】
方法は、3又は4以上の集合のうちの少なくとも2つの集合の、第1のサブセットとは異なる第2のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第2のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【0011】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリは、選択されたフィールドに値が現れるレコードの特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む。
【0012】
処理するステップは、別個のフィールド値エントリのリストを更新するために、2又は3以上の集合のうちの第3の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、別個のフィールド値エントリの少なくともいくつかが、第1の集合、第2の集合、及び第3の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第1の集合、第2の集合、及び第3の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む。
【0013】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピュータプログラムが、コンピュータ可読記憶媒体に記憶される。コンピュータプログラムは、コンピューティングシステムに、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理させるための命令とを含む。処理することは、値カウントエントリの組み合わせリストを生成するために、2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリをマージすることと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約することであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、2又は3以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約することとを含む。
【0014】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするように構成された、データ記憶システムに接続されたインターフェースであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、インターフェースと、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理するように構成された少なくとも1つのプロセッサとを含む。処理することは、値カウントエントリの組み合わせリストを生成するために、2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリをマージすることと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約することであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、2又は3以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約することとを含む。
【0015】
別の態様によれば、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするための手段であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするための手段と、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理するための手段とを含む。処理することは、値カウントエントリの組み合わせリストを生成するために、2又は3以上の集合のうちの少なくとも第1の集合及び第2の集合の各々からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリをマージすることと、別個のフィールド値エントリのリストを生成するために、値カウントエントリの組み合わせリストの値カウントエントリを集約することであって、別個のフィールド値エントリの少なくともいくつかが、値カウントエントリのうちの少なくとも1つからの別個の値を識別し、且つ、2又は3以上の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、集約することとを含む。
【0016】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするための方法が、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスするステップであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするステップと、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理するステップとを含む。処理するステップは、別個のフィールド値エントリのリストを含む出力データを記憶するために、2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むステップと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第1の集合及び第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第1の集合及び第2の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップとを含む。
【0017】
態様は、以下の特徴のうちの1又は2以上を含むことができる。
【0018】
集合のうちの2又は3以上の集合の定量的情報を処理するステップは、集合のうちの3又は4以上の集合の定量的情報を処理するステップを含む。
【0019】
方法は、3又は4以上の集合のうちの少なくとも2つの集合の第1のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第1のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【0020】
方法は、3又は4以上の集合のうちの少なくとも2つの集合の、第1のサブセットとは異なる第2のサブセットについて、別個のフィールド値エントリのリストからプロファイリング要約情報を生成するステップをさらに含み、プロファイリング要約情報は、第2のサブセットにおけるレコードのそれぞれの集合のフィールド間の結合演算の結果の複数のパターンを含む。
【0021】
特定の集合に対応する値カウントエントリのリストにおける各値カウントエントリは、選択されたフィールドに値が現れるレコードの特定の集合内でのそれぞれの位置を識別する位置情報をさらに含む。
【0022】
処理するステップは、別個のフィールド値エントリのリストを更新するために、2又は3以上の集合のうちの第3の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むステップであって、その結果、別個のフィールド値エントリの少なくともいくつかが、第1の集合、第2の集合、及び第3の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第1の集合、第2の集合、及び第3の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むステップを含む。
【0023】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピュータプログラムが、コンピュータ可読記憶媒体に記憶される。コンピュータプログラムは、コンピューティングシステムに、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに接続されたインターフェース上で、データ記憶システムに記憶されたレコードの複数の集合にアクセスさせるための命令であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスさせるための命令と、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理させるための命令とを含む。処理することは、別個のフィールド値エントリのリストを含む出力データを記憶するために、2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むことと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むことであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第1の集合及び第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第1の集合及び第2の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むこととを含む。
【0024】
別の態様において、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするように構成された、データ記憶システムに接続されたインターフェースであって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、インターフェースと、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理するように構成された少なくとも1つのプロセッサとを含む。処理することは、別個のフィールド値エントリのリストを含む出力データを記憶するために、2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むことと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むことであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第1の集合及び第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第1の集合及び第2の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むこととを含む。
【0025】
別の態様によれば、一般に、データ記憶システムに記憶されたデータをプロファイリングするためのコンピューティングシステムが、レコードの複数の集合の各々についての定量的情報を記憶するために、データ記憶システムに記憶されたレコードの複数の集合にアクセスするための手段であって、各特定の集合についての定量的情報が、特定の集合におけるレコードの少なくとも1つの選択されたフィールドについて、値カウントエントリの対応するリストを含み、各値カウントエントリが、選択されたフィールドに現れる値、及び選択されたフィールドにその値が現れるレコードの数のカウントを含む、アクセスするための手段と、プロファイリング要約情報を生成するために、集合のうちの2又は3以上の集合の定量的情報を処理するための手段とを含む。処理することは、別個のフィールド値エントリのリストを含む出力データを記憶するために、2又は3以上の集合のうちの第1の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むことと、記憶された出力データに少なくとも部分的に基づいて、更新された出力データを記憶するために、2又は3以上の集合のうちの第2の集合からの少なくとも1つのフィールドについて、対応するリストの値カウントエントリを読み込むことであって、その結果、別個のフィールド値エントリのうちの少なくともいくつかが、第1の集合及び第2の集合についての対応するリストの値カウントエントリからの別個の値を識別し、且つ、第1の集合及び第2の集合の各々について別個の値が現れるレコードの数を定量化する情報を含む、読み込むこととを含む。
【0026】
態様は、以下の利点のうちの1又は2以上を含むことができる。
【0027】
リレーショナルデータベース管理システム及び他のリレーショナルデータ記憶システムの設計の一態様は、キーとして知られる値であり、これらの値を使用して、異なるエンティティ(例えば、異なるテーブル又はデータセットなどの、レコードの異なる集合)において、レコードを識別する、及び/又はリンクする(若しくは「結合する」)ことができる。設計において意図される、レコード間のリレーショナル演算(例えば、結合演算)を、キーが首尾よく可能にする範囲は、参照整合性として知られている。レコードが挿入される、更新される、又は削除されるときに、経時的に参照整合性を維持することは、信頼できるリレーショナルデータ記憶システムを維持する一態様である。この目的のために、いくつかのリレーショナルデータベースは、リレーショナル整合性を施行するための制約(例えば、対応するレコードの主キーを参照する外部キーであるフィールド値を有するレコードを、その対応するレコードが既に別のエンティティに存在しない限り、あるエンティティに挿入することはできない)を与える。しかし、そのような制約をチェックすることは、データをロードするときのパフォーマンスを低下させることがあり、そのため、最も大きい若しくは最もアクティブなシステムの多くが、制約を持たないことがある、又は、制約がオフにされていることがある。そのため、リレーショナルシステムの参照整合性を評価する(assessing)ことは、システムのデータ品質を評価することの一部であり得る。データが挿入される、更新される、又は削除されるときに、参照整合性制約が自動的に施行されない場合、制約の違反が発生する恐れがあり、システムの参照整合性は損なわれることになる。
【0028】
いくつかのシステムにおいて、通常の演算は、エンティティ間の結合演算を含むことができ、そこでは、1つのエンティティのレコードのキーフィールドにおける値が、別のエンティティのレコードのキーフィールドにおける値と比較される。これらの対応するキーフィールドにおける値は、結合演算のための「キー」と呼ばれる。キーによって結合されるように構成された2つのエンティティを記憶するデータ記憶システムの参照整合性は、キー上での結合を明示的に実現することによって、直接評価され得る。結合演算から生じることになる、結合されたレコードの様々な種類の分析は、参照整合性を評価するときに実施されてよい。例えば、以下のレコードカウント、すなわち、両方のエンティティにおいて一意であるキーによって結合されるレコードの数、1つのエンティティにおいて一意であり、しかしもう一方においてそうではないキーによって結合されるレコードの数、どちらのエンティティにおいても一意でないキーによって結合されるレコードの数、1つのエンティティにおいて存在せず、しかしもう一方のエンティティにおいて一意のキーを有するレコードの数、1つのエンティティにおいて存在せず、しかしもう一方のエンティティにおいて非一意のキーを有するレコードの数が、検討されてよい。これらのカウントは、まとめて、キーの一意性、デカルト積(例えば、両方の結合されたエンティティにおいて非一意のキー)、及び孤立したレコード(例えば、結合されたエンティティに存在しないキー)についての問題に答える。これらは、参照整合性のいくつかの基本測定の例である。本明細書で説明する技法は、プロファイリングされているデータの参照整合性の、これらの測定及び他の測定のいくつかの計算を促進する。
【0029】
本発明の他の特徴及び利点は、以下の説明から、及び特許請求の範囲から明らかになるであろう。
【図面の簡単な説明】
【0030】
【
図1】データをプロファイリングするためのシステムのブロック図である。
【
図2A】出現(occurrence)の統計の例についての図である。
【
図3-6】例示的なデータプロファイリング手順の概略図である。
【発明を実施するための形態】
【0031】
図1は、データプロファイリング方法を適用することができる、例示的なデータ処理システム100を示す。システム100は、記憶デバイス又はオンラインデータストリームへの接続などの、データの1又は2以上のソースを含むことができるデータソース102を含み、その各々が様々な記憶フォーマットのうちのいずれか(例えば、データベーステーブル、スプレッドシートファイル、フラットテキストファイル、又はメインフレームにより使用されるネイティブフォーマット)でデータを記憶することができる。実行環境104が、プロファイリングモジュール106と、処理モジュール108とを含む。実行環境104は、UNIXオペレーティングシステムなどの好適なオペレーティングシステムの制御下にある、1又は2以上の汎用コンピュータ上でホストされてよい。例えば、実行環境104は、複数ノード並行コンピューティング環境を含むことができ、複数ノード並行コンピューティング環境は、ローカルで(例えば、SMPコンピュータなどのマルチプロセッサシステム)、若しくはローカルに分散された(例えば、クラスタ若しくはMPPとして接続された複数のプロセッサ)、又は、リモートで、若しくはリモートに分散された(例えば、ローカルエリアネットワーク(LAN)及び/若しくはワイドエリアネットワーク(WAN)を介して接続された複数のプロセッサ)のうちのいずれかで、又はそれらの任意の組み合わせで、複数の中央処理ユニット(CPU)を用いるコンピュータシステムの構成を含む。
【0032】
プロファイリングモジュール106は、データソース102からデータを読み込み、プロファイリングモジュール106及び処理モジュール108へのアクセスが可能なプロファイリングデータストア110に、プロファイリング要約情報を記憶する。例えば、プロファイリングデータストア110は、データソース102の記憶デバイス内に保持されても、又は実行環境104からアクセス可能な別のデータ記憶システムに保持されてもよい。プロファイリング要約情報に基づいて、処理モジュール108は、データソース102におけるデータに対して様々な処理タスクを実行することができ、タスクは、データを一掃(cleansing)すること、データを別のシステムにロードすること、又はデータソース102に記憶されたオブジェクトへのアクセスを管理することを含む。データソース102を提供する記憶デバイスは、例えば、実行環境104を稼働させるコンピュータに接続された記憶媒体(例えば、ハードドライブ112)上に記憶されて、実行環境104にローカルであってもよいし、又は、例えば、リモート接続若しくは(例えば、クラウドコンピューティングインフラストラクチャによって提供される)リモートサービス上で、実行環境104を稼働させるコンピュータと通信しているリモートシステム(例えば、メインフレーム114)上でホストされて、実行環境104にリモートであってもよい。
【0033】
プロファイリングモジュール106は、データソース102に記憶されたデータを読み込み、記憶されたデータの参照整合性を評価するために有用な分析を含む様々な種類の分析を、効率的な方法で実行することができる。上で説明したように、参照整合性を評価するための1つの方法は、明示的な結合演算を実行し、結果として生じる結合されたレコードを分析することによる。しかしながら、特に、プロファイリングモジュール106によって実行されるデータプロファイリングの一部であり得る、より広いデータ品質評価(data quality evaluation)のコンテキストにおいては、ペアのエンティティ間で明示的な結合演算を実行することは、常に参照整合性を評価するための最も効率的な方法であるわけではない。いくつかのデータプロファイリング手順は、1若しくは2以上の選択されたフィールド(又はフィールドの組み合わせ)のセットにおける別個の値の集合を調査することによって、データセットの品質を特徴付ける。データプロファイリングアクティビティを促進するために、センサス計算を実行して、選択されたフィールドの各々についての別個の値のセットを列挙し、各別個の値を有するレコードの数のカウントを含む、センサスデータを生成することができる。例えば、選択されたフィールドについての値カウントエントリのリストとして、センサスデータを配置することができ、各値カウントエントリは、選択されたフィールドに現れる別個の値、及び選択されたフィールドにその別個の値が現れるレコードの数のカウントを含む。いくつかの実施形態において、センサスデータは、単一のデータセットに記憶され、高速ランダムアクセスのためにフィールドによってインデックスされてもよく、一方他の実施形態においては、センサスデータは、例えば、フィールドごとに1つの複数のデータセットに記憶されてもよい。
【0034】
1つの方法において、参照整合性評価は、異なるタイプの結合されたレコード及び異なるタイプの結合されないレコードに関連付けられた様々な数を特徴付ける出現統計を使用した、2つのエンティティのフィールド間の結合演算の結果を要約する結合分析によって提供される。第1のエンティティ(エンティティA)のキーフィールド(フィールドA)と、第2のエンティティ(エンティティB)の対応するキーフィールド(フィールドB)との結合演算について、異なるパターンの出現数の例が、
図2Aのチャートにおいて示されている。「出現数」は、値がフィールドに出現する回数を表す。出現数の0は、値がフィールドに現れないことを意味する。出現数の1は、フィールドのまさに1つのレコードのみに値が現れることを意味する。出現値の「M」又は「N」は、フィールドの2以上のレコードに値が現れることを意味する。この例において、チャートの各行は、対応するパターン、すなわち「フィールドA出現数」×「フィールドB出現数」に関連付けられたカウントを含む。チャートの各列は、特定のタイプである、異なるパターンに関連付けられたカウントを含む。タイプ「A−distinct」(「B−distinct」)は、出現の特定のパターンに関連付けられた、エンティティA(エンティティB)のレコードに現れる別個の値の数を表す。タイプ「A−count」(「B−count」)は、出現の特定のパターンに関連付けられた、エンティティA(エンティティB)のレコードの合計数を表す。タイプ「AB−count」は、出現の特定のパターンに関連付けられた、結合されたレコードの合計数を表す。チャートの下半分(すなわち、出現のパターン、1×1、1×N、N×1、N×Mを有する行)は、結合されたレコード(ここでは、特定のキー値が、フィールドAとBとの両方に現れる)を表し、チャートの上半分(すなわち、出現のパターン、1×0、0×1、N×0、0×Nを有する)は、結合されないレコード(ここでは、特定のキー値が、1つのフィールドA又はBのみに現れる)を表す。このチャートに現れる実際のカウントは、値:1つのレコードにおける「a」、1つのレコードにおける「b」、2つのレコードにおける「d」、2つのレコードにおける「e」を有するAフィールドから、及び、値:1つのレコードにおける「a」、2つのレコードにおける「c」、1つのレコードにおける「d」、3つのレコードにおける「e」を有するBフィールドから、生じることになるカウントである。そのようにして、エンティティAにおける6つのレコード、及びエンティティBにおける7つのレコードの合計が存在する。
図2Bは、出現統計の別の形式を視覚的に表すベン図を示す。図は、エンティティA(1つの結合されないレコード)及びエンティティB(2つの結合されないレコード)に関連付けられた、円のオーバーラップしない部分において、(外部結合において)通過(passed through)されたか、又は結合されないレコードとして(内部結合において)拒絶されたかのいずれかの、結合演算において一致しないレコードの数を示す。図は、オーバーラップする部分において、結合演算において一致する各エンティティについての残りのレコードの数(エンティティAにおける5つのレコード、エンティティBにおける5つのレコード)を示す。これらの10の一致するレコードは、9つの結合されたレコードの合計(これは、列「AB−count」におけるカウントの和である)を生じる。円の相対的なサイジング及びオーバーラップのセンタリングを使用して、各領域におけるカウントを定性的に指し示すことができる。
【0035】
結合分析は、エンティティの実際のレコードに対する実際の結合演算の実行に基づいて、又は、エンティティについてのセンサスデータのそれぞれのセットに対して「センサス結合」演算を実行することによって(例えば、参照により本明細書に組み込まれている米国特許第7,849,075号に説明されるように)、実行されてよい。センサス結合において、各エンティティは、センサスレコードのセットを有し、ここで、各レコードは、フィールド識別子(例えば、フィールドA又はフィールドB)と、そのフィールドに現れる別個の値と、その別個の値が現れるレコードの数のカウントとを含む。2つのエンティティのキーフィールドについて生成されたセンサスレコードを比較することによって、センサス結合演算は、潜在的に、2つのエンティティからの個々のレコードのそれらのキーフィールドを比較する結合演算よりも、より小さな数の比較を行う。センサス結合演算が2つの入力センサスレコードにおける値の間に一致を見つけた場合、一致した値、2つのカウントに基づいた対応する出現のパターン、及びペアのキーフィールドに対する結合演算において生成されることになるレコードの合計数(これは、センサスレコードにおける2つのカウントの積である)を包含する、出力レコードが生成される。値について一致が見つからない場合、値はまた、対応する出現のパターン及びレコードの合計数(これは、単一のセンサスレコードにおける単一のカウントである)と共に出力される。センサス結合演算の出力レコードのこの情報は、結合演算のために、上の出現統計のチャートにおけるカウントのすべてを集めるのに十分である。
【0036】
いくつかのケースでは、例えば、レコードの複数の集合(例えば、1若しくは2以上のデータベースからの複数のテーブル、及び/又は、1若しくは2以上のファイルベースのデータストアからの複数のデータセット)を含むデータソースの参照整合性を分析するために、複数のペアのエンティティに対して結合分析を実行できることが有用である。ペアごとに出現統計を決定するために、特定のエンティティを、多くの他のエンティティとペアにしてもよい。しかしながら、複数回読み込まれることになる、各エンティティのキーフィールドにおけるレコード、又はエンティティごとのそれぞれのセンサスファイルにおけるセンサスレコードを要求する代わりに、プロファイリングモジュール106は、データソースに対するより時間消費の少ない読み込み処理を用いて、出現統計を生成することができる。例えば、3つのデータセットA、B、及びCが存在し、結合分析がA/B、A/C、及びB/Cについてのペアでの出現統計を求める場合、各ペアの別々の独立した分析は、各センサスファイルが2回読み込まれることを求めることになる。一般に、N個のエンティティがすべての考え得る組み合わせにおいて独立して分析されるためには、N(N−1)/2個の一意のペアが存在し、これは、各エンティティがN−1回(他のエンティティごとに1回)読み込まれることを要求することになる。分析されるエンティティの数が2よりも大きい(例えば、3若しくは4以上、又は、10若しくは11以上、又は100若しくは101以上など、2よりも著しく大きい)ときに、本明細書で説明した方法のいくつかを用いて一緒にエンティティを処理することによって、著しい効率を達成することができる。例えば、いくつかのケースでは、データベースのエンティティ関係図に従って、多くのエンティティ(例えば、テーブル)にわたって結合分析を実行することができる。
【0037】
プロファイリングモジュール106は、(エンティティレコード又はセンサスレコードのいずれかに対して)実行されることになる実際の結合演算を要求せずに、キーフィールドに対する複数のペアでの結合演算(又は多方向結合)の結果を生成する方法を適用することによって、同じセンサスファイルの反復読み込み操作を回避することができる。そのような方法の以下の2つの例は、各エンティティに出現する共通のキーフィールド(例えば、アカウント番号フィールド)について、エンティティごとにセンサスファイルを書き込む(又は、あらかじめ記憶されたセンサスファイルを読み込む)ために、複数のエンティティにアクセスすることを含む。(結合分析のためには必要とされない他のフィールドについての他のセンサスファイルがまた存在してもよい。)「集約」方法は、センサスレコードのソートされた組み合わせリスト(又は少なくとも、ソースエンティティを識別するために識別子でラベル付けされた、センサスレコードからの値及びカウント)を生成するために、キーフィールドについて対応するセンサスファイルからのセンサスレコードをマージすることもまた含む。いくつかの実施形態において、各センサスファイル内のセンサスレコードがソートされ、それにより、記憶及び読み込みアクセス時間に関して、マージ処理をより効率的にする。
【0038】
いくつかの実施形態においては、異なるセンサスファイルからのセンサスレコードを、センサスレコードの中間組み合わせリストにマージし、ソートすることは要求されない。「更新」方法において、あらかじめ受信されたセンサスデータから生成されており、記憶システム又はデータ構造に保持されている、且つ、着信センサスレコードからのキー値によってアクセス可能な、出力データエントリのリストを更新するように、着信(潜在的にソートされていない)センサスレコードを処理することができる。新しいセンサスレコードが到着すると、出力データエントリが、着信センサスレコードからのキー値を用いて記憶装置から取り出され、更新され、再び記憶装置に書き込まれる。ディスク、インメモリデータ構造、及び一度だけ書き込み可能な記憶装置(この場合、前の結果は、所定の位置で更新され得ず、記憶域の最後に追加されなければならない)を含む、様々な記憶システムがサポートされる。
【0039】
「更新」方法において、センサスファイルは同時に処理される必要はないが、センサスファイルは経時的に利用可能になるので、更新として組み込むことができる。とりわけ、あらかじめ処理されたセンサスファイルの後のバージョンを、前の結果を更新するように再処理することができる。別々に計算された結果の2又は3以上のセットを組み合わせることもまた可能である。
【0040】
いくつかの実施形態において、更新方法及び集約方法の両方の混合を使用することができる。同時に利用可能なセンサスファイルの場合、メモリフットプリントを削減するために、又はパフォーマンスを向上させるために、集約を使用することができる。別々の時間に到着するセンサスファイルの場合、前の結果を更新するために、更新を使用することができる。集約方法を、センサスファイルのセットに独立して適用することができ、一方その結果が、更新方法を使用して後で組み合わせられる。
【0041】
集約方法の例が、
図3に示されている。この例において、それぞれのソースエンティティであるエンティティA、エンティティB、及びエンティティCについての3つのセンサスファイル、300A、300B、及び300Cが(本方法は任意の数のセンサスファイルのために機能するものの)、プロファイリングモジュール106への入力として用いられる。各センサスファイルは、センサスファイルが属するソースエンティティ(「A」、「B」、又は「C」)を指し示すソース識別子で始まるセンサスレコードを含む。ソース識別子の後に、センサスレコードは、センサスファイルに関連付けられたキーフィールドに現れる別個のキーフィールド値を含み、そのキーフィールド値を含むレコードの数のカウントがそれに続く。この例において、センサスファイルにおけるセンサスレコードのすべてが、エンティティ内の所望の固有のキーフィールドについてである。別の例においては、センサスレコードに、各値に関連付けられたフィールドを識別する追加的な識別子が含まれる。結合分析に対する所望のセンサスレコードにのみアクセスすることは、エンティティのすべてのフィールドについてのすべてのセンサスレコードを読み込み、関係のないものを破棄することよりも効率的なので、いくつかの実施形態は、この例でのように、異なる、独立してアクセス可能なセンサスファイル内に、異なるフィールドについてのセンサスレコードを記憶する。代替として、異なるフィールドについてのセンサスレコードを、異なるセクションへのランダムアクセスのために構成された共通のファイル又はデータストアの、異なるセクションに記憶することができる。一緒に分析されることになるセンサスファイルのグループを指定する別の識別子を追加することによって、異なるキーフィールドについての複数の結合分析を、同じ実行内で実施することができる。
【0042】
プロファイリングモジュール106のマージサブモジュール302が、センサスレコードのすべてから、センサスエントリをソートした組み合わせリスト304を生成するために、入力センサスファイルからセンサスレコードを読み込む。いくつかの実施形態において、入力センサスファイルは、順次的に読み込まれる(及び、例えば、入力センサスファイルが記憶媒体の分割されたデータセグメントに記憶されている場合は、並行して読み込んでもよい)。並行実施形態の場合、センサスレコードは、各センサスファイルにおいてキーフィールド値によって分割されてよく、その結果、共通のキーフィールド値を共有するすべてのレコードが、同じデータセグメントに配置される。入力センサスファイルからのセンサスレコードは、センサスレコードからのキーフィールド値に基づいて、主ソート順序によってソートされ、次いで、ソース識別子に基づいて、副ソート順序によってソートされる。
図3に示すリスト304において、センサスエントリは、最初に主ソートされたキーフィールド値を、それに続いて副ソートされたソース識別子を、それに続いてレコードカウントを示すように書き直されているが、これらの項目は、各センサスエントリ内で任意の順序に記憶されてよい。センサスファイルの異なるそれぞれのグループに対して複数の結合分析が同時に行われることになる場合は、一緒に分析されることになるセンサスファイルのグループを指定するラベルが、主ソートキーとして(キーフィールド値に基づいた副ソート、及びソース識別子に基づいた三次ソートと共に)追加されて、一緒に分析されることが意図されるレコードが隣接するように保証することができる。
【0043】
プロファイリングモジュール106の集約サブモジュール306が、別個のキーフィールド値エントリのリスト308を生成するために、リスト304からのエントリを集約し、各別個のキーフィールド値エントリは、別個のキーフィールド値を識別し、入力センサスファイル(この例では、ソースエンティティA、B、及びC)によって表されるソースエンティティの各々について、別個のキーフィールド値が現れるレコードの数を定量化する情報を識別する。同じキーフィールド値を共有する、リスト304におけるソートされたセンサスエントリは、ソース識別子を介して(例えば、ロールアップ処理を用いて)集約される。いくつかの実施形態において、集約サブモジュール306は、各別個のキーフィールド値に関連付けられた2つのベクトルを包含するデータ構造に、エントリを集約した結果を記憶する。1つのベクトルは、ソースエンティティごとに個々のエンティティレコードカウントを記憶し、もう一方のベクトルは、ソースエンティティのペアごとにペアでの結合レコードカウントを記憶する。そのため、第1のベクトルの長さは、ソースエンティティの数によって決定され、第2のベクトルの長さは、ソースエンティティの一意のペアの数によって決定される。第1のベクトルの各要素は、特定のソースエンティティに対応し、関連付けられたキーフィールド値を包含するレコードのカウントを保持し、このカウントは、カウントがゼロでない場合にはセンサスファイルからのカウント、又は、そのキーフィールド値がセンサスファイルに現れなかった場合にはゼロのカウントである。このデータ構造はまた、複数の分析において、センサスファイルの別々のグループの中で変化するファイルの数に適応することができる。例えば、集約サブモジュール306は、記憶された変数又はルックアップ操作などのメカニズムを使用して、ベクトルにおけるインデックスを、グループごとに特定のセンサスファイルに関連付けることができる。第2のベクトルの各エントリは、ソースエンティティの特定のペアの間の結合演算から生じることになる結合レコードの数のカウントを保持し、これは、(第1のベクトルにある)ペアごとにカウントの積として計算される。第1のベクトルにおけるエンティティの順序に基づいて(例えば、第1のインデックスが第2のインデックス未満のインデックスのすべてのペアからなるマルチインデックスを形成することによって)、第2のベクトルのインデックス構造を決定することができる。
【0044】
図3の例において、キーフィールド値「c」を有する2つのセンサスレコードが、センサスファイル300B及び300CのエンティティB及びエンティティCに、1つずつ存在する。エンティティBセンサスレコードにおけるエンティティレコードのカウントは2であり、エンティティCセンサスレコードにおけるエンティティレコードのカウントは1である。リスト308における対応する集約された出力データ構造は、「c[0 2 1][0 0 2]」であり、ここで、データ構造における第1の項目は、キーフィールド値「c」であり、次の項目は、エンティティA、B、及びCそれぞれにおけるレコードカウントの第1のベクトルであり、最後の項目は、エンティティペアA/B、A/C、及びB/Cそれぞれについてのカウントの積の第2のベクトルである。この第2のベクトルは、いくつかの実施形態において省略されてもよく、代わりに、その値が第1のベクトルにおける値によって完全に決定された以後で生成されてもよい。
【0045】
リスト308における情報から、提供されるべき出現統計のために、
図2Aのチャート及び
図2Bのベン図などの要約情報が、リスト308におけるデータ構造からの適切な値にアクセスすることによって、ソースエンティティのペアごとに計算されてよい(3方向及びより高次の結合についての同様の要約情報もまた可能である)。非一意性は、しばしば特定の関心であるため、一意及び非一意のレコードのペアリングのためのカウントは、別々に報告されてもよい。上で説明したように、結合分析の結果を視覚的に表すために、ペアごとにベン図を生成することができる。例えば、ペアA/Bについて、円の相対的なサイズ及び円312のセンタリング、並びに結果として生じるオーバーラップを配置して、対応する出現チャート310の情報に基づいて決定された各領域におけるカウントの近似値を、定量的に指し示すことができる。
【0046】
いくつかの実施形態において、センサスファイル300A、300B、300Cにおけるセンサスレコードについてのデータ構造はまた、キーフィールド値が現れる特定のエンティティ内での、レコードのそれぞれの位置を識別する位置情報を含むことができる。一実施形態において、センサスレコードの生成中に、ベクトルが、関連付けられたキーフィールド値を有するあらゆるレコードの一意のレコード識別子として入力される。エンティティの元のデータにおけるレコードが、一意のレコード識別子を有さない場合、例えば、一続きの連続した番号を各レコードに割り当てることによって、プロファイリング手順の一部として、そのようなレコード識別子を生成し、レコードに追加することができる。以下でより詳細に説明するように、この位置情報は次いで、マージ段階においてセンサスレコードから収集されたセンサスエントリ内に含まれてよく、集約段階において組み合わされてよい。
【0047】
位置情報を記憶するための他の実施形態が可能であり、そのうちのいくつかは、パフォーマンス及び/又は削減された記憶域空間において、利点を与えることができる。例えば、レコード識別子のベクトルに代わって、ビットベクトルを使用することができる。ビットベクトルの各ビットは、特定のレコード識別子に対応し、対応するレコード識別子を有する関連付けられたレコードが、関連付けられたキーフィールド値を有する場合に、ビットが設定される。ビットベクトルのビットとレコード識別子との対応関係は、明示的であっても、又は暗黙的であってもよい。例えば、必ずしも1対1ではなく、ビットを対応するレコード識別子に関連付ける、明示的なマッピングが存在してもよいし、又は、各ビットの位置がレコードの位置の順次的な順序に対応する、暗黙的なマッピングが存在してもよい。いくつかの実施形態において、結果として生じるビットベクトルは、記憶装置におけるさらなる節約のために圧縮される。
【0048】
位置データ構造を各センサスエントリに関連付けることによって、この位置情報を、それが集約された出力データ構造ごとに位置データ構造のベクトルとして現れる、リスト308へと伝播することができる。位置データ構造のベクトルは、ソースエンティティごとに1つの位置データ構造(例えば、ビットベクトル)を含む。リスト308の各集約された出力データ構造における位置データ構造のベクトルの存在は、結果から、元のソースエンティティにおける対応するレコードへの「ドリルダウン」を促進する。いくつかのケースにおいて、ソースエンティティがキーフィールド値によってインデックスされている場合、キーフィールド値それ自体を使用して、元のソースエンティティにおけるレコードをルックアップすることができるが、これは、いくつかのソースエンティティには当てはまらないことがある。位置データ構造は、元のソースエンティティの汎用インデックスとして働くことができ、そのソースエンティティに関連付けられたセンサスファイルは、(キー値を位置データ構造内のインデックスにリンクする)副インデックスとして働くことができる。
【0049】
ペアでの出現チャート310及び関連付けられたベン
図312の生成は、リスト308における出力データ構造を介した集約を含む。例えば、各出現カテゴリ(例えば、1×0、1×1など)に対応する出力データ構造におけるカウントを総計して、結果として得られる合計カウントを生み出す。位置データ構造もまた、組み合わせることができる。レコード識別子のベクトルである位置データ構造のケースでは、特定の出現カテゴリについての特定のソースエンティティにおける異なるキーフィールド値に対応するベクトルは、つなぎ合わされる。ビットベクトルである位置データ構造のケースでは、特定の出現カテゴリについての特定のソースエンティティにおける異なるキーフィールド値に対応するビットベクトルは、一緒に論理和が取られる。結果は、出現チャートの各エントリ、又はベン図のエントリに対応する、組み合わされた位置データ構造である。ユーザは、この出現カテゴリについての、サンプルレコード又はレコードの包括的なセットのいずれかを取り出すために、この位置データ構造を使用して、このエントリからドリルダウンすることができる。参照整合性評価のコンテキストでは、例えば、複製であるレコード又は孤立したレコードにアクセスできることは極めて貴重であり、これは、そうするための能力を提供する。
【0050】
出現チャート及びベン図への集約が位置データ構造それ自体を組み合わせず、代わりに、リスト308におけるキーフィールド値に対応するビットベクトルを構築する、異なる実施形態が可能である。この実施形態では、ビットインデックスを、リスト308における各別個のキーフィールド値とペアにする、ビット対キー値のマッピングが構築される。集約の間、どのキーフィールド値が所与の出現チャートエントリに寄与するかを指し示すビットベクトルが、入力される。次に、2つのステップでのドリルダウンに進行することができる。出現チャートエントリについてのビットベクトルは、(ビット対キー値のマッピングから)関連付けられたキーフィールド値のセットを見つけるために使用される。これらのキーフィールド値は、元のレコードを取り出すために元のソースエンティティにおいて直接ルックアップされるか、又は、例えば、リスト308若しくはセンサスファイル300A〜300C(これらは次いで元のレコードを取り出すために使用される)における位置データ構造を取り出すためにルックアップされるかのいずれかである。この実施形態は、とりわけ、元のソースエンティティが既にキーフィールド値によってインデックスされている場合に、記憶要件及び効率に関して利点を与えることができる。
【0051】
図4は、(エンティティCについての)センサスファイル400Cがプロファイリングモジュール106の更新サブモジュール406に到着する、更新方法を示しており、更新サブモジュール406は、更新されたリスト408ABCを生成するために、(エンティティA及びBのセンサスファイルからあらかじめ生成された)あらかじめ生成された出力リスト408ABを更新する。センサスファイル400Cにおけるセンサスエントリ「C c 1」は、別個のキーフィールド値「c」、及びその値が現れるエンティティCの1つのレコードのカウントを表す。キーフィールド値「c」を有する408ABにおける対応する出力データ構造が取り出される。キーフィールド値「c」を有するレコードのエンティティA及びエンティティBにおけるカウントを示す第1のベクトル「[0 2]」が、キーフィールド値「c」を有するエンティティCにおけるレコードのカウントを示す要素を追加するように、「[0 2 1]」に更新される。同様に、カウントのペアでの積を示す第2のベクトルが、「[0]」から「[0 0 2]」に更新され、ここで、第2の要素は、エンティティAについてのカウントとエンティティCについてのカウントとの積(0×2=0)であり、一方で第3の要素は、エンティティBについてのカウントとエンティティCについてのカウントとの積(1×2=2)である。結果は、更新された出力データ構造のリスト408ABCに書き込まれる。
【0052】
図5は、(エンティティBについての)センサスファイル500Bが更新サブモジュール406に到着する、更新方法を示しており、更新サブモジュール406は、(エンティティAのセンサスファイル及びエンティティBの前のバージョンのセンサスファイルからあらかじめ生成された)あらかじめ生成された出力リスト508ABを更新する。センサスファイル500Bにおけるセンサスエントリ「B c 4」は、別個のキーフィールド値「c」、及びその値が現れるエンティティBの4つのレコードのカウントを表す。リスト508ABの対応する出力データ構造から、エンティティBにおける「c」についての前のカウントは、(第1のベクトル「[0 2]」における第2の要素に従って)2であった。このカウントが、「[0 4]」を取得するために、新しいカウントで第1のベクトルにおいて更新される。第2のベクトルが次いで、エンティティA及びエンティティBからのカウントの積で更新され、この例では、「[0]」のままで変わらない。結果は、更新された出力リスト510ABに書き込まれる。
【0053】
図6は、2つの別々に生成された出力リストが組み合わされた、更新方法の別の例を示している。出力リスト608ABは、エンティティA及びエンティティBからのセンサスレコードの組み合わせに基づいて生成され、出力リスト608BCは、エンティティB及びエンティティCについてのセンサスレコードの組み合わせに基づいて生成された。この例では、両方の出力リストの生成において、エンティティBについての同じセンサスレコードが使用された。(センサスファイルの異なるバージョンがエンティティBについての異なるセンサスレコードを提供する他の例では、
図5に示す手順が、出力データ構造においてエンティティB値を更新するために最初に適用されて、最新のセンサス値に対応することができる。)プロファイリングモジュール106の組み合わせサブモジュール606が、出力データ構造からの情報を一致するキーフィールド値により組み合わせ、例えば、リスト608ABからの出力データ構造「c[0 2][0]」と、リスト608BCからの出力データ構造「c[2 1][2]」とを組み合わせる。第1のベクトルの各々における要素は、各出力データ構造において表されるそれぞれのエンティティのセンサスカウントに対応する。2つの第1のベクトルは、それらの要素の共用体を取り、両方の出力データ構造において表される任意のエンティティについての(最新の)1つの要素のみを保つことによって、組み合わされる。この例では、組み合わせの結果は、更新された第1のベクトル「[0 2 1]」である。更新された第2のベクトルから、更新された第1のベクトルに従ってカウントのペアでの積が計算され、更新された第2のベクトル「[0 0 2]」をもたらす。更新された出力データ構造は、出力リスト608ABCに記憶される。
【0054】
上で説明したデータプロファイリング方法は、好適なソフトウェアを実行するコンピューティングシステムを用いることにより実装することができる。例えば、ソフトウェアは、1又は2以上のプログラムされた、又はプログラム可能な(分散型、クライアント/サーバ型、又はグリッドなどの様々なアーキテクチャであってよい)コンピューティングシステム上で実行される、1又は2以上のコンピュータプログラムにおける手順を含むことができ、コンピューティングシステムの各々は、少なくとも1つのプロセッサと、少なくとも1つのデータ記憶システム(揮発性及び/又は不揮発性のメモリ及び/又は記憶要素を含む)と、(少なくとも1つの入力デバイス又はポートを使用して入力を受信し、少なくとも1つの出力デバイス又はポートを使用して出力を提供するための)少なくとも1つのユーザインターフェースとを含む。ソフトウェアは、例えば、設計、構成、及びデータフローグラフの実行に関するサービスを提供する、より大きなプログラムの1又は2以上のモジュールを含むことができる。プログラムのモジュール(例えば、データフローグラフの要素)は、データ構造、又はデータリポジトリに記憶されたデータモデルに準拠する他の組織化されたデータとして実装されてよい。
【0055】
ソフトウェアは、(例えば、汎用若しくは特殊目的コンピューティングシステム、又はデバイスによって可読な)CD−ROM若しくは他のコンピュータ可読媒体などの有形の、非一時的な媒体上で提供されてもよいし、又は、(例えば、伝播シグナルで符号化されて)ネットワークの通信媒体上で、ソフトウェアが実行されるコンピューティングシステムの有形の、非一時的な媒体に配信されてもよい。処理のうちのいくつか又は全部は、特殊目的コンピュータ上で、或いは、コプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)、又は専用の特定用途向け集積回路(ASIC)などの特殊目的ハードウェアを使用して実行されてもよい。処理は、分散されたやり方で実装されてもよく、そこでは、ソフトウェアによって規定された異なる部分の計算が、異なるコンピューティング要素によって実行される。そのような各コンピュータプログラムは、本明細書で説明した処理を実行するために記憶デバイス媒体がコンピュータによって読み込まれるとき、コンピュータを構成し、動作させるために、好ましくは、汎用又は特殊目的プログラム可能なコンピュータによってアクセス可能な記憶デバイスのコンピュータ可読記憶媒体上(例えば、ソリッドステートメモリ若しくは媒体、又は磁気若しくは光学媒体)に記憶される、又はそこにダウンロードされる。本発明のシステムはまた、コンピュータプログラムで構成された、有形の、非一時的な媒体として実装されるものとみなされてもよく、そこでは、そのように構成された媒体が、固有のあらかじめ定義されたやり方で、本明細書で説明した処理ステップのうちの1又は2以上を実行するように、コンピュータを動作させる。
【0056】
本発明のいくつかの実施形態が説明されてきた。それにも関わらず、上述した説明は、例証することを意図しており、以下の特許請求の範囲によって定義される本発明の範囲を限定することを意図しないことが理解されるべきである。それに応じて、他の実施形態もまた、以下の特許請求の範囲内である。例えば、様々な改良形態が、本発明の範囲から逸脱することなく行われてよい。加えて、上で説明したステップのうちのいくつかは、順序非依存であってよく、したがって、説明されたものとは異なる順序で実行することができる。