(58)【調査した分野】(Int.Cl.,DB名)
特定のデータソースに記憶されたデータを要約し、記憶した要約データのセットが、前記特定のデータソースにおけるレコードの少なくとも1つの選択されたフィールドに関して、値エントリの対応するリストを含み、各値エントリが、前記選択されたフィールドに現れる値を含む、請求項1に記載の方法。
特定のデータソースに対応する値エントリのリスト内の各値エントリが、選択されたフィールドに値が現れるレコードの前記特定のデータソース内のそれぞれの位置を識別する位置情報をさらに含む、請求項4に記載の方法。
追加したフィールドに、少なくとも1つのデータソースにおける1又は2以上の選択されたフィールド又はフィールドのフラグメントから計算されたデータを入力する、請求項1に記載の方法。
追加したフィールドに、少なくとも1つのデータソースにおける1又は2以上の選択されたフィールド又はフィールドのフラグメントから計算されたデータと、前記少なくとも1つのデータソースの外部のデータとを入力する、請求項1に記載の方法。
分析するステップが、記憶した要約データのセットを分析して、所定の基準を満たすデータを記憶するデータソースのうちの少なくとも1つにおける、1若しくは2以上の選択されたフィールド又は1若しくは2以上の選択されたレコードの少なくとも一部を選択するステップを含み、
生成するステップが、記憶した要約データのセットの値に少なくとも部分的に基づいて、前記選択された一部のうちの少なくとも1つに関する観測結果を識別する情報を含むシステム情報を生成するステップを含む、請求項1に記載の方法。
少なくとも第1のデータソースに記憶されたデータを要約した第1の要約データのセットが、前記第1のデータソースに記憶されたレコードの少なくとも1つのフィールドに関して、フィールドに現れる相異なる値のリスト、及び各相異なる値が現れるレコードの個数のそれぞれのカウントを含む、請求項17に記載の方法。
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、前記第1の要約データのセットに関連付けられた1又は2以上の潜在的問題を記述する問題情報を含む、請求項18に記載の方法。
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1のデータソースに記憶されたレコードのフィールドの入力の程度を記述する入力情報を含む、請求項18に記載の方法。
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1のデータソースに記憶されたレコードのフィールドに現れる値の一意性の程度を記述する一意性情報を含む、請求項18に記載の方法。
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1のデータソースに記憶されたレコードのフィールドに現れる値を特徴付ける1又は2以上の反復パターンを記述するパターン情報を含む、請求項18に記載の方法。
【発明の概要】
【課題を解決するための手段】
【0004】
一態様では、一般に、データを特徴付けるための方法が、データストレージシステムとのインターフェースからデータを読み込み、データストレージシステムの異なるそれぞれのデータソースに記憶されたデータを要約した2又は3以上の要約データのセットを記憶するステップと、データストレージシステムの複数のデータソースのデータを特徴付けるシステム情報を生成するために、少なくとも1つのプロセッサを用いて、記憶した要約データのセットを処理するステップとを含む。処理するステップが、記憶した要約データのセットを分析して、所定の基準を満たすデータを記憶する2又は3以上のデータソースを選択するステップと、第1の選択したデータソースを要約し、記憶した要約データのセットの値と、第2の選択したデータソースを要約し、記憶した要約データのセットの値との比較に少なくとも部分的に基づいて、異なるデータソースに含まれるレコードのフィールド間の潜在的関係を識別する情報を含むシステム情報を生成するステップとを含む。
【0005】
態様は、以下の特徴のうちの1又は2以上を含むことができる。
【0006】
処理するステップは、それぞれの要約データのセットに対応するデータユニットを記憶するステップであって、データユニットのうちの少なくともいくつかが、対応する要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報を含む、ステップと、記憶されたデータユニットから集約した記述情報に基づいて、システム情報を生成するステップとをさらに含む。
【0007】
処理するステップが、1又は2以上のルールを、2又は3以上の第2の要約データのセットに適用するステップと、第2の要約データのセットを集約して、第3の要約データのセットを生成するステップと、第3の要約データのセットを記憶するステップとをさらに含む。
【0008】
2又は3以上の第2の要約データのセットは、同じレコードフォーマットの2又は3以上のデータソースから導き出される。
【0009】
1又は2以上のルールは、2又は3以上の第2の要約データのセットの間で1又は2以上の選択されたフィールドの値を比較する。
【0010】
特定のデータソースに記憶されたデータを要約し、記憶した要約データのセットが、特定のデータソースにおけるレコードの少なくとも1つの選択されたフィールドに関して、値エントリの対応するリストを含み、各値エントリが、選択されたフィールドに現れる値を含む。
【0011】
特定のデータソースに対応する値エントリのリスト内の各値エントリが、選択されたフィールドに値が現れるレコードの個数のカウントをさらに含む。
【0012】
特定のデータソースに対応する値エントリのリスト内の各値エントリが、選択されたフィールドに値が現れるレコードの特定のデータソース内のそれぞれの位置を識別する位置情報をさらに含む。
【0013】
位置情報が、識別されたそれぞれの位置のビットベクトル表現を含む。
【0014】
ビットベクトル表現が、圧縮されたビットベクトルを含む。
【0015】
位置情報がデータを既に記憶していない位置を参照すると、位置情報が参照するデータを、記憶されたコピーに基づいて再構築する。
【0016】
処理するステップが、1又は2以上のフィールドを、複数のデータソースのうちの少なくとも1つのレコードに追加するステップをさらに含む。
【0017】
追加したフィールドに、少なくとも1つのデータソースにおける1又は2以上の選択されたフィールド又はフィールドのフラグメントから計算されたデータを入力する。
【0018】
追加したフィールドに、少なくとも1つのデータソースにおける1又は2以上の選択されたフィールド又はフィールドのフラグメントから計算されたデータと、少なくとも1つのデータソースの外部から(例えば、レコードをリッチ化するためのルックアップから)のデータとを入力する。
【0019】
処理するステップが、1又は2以上のフィールドを第1の要約データのセットに追加するステップをさらに含む。
【0020】
別の態様では、一般に、データを特徴付けるための方法であって、データストレージシステムとのインターフェースからデータを読み込み、データストレージシステムの異なるそれぞれのデータソースに記憶されたデータを要約した2又は3以上の要約データのセットを記憶するステップと、データストレージシステムの複数のデータソースのデータを特徴付けるシステム情報を生成するために、少なくとも1つのプロセッサを使用して、記憶した要約データのセットを処理するステップとを含む。処理するステップが、それぞれの要約データのセットに対応するデータユニットを記憶するステップであって、データユニットのうちの少なくともいくつかが、対応する要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報を含む、ステップと、記憶したデータユニットから集約された記述情報に基づいて、システム情報を生成するステップとを含む。
【0021】
態様は、以下の特徴のうちの1又は2以上を含むことができる。
【0022】
第1のデータソースに記憶されたデータを要約した少なくとも第1の要約データのセットが、第1のデータソースに記憶されたレコードの少なくとも1つのフィールドに関して、フィールドに現れる相異なる値のリスト、及び各相異なる値が現れるレコードの個数のそれぞれのカウントを含む。
【0023】
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1の要約データのセットに関連付けられた1又は2以上の潜在的問題を記述する問題情報を含む。
【0024】
1又は2以上の潜在的問題が、候補主キーフィールドとして検出されるフィールドにおける重複する値の存在を含む。
【0025】
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1のデータソースに記憶されたレコードのフィールドの入力の程度を記述する入力情報を含む。
【0026】
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1のデータソースに記憶されたレコードのフィールドに現れる値の一意性の程度を記述する一意性情報を含む。
【0027】
第1の要約データのセットに関連付けられた1又は2以上の特徴を記述する記述情報が、第1のデータソースに記憶されたレコードのフィールドに現れる値を特徴付ける1又は2以上の反復パターンを記述するパターン情報を含む。
【0028】
別の態様では、一般に、データを特徴付けるための、コンピュータ可読記憶媒体に記憶されたコンピュータプログラムが、コンピュータシステムに、上記方法のいずれかのステップを実行させるための命令を含む。
【0029】
別の態様では、一般に、データを特徴付けるためのコンピューティングシステムが、データストレージシステム、及びデータストレージシステムからデータを受け取るように構成された入力デバイス又はポートと、上記方法のいずれかのステップを実行するように構成された少なくとも1つのプロセッサとを含む。
【0030】
態様は、以下の利点のうちの1又は2以上を含むことができる。
【0031】
いくつかのデータ処理及び/又はソフトウェア開発環境において、データ品質追跡プログラムの一態様が、データストレージシステム内のデータソースをプロファイリングして、プログラムがデータ品質を定量化することを可能にするプロファイルを生成することを含む。プロファイル内の情報及びプロファイルから抽出されたデータ品質情報は、ユーザ又はデータアナリストがデータをより良く理解することを可能にする。一意の及び相異なる値のカウント、最大及び最小値、又は一般的値及び非一般的値のリストなど、プロファイル内の情報に加えて、フィールド固有検証ルール(例えば、「クレジットカード番号フィールド内の値が16桁の番号でなければならない」)をプロファイリングの前に行使することが可能であり、プロファイルは、フィールド毎に各検証ルールについての無効インスタンスのカウントを含むことになる。長い期間にわたって、データ品質指標(例えば、「無効なクレジットカード番号を有するレコードの割合」)が、同じフォーマット及び来歴を有するデータソースの系列がプロファイリングされていく時間の経過とともにデータ品質を監視するために定義され使用され得る。
【0032】
プログラムによっては、データプロファイリング及びデータ品質追跡が、基本的に、フィールド毎に、したがって一度に1つのソースで考えられる(ただし、ソースのペアにわたるフィールドに関与するルールを許容する)。データプロファイリングにおける検証ルールは、フィールド又はフィールドの組み合わせのレベルで適用され、プロファイリングの前に指定され、フィールド固有値を分類する働きをする。複数の検証ルールを同じフィールドに適用してよく、それにより、分析されるレコードのそのフィールドに含まれる値に関して、単純に有効又は無効とするよりもリッチな分類がもたらされる。
【0033】
データ品質指標は、データソースの特定のフィールドについて最初に定義された後で、プロファイリング後に適用されてよい。データ品質指標の値は、階層にわたってデータ品質測定値として集約されて、関連したフィールドのセットにわたる見通しを与える。例えば、顧客(Customer)データセット内の「名(first_name)」及び「姓(last_name)」フィールドの品質及び入力についてのフィールド固有データ品質指標が、「顧客名(customer name)」のデータ品質測定値に集約され、この「顧客名」は「顧客住所(customer address)」の同様の集約データ品質測定値と組み合わされて、「顧客情報(customer information)」のデータ品質測定値が計算され得る。それにもかかわらず、こうした要約はデータ固有であり、「顧客情報」データ品質測定値の意味及び有用性は、(製品データと対照的に)顧客データを含むフィールドにおけるその出自に由来する。
【0034】
しかしながら、状況によっては、データ品質のシステムレベルの見通しが役に立つことがある。例えば、第1のシナリオにおいて、会社が1000個のテーブルを含むリレーショナルデータベースを有する。1000個のデータプロファイルは、すべての各テーブルに関する大量の有用な情報を含むことができるが、データアナリストによる相当なさらなる時間及び労力の投資なしには、全体としてのデータベースの見通しを提供することができない。特に、検証ルールが漸増的に展開されていくすべてのテーブルの再プロファイリングのコストが高くなり得る一方、プロファイリングを開始する前に検証ルールのフルセットを構築するための遅延が長くなり得る。
【0035】
第2のシナリオでは、会社が新しい請求システムへの移行をしている。彼らの既存の請求システムは、複数のデータベースを含み、いくつかのデータベースは1000個以上のテーブルを含んでいる。彼らは自身がデータ移行の開始前にデータをプロファイリングすべきことを知っているが、プロファイル結果のすべてを適時にどのように要約し、さらには、どのようにそれを活用するのだろうか。さらに、彼らは、データを移行しようとする前にデータが予め定められたデータ品質規格を満たすことを保証する必要がある。彼らはデータをきれいにする取組みにどのように優先順位を付けることができるのだろうか?
【0036】
第3のシナリオでは、会社が複数のレプリカデータベースを有するが、それらのデータベースは独立して更新されること、及び場合によっては独立して修正されることを許可されている。それらが依然として同期しているか又は差異が何であり得るかは、誰も確信していない。彼らは、検証ルールの本体を構築する必要なしに、単にデータベースを比較したいのであり、彼らは検証自体よりも整合性について懸念している。
【0037】
本明細書に説明される方法は、処理の順序と目的の観点の両方で、データプロファイリングとデータ品質追跡の間で実行され得る、バルクデータコンテキストを含む1又は2以上の特徴付け手順の適用に基づくデータの特徴付けを可能にする。いくつかの実施形態では、特徴付け手順が、データストレージシステム内のすべてのデータソースの複数のデータプロファイリングパスを必ずしも必要とせずに、検証ルール又は種々のデータ品質指標の効率的適用のために、プロファイル結果に基づくデータ特徴付けを可能にする。
【0038】
本発明の他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかになるであろう。
【発明を実施するための形態】
【0040】
図1を参照すると、データ処理システム100が、データストレージシステムに記憶された1又は2以上のデータソース102(例えば、データベーステーブル又はレコードの集合を含む他のデータセット)からデータを読み込み、プロファイリングエンジン104を用いてそれらをプロファイリングする。データソース102を記憶するデータストレージシステムは、例えば、任意の個数のデータベースシステム若しくは記憶媒体を含むことができ、データ処理システム100に統合されてよく、又は1若しくは2以上のローカル若しくはオンライン接続を介して接続されてもよい。プロファイリングエンジン104は、メタデータストア106から、レコードフォーマット情報、検証ルール、並びに任意に、データセット位置情報、及びプロファイル構成情報を読み込み、プロファイリングを準備する。プロファイルストア108に記憶されるプロファイル結果は、(フィールド、レコード、又はデータセットを含む)データソース102における任意のオブジェクトを要約する情報を含むことができる。例えば、フィールドレベルプロファイルは、データソースのレコードの特定のフィールド内に現れる値に関する情報を要約する。プロファイル結果は、選択されたフィールドに対する値エントリのリストとして配置されたセンサスデータを記憶する、要約センサスファイルを含むことができてもよく、各値エントリは、選択されたフィールドに現れる相異なる値を含んでおり、また、選択されたフィールドに相異なる値が現れるレコードの個数のカウントを含んでもよい。プロファイリングの後に、選択されたオブジェクトについてのプロファイル結果が、プロファイルストア108から読み込まれ、特徴付けエンジン110によって処理される。特徴付けエンジン110は、メタデータストア106又はユーザインターフェース112から、特徴付け手順、特徴付け構成情報、及びプロファイル識別情報を読み込んで、1又は2以上の選択された特徴付け手順を実行するための準備をする。ユーザインターフェース112からのユーザ入力は、特徴付けエンジン110の態様を直接制御することができ、それらには、どのプロファイルが特徴付けられるべきか、どの特徴付け手順(カテゴリーによってグループ分けされることがある)を適用すべきか、及びどんな閾値を特定の特徴付け手順で使用すべきかを選択することが含まれる。また、ユーザ入力は、適用すべき新しい特徴付け手順を構築するために用いることもできる。1又は2以上の特徴付け手順が1又は2以上のプロファイルに適用された後、データ(例えば、特徴付け手順の結果)が、経時的なデータ品質追跡及び監視のためにデータ品質エンジン114に渡されてもよい。
【0041】
いくつかの実施形態では、プロファイルストア108に記憶されたセンサスファイルが、データソース内のどの特定のレコードが所与の値を含んでいるかを識別する位置情報を含むことができ、(選択された)データソースのインデックス付きの(圧縮されていてもよい)コピーが、インデックス付きソースアーカイブ116にアーカイブされてよい。これらのデータソースのコピーは、データソース(例えば、データベース)が経時的に変化している場合に、プロファイリング時のデータのスナップショットの役割をする。システム100は、(例えば、ユーザインターフェース112を介した要求に応答して)「ドリルダウン」をサポートするために特徴付け手順の結果に付着された位置情報を使用することにより、データ特徴付け観測結果(特徴付け手順の結果)に対応するインデックス付きソースアーカイブ116の(原則的に網羅的セットの)レコードを取り出すことができる。取り出されたレコードは、さらなる処理及び/又は記憶のために他のデータ処理システムに転送されてもよい。いくつかの実施形態では、この位置情報表現は、ビットベクトルの形態をとる。値が現れるレコードの個数のカウントが値エントリに明示的に含まれない場合、それは位置情報から計算され得る。
【0042】
1又は2以上の特徴付け手順に基づくデータ特徴付けは、データブラインド方法で適用することができ、フィールド内の特定の値及びそれらの意味が無視されて、それらのパターン、カウント、及び分布(例えば、プロファイル及びセンサスデータの構成要素)が優先される。例えば、いくつかの特徴付け手順の場合、フィールドが、「p」、「q」、及び「r」の代わりに値「equity」、「bond」、及び「derivative」を保持することは重要でないが、フィールドが、1つの値を選択した分布を有する3つの値を含むことは重要であり得る。特徴付け手順は、一般に、プロファイル(又はセンサス)オブジェクトのクラス内の任意のオブジェクト、例えば、任意のフィールドレベルプロファイルに適用する。これは、同じ特徴付け手順が、オブジェクトの基礎にある意味論的意味の事前知識なしに、プロファイルオブジェクトのクラスのすべてのオブジェクトに適用され得ることを意味する。特徴付け手順の一部が、それ自体で、その適用可能性を決定することができる。
【0043】
例えば、フィールドレベルプロファイルは、値の一般的パターン及びそれらに関連したカウント(すなわち、特定のパターンを示すレコードの個数のカウント)のリストを含むことができ、パターンの一例は、他のすべてのキャラクタ(例えば、スペース又は句読点)を変更しないままで、すべてのアルファベット文字を「A」に置き換え、すべての数字を「9」に置き換えることによって、フィールド値から形成される。「支配的パターン(predominant-pattern)」特徴付け手順は、最も一般的な(非ブランク)パターンを有するレコードの割合を閾値と比較することにより、特定のパターンを有する値がフィールドに支配的に入力されているかどうかを決定するように構成され得る(「入力されたレコードの95%より多くが一般的パターンを有する場合、フィールドにそのパターンが支配的に入力されている」)。この特徴付け手順はすべてのフィールドに適用され得るが、いくつかの特定のフィールドのみが、条件を満たし、「1つのパターンが支配的に入力された」データ特徴付け観測結果をもたらすことになる。パターンの他の例は、参照により本明細書に組み込まれる米国特許出願第2012/0197887号に記載されている。
【0044】
特徴付け手順のデータ固有(意味論的)洗練及び拡張が可能であり、結果をリッチ化するために適用されてもよい。そのような拡張は、プロファイル若しくはセンサスデータにおける値の評価を必要とすることがあり、又はそのアイデンティティが特定の意味論的意義を有する特別な値を参照することがある。拡張された特徴付け手順は、やはり、それらのクラスのすべてのプロファイルオブジェクト(又は、特徴付け手順が関連するより前に条件を適用する場合はサブクラス)に適用されてよい。
【0045】
特徴付け手順は、階層構造及び/又は条件付きであってよい。フィールドに1つのパターンが支配的に入力されていると決定されると、パターンの性質に応じて追加の特徴付け手順が適用されてよい。例えば、支配的パターン特徴付け手順が、フィールドに16桁の数が支配的に入力されていることを検知(確認)した場合、2次(データ固有)特徴付け手順を呼び出し(起動し)、特定の16桁の値がLuhnテストを満たすかどうかをチェックしてもよく、このテストは、最初の15桁に適用されたアルゴリズムが16桁目を決定した場合に成功である。値のサンプルが、一般的値及び非一般的値のリストにおけるフィールドレベルプロファイル内に提供され得る。サンプルは、ランダムな成功の機会が10回に1回のみであるので、フィールド内の値がLuhnテストを満たす可能性があるかどうかを信頼して決定するのに十分であり得るが、相異なる値のフルセットが、異なる状況において又はテストに失敗する値の正確なセットを検知するために必要とされる場合、センサスデータ内に存在する。
【0046】
データ特徴付けの1つの目的は、フィールドと意味論的内容との関連付けの事前知識なしに、データストレージシステムの入力構造から推論され得るものを、ユーザ、おそらくはデータアナリスト又はプログラマに通知するために、観測結果をカタログすることである。観測結果は、データプロファイリング及びデータ品質監視の価値判断(例えば、「無効」、「低データ品質」)を必ずしも示唆しないが、データの特徴(例えば、「支配的にヌル」、「候補主キー」)を単純に識別し得る。
【0047】
意味論的コンテンツのフィールドの分離の例として、意味論的結論を推論するデータ特徴付けを考えると、Luhnテストを満たす16桁の番号からなるフィールドの値が、有効なクレジットカード番号として推論される。Luhnテストを適用することによって有効なクレジットカード番号として16桁の番号を認識する特徴付け手順が、特徴付け手順が開始される前に定義されるが、手順が適用される特定のフィールドは必ずしも事前に指定されず、これらのフィールドは特徴付けプロセス中に推定される。検証ルールと同様に、特徴付け手順は意味論的結論(「有効なクレジットカード番号」)を最終的に実現し得るが、特徴付けられるフィールドを推定するこの能力は、このタイプの特徴付け手順をおおよその検証ルールから区別する。データベース内に多数のテーブルを含むデータストレージシステムのコンテキストでは、差異が著しくなり得る。どのフィールドがクレジットカード番号を保持すべきかをデータベーススキーマから識別すること、及び、データプロファイリング中に実行される検証ルールに関して行われるように、クレジットカード検証ルールがそれらの識別されたフィールドのそれぞれに適用されるべきと指定することには、主題の専門知識及び相当な努力を必要とすることがある。対照的に、データプロファイリング後に適用されるデータ特徴付けは、プロファイル結果を活用して、どのフィールドに16桁の番号が支配的に入力されているかを発見し、続いてLuhnテストをそれらのフィールド内の値に適用し、(例えば、テストを満たす値の統計に基づいて)どれがクレジットカード番号を含む可能性があるかを識別することができる。さらに、フィールドがクレジットカード番号を含むという実行結果(観測結果)を提供した後、無効なクレジットカード番号のサブセットが(センサスデータから)識別され抽出され得る。
【0048】
このクレジットカード番号の例は、少なくともいくつかの検証ルールが、データを再プロファイリングすることなく、特徴付け手順として再キャストされ遡及的に適用され得ることを示す。
【0049】
いくつかのデータ特徴付け結果は、それらの結果から引き出され得る潜在的な結論(例えば、「このフィールドはクレジットカード番号を保持する」又は「このフィールドは主キーである」)を伴ってもよい。システム全体で、他の観測結果(例えば、「このフィールドは支配的にヌルである」)とともに、これらの結論は、潜在的な結論及び観測結果の性質に基づいて種々の階層に従って、優先順位が付けられた様式で(例えば、結論での信頼性を示す評価とともに)カタログされユーザに提示され得る。これは、データストレージシステムのコンテンツの予備的アウトライン(例えば、キー識別、提示されたキー関係、列挙されたドメイン識別など)、潜在的結論(意味論的推論)を肯定又は否定するために主題の専門知識が必要とされるという表示、及び、それらが基礎的なデータ品質問題の兆候(例えば、参照整合性違反、ドメイン又はパターン違反、異常値など)であるかどうかを決定するために調査を必要とする問題を含む、それらのデータへの種々のエントリルートを、ユーザコミュニティに提供する。
【0050】
複数のデータソースを記憶したデータストレージシステムにおいて、システムをどのように見るかの視点を提供するために、大まかなアウトラインであっても1又は2以上のロードマップを有することは有用である。データ特徴付けは、そのようなマップで入力し、それらを有用にするための詳細の一部を提供することができる。リレーショナルデータベースに関して、データベースのスキーマは1つのマップを提供するが、スキーママップは、データそれ自体から収集された情報で注釈が付けられたときに大幅にリッチ化される。データ特徴付けの後に入力されるユーザインターフェース内の注釈付きスキーマ図は、以下の質問に回答することができる。各エンティティ内にいくつのレコードがあるか?、エンティティ間の関係のカーディナリティは何か?、関係のカーディナリティが多対一又は多対多である場合、カーディナリティ度の分布(すなわち、N対1マッピングにおける数N)は何であるか、そして各々のカーディナリティ度はどのようなものか?
【0051】
代替の視点は、コンテンツ領域以外のライン及びキー関係(例えば、主キー対外部キー関係)に沿ってスキーマが再表現されるときに可能である。例えば、1つの代替形態では、種々のフィールド内の値を有するレコードの複数のデータセットを記憶するデータストレージシステムが考えられ、データセットが、未処理のレコードカウント、又は最も多様なフィールド(典型的には1次キーフィールド)の相異なる値のカウントによってサイズで順序付けられ、最も密集したデータセットの間のキー関係パスの長さを最小にする2次構成を備える。この構成(表現)は、データの集中を強調する。フィールドの入力(例えば、入力されていない又はヌルのフィールド)を評価するデータ特徴付けの視覚的表示に結合されたとき、データの完全性又は包括性を確認することができる。データがより完全でない領域は、調査及び可能な修復のために識別され得る。
【0052】
第2の代替形態は、個々のフィールドに焦点を当てることができ、フィールド毎に、そのフィールドに現れる関連したデータセットのセットを挙げる。システム100は、フィールドの表現を含むユーザへの表示のための図を作成することができ、フィールド間のリンクが、それらが一般的データセットに属する場合に作成される。最も高く使用されたフィールドを中央に、最も使用されていないフィールドを図の領域の外側に配置することにより、順序付け全体が実行され得る。ここで、特徴付け問題は、例えば、フィールドに関連付けられた各データセットに特徴付けを関連付けることにより、この図の上部に重ねられ得る。例えば、フィールドに関連付けられたデータセットのリストは、各データセットとペアにされてそのデータセットフィールドペアで特徴付けられた状態を示す(異なる特徴付け状態にマッピングされた緑/黄/赤色を有する)トラフィック光インジケータを有してもよい。そうすると、特定のフィールドに結び付けられたデータセットにわたる特徴付けインジケータの相関が、視覚的に見分けることが容易となる。表示される特徴付け手順の選択は、その手順の結果のシステム全体の見通しの視覚化を提供するようにユーザによって変更され得る。
【0053】
そのようなフィールド中心の見方が提供するデータ特徴付けの別の態様は、システム全体にわたる列挙されたドメイン値の使用を示す。いくつかの特定のフィールドは、しばしばエンコードされた、参照データを保持し、その参照データに対して、あるデータセットが、許容値のリスト及びそれらの説明を提供する。列挙されたドメインとして検知されているフィールドの入力の整合性を検証することが、一般的フィールドを共有するデータセットのリストを示すように構成された見方において可能となる。例えば、データセットは、列挙されたドメインの許容値のすべてを保持するデータセット、許容値のサブセットを保持するデータセット、及び許容値を超える付加的値を含むデータセットを区別するように塗色され得る。エンコードされた値のリストの類似性の測定値によって並び替えることにより、表示が整えられる。多数の特徴付けに関連付けられた結果を伝達しようとするとき、そのような視覚化はかなり有益である。
【0054】
データ特徴付けが提供するデータソースへの他のエントリルートのうち、意味論的推論が潜在的に重要である。既に説明したように、可能なクレジットカードフィールドのリストを確認することは、スキーマ全体からそれらを識別することより容易なことがあり、したがって、開始時において、それが完全に正確でなくても、白紙状態(何もなされていない状態)よりも優れている可能性がある。同様に、特定の種類のデータ、例えば、社会保障番号のような個人識別情報の識別が、特にフリーテキストを含むフィールドで重要である多くのシナリオが存在する。特徴付け手順は、そのような情報を識別するために定式化され得る。
【0055】
1 データプロファイリング
データソースのデータプロファイリングは、データ品質追跡プログラムの一部として実行することができる。個々のデータソースは、それらのコンテンツを要約するようにプロファイリングされてよく、これは、相異なる、一意、ブランク、ヌル、又は他のタイプの値の個数をカウントすること、各フィールド内の値をその関連付けられたメタデータと比較して、データタイプ仕様との整合性を判定すること(例えば、数値フィールドに文字があるか?)、検証ルールを1又は2以上のフィールドに適用して、例えば、ドメイン、範囲、パターン、又は整合性を確認すること、関数従属性に関してフィールドを比較すること、1又は2以上のデータセット内のフィールドをそれらの参照整合性(すなわち、フィールドが結合のためのキーとして使用された場合にデータがどのように一致するか)に関して比較することを含む。ユーザのためにプロファイリングを可視化した結果は、例えば、要約レポート又はデータプロファイルであり、これは、一般的、非一般的、又は他のタイプの値及び値のパターンのリストも含むことができる(例えば、すべての文字がAに置き換えられ、すべての数字が9に置き換えられたとき、結果は、値における文字、数字、スペース、及び句読点の位置を示すパターンである)。データプロファイルを見るためのユーザインターフェースは、上記の情報を伝達するために種々のテーブル及びチャートからなることが可能であり、レポートから元のデータにドリルダウンする能力を提供することができる。データプロファイルは、正しいデータ処理を妨げるおそれがある欠損、不整合、無効、又は他の形の問題のあるデータを明らかにするために有用である。ソフトウェアの開発を開始する前にそのような問題を識別して対処することは、開発後に初めて問題に遭遇した場合にソフトウェアを修復しようとするよりもかなり低費用で容易である。
【0056】
データプロファイルを実行する上で、データソースのすべてのフィールド内の相異なる値のフルセットと、それらの値を有するレコードの個数のカウントとを記録するセンサスファイルがあってよい。いくつかの実施形態では、元のレコードの位置(例えば、元のデータソース又はデータソースのコピー内の記憶位置)が所与の値を有するのを識別する位置情報も取り込まれる。
【0057】
検証ルールは、種々のデータ固有の条件を検出するためにプロファイリング前に指定されてよい。例えば、フィールド内の値は、有効な値(若しくは既知の無効な値)の列挙されたリスト、又は有効な(又は無効な)値を含む参照データセットと比較することができる。有効若しくは無効な値の範囲、又は有効若しくは無効な値のパターンが指定されてもよい。複数のフィールド、閾値、事例ベースのビジネスロジックの階層を含むより複雑なルールが適用されてもよい。
【0058】
データプロファイル情報は、粒度の複数のレベルにあってよい。例えば、データソース内のレコードの各フィールドに関連付けられたプロファイル情報、データソース内の各レコードに関連付けられた別のプロファイル情報、及び全体としてデータソースに関連付けられた別のプロファイル情報があってよい。
【0059】
フィールドレベルプロファイル情報は、フィールド内の相異なる値の個数、一意の値(すなわち、一度発生する相異なる値)の個数、又はヌル、ブランク、若しくは他のタイプの値の個数を含む、カウントの数を含むことができる。種々の条件を検出し記録するために、プロファイルの処理中に閾値、範囲、又は互いに対して異なる数を比較するための問題ルールが作成され得る。或いは、相異なる値の個数が、一意の値の個数より大きい場合(「相異なる値の個数>一意の値の個数」)、「このフィールド内に重複」があるはずである。システムレベルに要約されたとき、各問題のインスタンスの個数がカウントされ得る。
【0060】
マルチフィールド又はレコードレベルプロファイル情報は、入力の相関パターン(例えば、フィールドのペアが共に入力されている若しくは共に入力されていない)を含む複数のフィールドを伴う検証ルールに関連付けられたカウント、相関値及び/又はパターン(例えば、country_cdが「US」である場合、郵便番号(zipcode)フィールドに5桁の数が入力されているはずである)、或いは、複数のフィールドの指定された組み合わせ(「複合キー」)の一意性を示すカウントを含むことができる。
【0061】
データパターンコードフィールドが、フィールドの相関入力に関連付けられた特徴付け手順をサポートするために、プロファイリング前にレコードに追加され得る。データパターンコードは、1又は2以上のフィールド又はフィールドのフラグメントの1又は2以上のクラスにおける値の存在をエンコードするために割り当てられた値である。例えば、入力パターンコードが、以下の分類を使用してレコードの文字列フィールドについて構築され得る。すなわち、各文字列フィールドには、それがヌルである(存在しない)場合に「0」の値が割り当てられ、入力されている(存在し、空又はブランクでない)場合に「1」が割り当てられ、空である(存在するがデータを含まない、つまり空の文字列である)場合に「2」が割り当てられ、ブランクである(存在し、1又は2以上のスペースキャラクタ(空白文字)からなる)場合に「3」が割り当てられる。レコードの値は、レコード内に現れる文字列フィールドの順序セットのためのこれらの値の連結であり、例えば、5文字列フィールドレコードに対する「11230」は、第1及び第2の文字列フィールドが入力されており、第3のフィールドが空であり、第4のフィールドがブランクであり、最後がヌルであることを示す。別のパターンコードは、2つの値のうちの1つ(例えば、0又は1、「Y」又は「N」、「M」又は「F」)のみをとるインジケータフィールドの設定の集合をビットマップとして表現してよい。異なる値クラスを組み合わせることが、データパターンコードを構築するときに可能である。データパターンコードは、元のデータソースに戻ることなくレコードの複数のフィールドの間の相関に関して多くのレコードレベル検証ルールが定式化されることを可能にする。
【0062】
データソースレベルプロファイル情報は、レコードの数、ボリューム、プロファイル実行の時間を含むことができる。システムレベルに処理されたとき、これは、データストレージシステムに記憶されたデータソースのレコードの個数及びボリュームの分布を与える。時間を経て、レコードの個数及び/又はボリュームの増加率が、個々のソース及び集合の両方について判定され得る。データ移行に関して、データベース内の入力されていないテーブル及びその割合、並びに他のテーブルの間のサイズ分布を知ることが、移行を計画するために役立つ。キャパシティ計画のために、データベースに追加されるレコードの個数及びボリュームの指標が重要である。
【0063】
データプロファイリングは、本質的に一度に1つのソースとみなされることがある。各データソースに1つのプロファイルがあり、第2のデータソースとの参照整合性及び関数従属性を分析するデータソース間に時折、重複を伴う。
【0064】
このタイプのプロファイリングを実行する上での課題は、センサスファイル及びデータプロファイルを計算するために長い時間がかかり得る大きなデータソース及び/又は多数のデータソースに関するものである。また、どんな検証ルールが適用するために興味ある又は適切であるかの事前知識がないことがある。或いは、多数のソースについて、プロファイリングが始まる前に、ソースの集合に対する検証ルールを定式化し適用するために長い時間がかかることがある。データソースのデータプロファイルは、最初に検証ルールなしに取得され得る。データプロファイルが分析され、候補検証ルールが定式化され、第2のプロファイルが生成される。長い時間をかけて、(徐々に)検証ルールが蓄積され洗練されて、プロファイルが再実行される。
【0065】
2 特徴付け手順
特徴付け手順は、既存のデータプロファイル及びそれらの関連付けられたセンサスファイルに適用することができる。これは、データソースの所与の集合について、完全なプロファイルを生じさせる潜在的に高価なステップを1回のみ実行することを可能にする。これはまた、プロファイリングの開始前に、検証ルールの完全なセットの定式化の遅延を回避することができる。任意のフィールドレベルプロファイルに適用可能な予め定義された特徴付け手順の範囲は、完全なプロファイルの結果に最初に適用され得る。さらに、検証ルールにいくらか類似したデータ固有の特徴付け手順は、プロファイリングの開始前に(任意のプロファイル結果が利用可能になる前に)、1つより多くの完全なプロファイルを取得するコスト、又は検証ルールの完全なセットの定式化の遅延を被ることなく、漸増的に展開され得る。完全なデータプロファイルは、データソースが変化したときに要求に応じて再び生成されてもよく、特徴付け手順は、もたらされたデータプロファイルに適用されてよい。
【0066】
以下の例における「システム」は、2又は3以上のデータソースを含むものとする。各データソースは、上述のように、一緒に又は別々に、ことによると複数のやり方で、プロファイリングされ、例えば、データの特徴付けから関数従属性及び参照整合性分析が分離される。これは、2又は3以上のデータプロファイルの集合及びそれらの関連したセンサスファイルをもたらす。特徴付けエンジン110は、データプロファイルの選択を処理する。特に、特徴付け手順が1又は2以上のプロファイルに適用されて、観測結果によりリッチ化された要約を生成する。また、特徴付け手順観測結果が、集約されるとともに追加の特徴付け手順を受けて、システムレベルの要約を生成し得る。システムは、場合によっては重複する方法で、グループ化されて、より大きなシステムを形成してよく、その結果は、データソース及びシステムの異なる組み合わせについての要約の集合となる。
【0067】
(網羅的でなく例示的な)いくつかの例で、特徴付け手順をデータプロファイルに適用するときに実行され得る分析の種類を説明する。まず、フィールド及びレコードの入力の問題に注目する単一のプロファイルの分析を考える。フィールドにヌル値を含むレコードの割合が閾値より大きい場合(例えば、「ヌル値の個数/レコードの個数>0.95」)、問題「支配的にヌルのフィールド」が検出され記録され得る。或いは、ブランク、空、又はヌルのフィールドの個数が閾値より大きい場合(例えば、「ブランクの個数+空の個数+ヌルの個数>0.95」)、「支配的に入力されていないフィールド」がマーク付けされ得る。同様に、「特に入力されていないフィールド」を検出するために、ユーザが、調節可能な閾値を修正し、デフォルトで0.3に設定してもよい。
【0068】
1又は2以上の値が偏って表現されるフィールドが関心(注意)の対象となり得る。いくつかの実施形態では、これは次のように検出され得る。値に関連付けられたレコードのカウントが、任意の値に関連付けられたレコードの平均カウントより上の2以上の標準偏差である場合、特徴付けエンジン110は、「支配的に入力されたフィールド」を報告し、支配的な値のリストを提供することができる。これは、一般的値のセット及びそれらのカウントから平均及び標準偏差を推定することによって計算することができる。また、すべての値のうちの支配的な値と、特定の値、例えば、ブランク若しくはヌル値(又はユーザ宣言「センチネル(sentinel)」値)を除外した支配的な値との両方を報告することが役立つことがある。例として、一般的値のリストが、カウント10、1、及び1を有する3つの値を含むと想定する。平均カウントは、(10+1+1)/3=4である。標準偏差は、sqrt((36+9+9)/3)≒4.2である。したがって、10>4+4.2が、最も大きいカウントを有する値が支配的に入力されることを示唆する。この手順は、値の知識を必要としない。
【0069】
この手順のデータ固有の変形形態は、特定のデータ値を伴う。3つのフィールド値が「A」、「P」、及び「Z」であると想定し、「A」レコードの割合が50%より大きい場合に注目に値するとする。特徴付け手順は、以下のように「3つの値「A」、「P」、及び「Z」を含むフィールドについて、「A」レコードの割合が50%より大きい場合に注目に値する」として定式化されてよい。特徴付け手順は、まず、相異なる値のカウント3を有したフィールドを識別し、次いで、そのうち一般的な値である「A」、「P」、及び「Z」を有するものを識別し、最後に、「A」の割合が50%より大きいかどうかを識別する。第1印象では、これは不自然に見えるかもしれないが、手順が関連するフィールドが迅速に検知されて適切なテストがデータモデルの専門知識を必要とせずに適用されるので、実際には、システム内のすべてのフィールドにまとめて適用される場合に効率的である。
【0070】
上述の手順のいくつかは、プロファイル出力に存在する1又は2以上のカウント、値リスト、又はカウント及びリストの関数を使用して、フィールドに関する入力問題を検出し、それを記録する。いくつかの実施形態では、特徴付けエンジン110によって実行されるプロファイルのセットの後続する要約が、各種類の観測結果の個数をカウントし、その観測結果が発生する各データセット/フィールド/プロファイルの3つから構成される組へのリンクを記録することができる。(複数のプロファイルが、特に時間の経過とともに、所与のデータセット/フィールドペアから作成され得るので、3つから構成される組が使用される。)このリンクは、観測結果が作成された各基礎的データセット/フィールド/プロファイルに対する最終的要約プロファイルレポートでの「ドリルダウン」をサポートするために記憶され得る。すると、問題を明らかにする特定のレコードを見るための識別されたプロファイル内のさらなるドリルダウンが、インデックス付きソースアーカイブ116を使用して可能となる。
【0071】
場合によっては、より詳細な分析がプロファイルから行われることを可能にするために、プロファイルの実行前にデータセットをリッチ化することが有用である。例えば、上述のような入力のためのデータパターンコードが、プロファイリングの実行前にシステム100によってデータに追加されてよい。入力されている又はされていない各フィールドの入力の状態は、記録のためにコードに組み込まれる。これにより、複数のフィールドにわたる相関入力パターンをプロファイルの分析で検出することが可能になる。例えば、2つのフィールドが、いつも両方とも、入力されているか入力されていないかのいずれかであり得る。これは、フィールドの各ペアの間のペアの相関を有するレコードの割合をチェックすることにより、入力パターンコードの集合から決定することができ、すなわち、「排他的NOR」をとる、つまり、両方のフィールドが入力されている若しくは両方が入力されていない場合に1、そうでない場合に0をとることにより、入力のそれらの状態の論理的同等のレコードの割合を計算することができる。この種の一般的計算は、フィールドのコンテンツについて見えず、したがって、一括処理のコンテキストで適用することができる。
【0072】
データ固有パターンコードはまた、有用な特徴付け手順をもたらす。例えば、元のレコードが、顧客名について該当する3つのフィールド「名(first)」、「ミドル(middle)」、「姓(last)」を含むと想定する。単純なパターンコードは、名が入力された場合の文字「F」、ミドルネームが入力された場合の文字「M」、及び姓が入力された場合の文字「L」の連結としてよい。いずれかのフィールドが入力されていない場合、対応する文字がコードに含まれていない。例えば、「FM」コードは、名及びミドルネームを含むが姓を含まないレコードを表す。プロファイルにおいて、各コードのカウントの数は、一般的値のリスト内に出される(より一般的には、すべての相異なる値のカウントが記録されるプロファイルの基礎となるセンサスファイルに存在する)。そして、ユーザは、いくつのレコードが名とミドルネームの両方を有するが姓を有していないかを、「FM」に関連付けられたカウントから決定することができる。この数は、入力パターンコードなしに、データセットのプロファイルに存在する名フィールド内の入力されたレコードのカウント及びミドルネームフィールド内の入力されたレコードのカウントから決定することはできない。
【0073】
名及びミドルネームが入力されたときの姓の不在は、上流工程における特定のエラーの発生のインジケータとなり得る。この条件を有するレコードのカウントを監視することにより、会社は、このエラーの発生の頻度を監視し、問題を解決するための取り組みの有効性を検証することができる。
【0074】
2又は3以上のフィールドの相関入力で示される問題は、診断するには微細であることが多く、したがって、プロファイル内の相関レコードを識別する手段を有することが有用である。問題の発生に対するフィールド間の相関の関係付けは最初にわからない場合がある。そのような関連付けは、特定のエラーを有することが知られるレコードのリストを、異なる入力パターンコードに関連付けられたレコードのリストと相関させることによって推定され得る。いったん関連付けが識別されると、何を探すべきかが知られる前に、過去にエラーが発生した頻度を決定するために、過去のプロファイルが使用され得る。これは、システム100により、そのような相関を遡及的に識別することができる十分にリッチな入力コードを構築することによって可能にされ得る。データパターンコード及び関連したレコード位置情報を含む意図は、部分的にはこの種の遡及的分析を促進するためである。
【0075】
フィールドの入力の単なる状態を考慮した後、可能な次のステップがフィールド内のキャラクタのパターンに注目する。例えば、文字が「A」に置き換えられ、数字が「9」に置き換えられ、句読点及びスペースがそのままにされた場合、フィールド値を構成するキャラクタからパターンが形成される。しばしば、確立すべき最初のことは、支配的にフィールド内のエントリのすべてが同じパターンを満たすかどうかである。これ自体が、固定されたフォーマットのフィールドを、より制約されないテキストを含むフィールドから区別するので、検出され記録されるべき注目に値する特徴である。日付、クレジットカード番号、社会保障番号、及びアカウント番号などの多くのフィールド値は、特徴的パターンを有する。例えば、日付は、典型的には、種々の可能なフォーマットの8つの数、例えば、99/99/9999、9999−99−99、又は単純に99999999からなる。これらの特徴的パターンの1つを認識すると、プロファイル内の一般的値のリストを、日付として検証するための関数に渡すことができ、この関数が、リスト内の値にわたって一貫して、同じ2桁が1と12の間であり、さらに2桁が1と31の間であり、残りの4桁が1910〜2020の範囲(ことによっては状況に応じてより狭い又はより広い)であるかどうかをチェックし得る。クレジットカード番号は、16桁のフィールドであり、その最後の桁が、有効なクレジットカード番号であることを確認するためにLuhnテストによって検証することができる数字である。
【0076】
フィールドが支配的であるが普遍的でないパターンを有する場合、例外がしばしば関心の対象となる。これは検出され記録され得る。位置情報、例えば、各パターンに関連付けられたレコードがプロファイルに記録された場合、それらは、要約レポートからドリルダウンで取り出すことができる。
【0077】
フィールドにおけるパターンの検査はまた、フィールドのデータタイプ仕様に対するフィールドのコンテンツの検証を可能にする。この検証は、独立してプロファイルに記録され得るが、場合によっては、より詳細な分析をプロファイルから行うことができる。特に、例えば、表面上は数値のフィールドに文字がある場合に注目に値する。アカウント番号が、例えば、NUMERIC(10)として指定されるが、プロファイルは、アカウント番号の最初の2つのキャラクタが実際には数字の代わりに文字であることを示すことがある。これが支配的パターンである場合、実際のアカウント番号が2つの文字で始まるという推論が導かれる可能性があり、それは、間違ったタイプ仕様である。これは、複数のプロファイルのうちの1つのプロファイルを準備している場合にプロファイルを分析した後に記録される結論であろう。
【0078】
各フィールド内のデータのパターンを考慮した後、フィールド内の値のセットに注意が引き付けられ得る。第1の考慮事項は、フィールド内の相異なる値の個数である。(絶対数、又はレコードの個数に対して相対的に)比較的少数の相異なる値を有するフィールドは、しばしば、限られたセットの列挙された値から引き出される参照データを含む。そのようなフィールドは、相異なる値の個数がレコードの個数と匹敵するフィールドと異なる。これらは、典型的には、キー(レコードを一意に識別する)、又は、ファクト(各レコードでランダムに異なる取引量のような特定のデータ項目)である。さらに、キーは、データをリンクするために、他のデータセットで再使用されるが、ファクトはそうではない。データセット間の交差結合分析は、フィールド値の相対的一意性及び重複範囲に基づいて最初に提示されるキー関係を確認することができる。
【0079】
関心のある値の第3のセットは、相異なる値のカーディナリティが、レコードの個数に匹敵せず、非常に小さくもないものである。これらの値は、外部キー又はファクトデータであり得る。他のプロファイル内のデータとの比較が、決定をするために必要であり得る。
【0080】
比較的少数の相異なる値を有するフィールドのセットを考える。レコードの個数が相異なる値の(少ない)個数と等しいデータセットが、列挙された値の完全なセットを含む候補参照データセットである。候補参照データセット及びフィールドの識別が注目に値し、要約プロファイルに記録され得る。そのような参照データセットは、しばしば、同じ個数の相異なる値を有する少なくとも2つのフィールドを有し、一方は他のデータセットで再使用されるコードであり、他方は記述である。これらは、2つのやり方で区別され得る。第1に、記述は、典型的にはコードより自由なフォーマットである(セットのレコードにわたって不規則なパターンがある)。第2に、コードは、他のデータセットで再使用される。
【0081】
一実施形態では、あるデータセットのあるフィールドのフィールド値の他のデータセットの他のフィールドでの再使用は、以下のやり方で決定することができる。フィールドレベルプロファイルの集合を取り上げる。相異なる値の個数が閾値(例えば150)より小さく相異なる値の個数が一意の値と等しい、それらのフィールドレベルプロファイルを探し出すことによって、候補参照データセットに対応するフィールドレベルプロファイルの部分集合を探し出す。次に、各候補参照データセットフィールド内の相異なる値のセットを残りのフィールドレベルプロファイルのそれぞれにおける相異なる値のセットと比較して、相当な重複を有するものを探し出す。データ品質問題があり得るため、一致は完全である必要はなく、実際、相当な重複の存在での不一致を検出することが、比較の1つの目的である。相当な重複は、候補参照データセットフィールドで1又は2以上の値を有する入力されたレコードの割合が閾値より大きいこととして定義され得る。これにより、関連付けを損なわずにソースデータセットにおける入力されていないレコードが許容され、それにより、(少数の)いくつかの無効な値(すなわち、候補参照データセットフィールドに存在しない値)が許容される。
【0082】
この特徴付け手順は、異なるデータセットにおけるフィールド間の関連付けが未知であり、検知されなければならないときに、検知段階の際に有用である。そのような関連付けが知られて宣言されたときに後の段階の動作において、特徴付け手順は、不一致の値の閾値割合を超えるときを検出するように変更され得る。例えば、(例えば、新しいデータソースが上流に追加されたときに)新しい値がデータセットに追加されているが、参照データセットには(まだ)追加されていないことがある。これは、識別するために重要な変更である。したがって、同じセットの値を共有することが期待されているフィールド内の相異なる値のセットを比較することは、継続的に、データセットフィールドプロファイルに適用され得る重要なテストである。
【0083】
2又は3以上のフィールドレベルプロファイルにおける相異なる値のセットが比較され得る種々のやり方がある。素朴な実施形態は、そのほとんどが成功の機会がない全対全のペア毎の比較であるので、特に、1000個のテーブルを有するデータベースでそれが有することになる多数のフィールドレベルプロファイルに直面した場合に、比較の回数を減少させる手法は重要である。
図2は、特徴付けエンジン110によって実行される特徴付け手順の一実施形態を示す。第1のステップは、相異なる値のカウントNにより降順でデータセットA、B、C、Dの候補参照データセットフィールドのためのプロファイルのセット200A、200B、200C、200Dを編成する。非参照データセットフィールドプロファイルと呼ばれる各残りのデータセットフィールドプロファイル、例えば、データセットFに対するプロファイル200Fの次に、特徴付けエンジン110は、相当な重複テストを満たすために必要な相異なる値の最小数を探し出す。これは、入力されたフィールド値の合計をとり、続いて、残りの入力されたレコードの割合が相当な重複閾値を下回るまで、最も一般的でないフィールドを除去することによって行われ得る。参照値の最小数は、残りのフィールド値の個数に1を足した数である。プロファイル200Fにおいて、最後の値「s」が廃棄され、値204に関して、「s」を除外した入力されたレコードの割合は、(163+130+121)/(163+130+121+98)=414/512であり、相当な重複閾値の0.95より小さいことが見出される。これは、3+1=4つの値が、プロファイル200Fにおいて値カウントとの相当な重複基準を満たすために参照データセットで必要とされることを意味する。4つより少ない値を含むいずれのデータセットも、プロファイル200Fとの相当な重複テストを満たすことができず、その理由は、プロファイル200Fから選ばれた3つ以下の値の任意のセットは、95%より小さなFレコードの割合に及んでおり、これは、3つの最も一般的な値が及ぶ割合を見出すことにより証明されている。これにより、相当な重複の機会となるにはそこで少なすぎる値を有する参照データセットは、考慮から外される。このケースでは、プロファイル200DのデータセットDの参照データセットフィールドが除去される。
【0084】
次のステップは、非参照データセットフィールドの最頻値を各参照データセットフィールドと比較して、どの参照データセットフィールドでそれが発生しないかを決定する。最も一般的な値を含まない入力されたレコードのすべての入力されたレコードに対する割合が、相当な重複閾値より低い場合、最も一般的な値を含まない、いずれのデータセットフィールドも、相当な重複閾値を満たすことができないので除外することができる。この例では、200Fにおける最も一般的な値は「p」である。値「p」を含まない入力されたレコードの割合は、(130+121+98)/(163+130+121+98)=349/512<0.95であり、相当な重複閾値より低い。これは、「p」を含まないいずれの他のデータセットフィールドも除外できることを意味する。(一致がないレコードの割合が、相当な重複閾値が満たされ得ないのに十分な大きさである間、2つ以上の値が除外される必要があり得る。)
【0085】
この比較を行う1つのやり方は、特徴付けエンジン110がルックアップデータ構造206(例えば、ルックアップテーブル)を構築することであり、ルックアップデータ構造206のエントリは、各参照データセットフィールド値、及びそのデータセット(又はデータセットプロファイル)において値が発生することを示す位置情報のベクトルからなる。エントリをラベル付けするフィールドが便宜上追加されてもよい。例示的ルックアップデータ構造206において、エントリ「p1[A,B,D]」は、プロファイル200Fからの値「p」がプロファイル200A、200B、及び200Dで発生することを示す(1は、エントリをラベル付けするフィールド値である)。ルックアップデータ構造206は、正規化された形態で保持されてもよく、各エントリは、値が発生する1つのデータセットプロファイルを識別する。ここで、ルックアップデータ構造206において「p」値を探索することにより、関連した参照データセット「[A,B,D]」を探し出すが、このうちDは、有する参照値が少なすぎるとして既に除去されている。この探索の効果は、十分な個数の値を有するが最も一般的な値「p」を含んでいないCを除去することである。
【0086】
最後に、相当な重複の条件が潜在的に満たされ得る参照データセットフィールド及び非参照データセットフィールドのペアのセットが与えられると、相異なる値のセットの直接比較を行うことができる。一実施形態では、この直接比較は、相異なる値のセットのベクトル交差を形成し、一致する残りのデータセットフィールドにおけるレコードの割合を決定し、相当な重複閾値との比較をすることによって行うことができる。第2の実施形態では、ビットベクトルが、参照データセットフィールドプロファイルと非参照データセットフィールドプロファイルとの両方で相異なる値のセットから形成され得る(候補参照データセットフィールドと候補非参照データセットフィールドとにわたって相異なる値の総計から各異なる値にビットを割り当てることにより、形成され得る。同じ値が2以上の参照データセットフィールドに存在する場合、それに1ビットのみが割り当てられる必要があることに留意されたい。)参照値のビットへの割り当ては、ルックアップデータ構造206の最初の2つの列によって示される。各参照データセットについて得られたビットベクトルは、システム情報208内に収集される。どの参照値がプロファイル200Fに入力されたかを示すビットベクトルが、ビットベクトル212によって与えられている。5番目のビットは0であり、これは、参照値「t」がプロファイル200Fにプロファイリングされたデータセットフィールドに存在しないことを示す。プロファイル200Fビットベクトル212、及びシステム情報208のA及びBエントリにおける各ビットベクトルにおけるビットベクトルの単純な論理ANDは、共通して保持される相異なる値の集合を与える。そして、残りのデータセットフィールド内のレコードの割合が計算されて相当な重複閾値と比較され得る。結果214では、プロファイル200Aと200Bの両方のデータセットフィールドがプロファイル200Fの非参照データセットフィールドに対する可能な参照データセットフィールドであることが見出される。
【0087】
いくつかの実施形態では、追加の特徴が、計算時間を減少させることができる。ルックアップデータ構造206に対する最も一般的な値に関する探索の後、いくつかの非参照データセットフィールドプロファイルが、
図2のように2以上の参照データセットフィールドに対する候補一致となり得る。一度、非参照データセットフィールドを第1の参照データセットフィールドとペアにする一致が見出されると、非参照データセットフィールドは、一致する参照データセットフィールドに十分に類似する他の参照データセットフィールドに対する候補としてのみ考えられればよい。
【0088】
追加の処理及び/又は前処理が、類似の参照データセットフィールドを識別するために使用される。そのような類似性の検出は、この計算最適化から独立して関心の対象となってよい。キー観測結果では、同じ数の値を有する参照データセットのすべてが同じ値を実際に共有するわけではないとされる。参照データセットフィールドプロファイルの集合は、互いに比較されて、それぞれがいくつの共有された値を有するかを見出すことができる。相当な重複テストが、非参照データセットフィールドと共有されなければならない相異なる値の最小数を既に決定している。プロファイル200Aを有する参照データセットフィールドAが、プロファイル200Fを有する非参照データセットフィールドFに一致すると見出されている、すなわち、それらは、プロファイル200Fを有する相当な重複テストを満たすのに十分な値を共有すると想定する。4つの値「p」、「q」、「r」、及び「w」からなるプロファイル200Eを有する追加の参照データセットフィールドEがあると想定する。この参照データセットフィールドは、4つの値を有し、したがって、上述のプロファイル200Fを有する相当な重複テストを満たすのに十分な値を有する。しかし、データセットフィールドEは、(相当な重複において)非参照データセットフィールドFと一致することが知られる、データセットフィールドAと共通して3つの値を共有するにすぎない。これは、実際、データセットフィールドEが多くて3つの値を非参照データセットフィールドFと共有し、したがって、相当な重複テストを失敗することを示す。候補参照データセットフィールド間の共有値の個数を知ることにより、いくつかの候補参照データセットフィールドを候補として拒絶することが可能となり、その理由は、それらが、非参照データセットフィールドを用いて有する共有値が確かに少なすぎるためである。知られている一致する参照データセットフィールドを用いて十分な個数の共有値を有する各候補参照データセットフィールドは、上述のように評価される。候補参照データセットフィールド及び非参照データセットフィールドの新しいペアの一部は、相当な重複の条件を満たすことができる一方、その他は満たすことができない。2以上が条件を満たす場合、ペアを明確にするためにさらなる知識が必要とされ得るので、それらはすべて候補一致として報告され得る。
【0089】
相異なるフィールド値のいくつかの特定のセット、特に0、1、又はY、Nは、異なる意味を有して種々の異なるデータセットフィールドで使用される。それらの意味はコンテキストで(たいていはフィールド名から)明確であるので、それらは厳密に参照値ではなく、それらの意味を定義するために参照データセットは必要ない。しかしながら、それらは、発見段階での検出、及び動作の後の段階での監視のために重要である。非常に低いカーディナリティ(例えば、3又は4未満)のデータセットフィールドは、一致する参照データセットフィールドを有していない場合、インジケータフィールドでラベル付けされてそのように報告されてよい。後の処理で、特に時間の経過とともに、各値を有するレコードの割合の変化を監視することは重要となり得る。より高いが依然として低いカーディナリティのデータセットフィールドが、一致する参照データセットフィールドを有しない場合、これは、報告されてよく、また「関連した参照データを有しない低いカーディナリティのフィールド」であり得る。
【0090】
データセットフィールド値リストを比較する第2の手法は、異なるが同様に重要な結論をもたらす。同じ又は類似のフィールド名を有するデータセットフィールドのセットを比較して、それらのフィールドコンテンツが類似しているかどうかを決定することができる。これは、同じ(又は類似の)名前を実際に共有するフィールドが同じ種類のデータを含むかどうかを決定する。いくつかのレガシシステムでは、特に記憶スペースが高価なメインフレーム上では、いくつかのフィールドが過負荷にされ、(例えば、COBOLコピーブックで)フィールド名で示されるのと異なるデータが記憶される。他のシステムでは、システムの設計及び進化の変動のため、一般的用語が、相異なる種類のデータを保持する2以上のフィールドのためのフィールド名として使用されている。馴染みのないシステムがそのデータプロファイルを介して分析される発見モードでは、素朴なユーザが、フィールド名が同じ場合にそれらのフィールドが必ず類似のデータを保持するとみなすので、この種の不一致を明らかにしておくことが重要である。
【0091】
比較のプロセスは、上記とほとんど同じであるが、例外は、類似の個数の相異なる値を有するデータセットフィールドを見出す比較の選択を行うのでなく、候補ペアは、それらが同じ又は類似のフィールド名を有するため見出されることである。編集距離に基づくファジーマッチングを使用してフィールド名を比較できるが、類似性の第2の形態も関連する。これは、同じ系列のキャラクタ(場合によっては、両方のフィールド名においていくつかの個数までの一致しないキャラクタ)が同じ順序で各フィールドに発生する場合、2つのフィールドを類似として識別するものである。これは、1つのフィールド名が他の部分列である、例えば、CountryとOriginCountryである、フィールドを識別する助けとなる。これは参照データセットフィールドで特によく発生するが、その理由は、特定の参照データセットフィールドからの値が別のデータセット内の同じレコードでの複数のフィールドで使用されることがあり、各フィールドはしばしば参照フィールド名の修正者によって変えられるからである。
【0092】
この形態の類似性は、キャラクタを廃棄することによってフィールド名が変更されている、例えば、EquityFundsMarketとEqFdsMktである、候補ペアを識別する。これらの種類の変形例の両方が実際に観測されるが、前者がより一般的である。後者は前者と組み合わされることがあるが、その場合は、より大きな許容差が可能にされなければならない。例えば、1つのフィールド名における一致するキャラクタが、同じ順序で発生しなければならないが、他方で追加のキャラクタは無視される必要があり得る。そのとき、country_cd及びorgn_cntryが一致となる。当然、これはより多くの一致を認めることになるので、さらなる比較を必要とし得る。
【0093】
一致の組み合わせのユーザ可視性、及びさらなる評価のためにどの一致が受け渡されるべきかに関する制御(さらなるペアを追加する能力を含む)を提供することは、明らかに有益である。
【0094】
一実施形態では、フィールド名に基づいてデータセットフィールドの候補ペアの集合を識別した後、相異なる値の比較的低いカーディナリティに関して、参照データセットフィールドの場合と同様に、相当な重複基準、一致が可能な候補を識別するための最頻値の探索、及び相異なる値セットの最終的に直接の比較を使用して、ペアが比較され得る。より高いカーディナリティセットの場合、結合分析又は参照整合性評価が必要とされ得る。いくつかの実施形態では、いくつの一致する値が各データセットに存在するかを見出すために、データセット毎にデータセットフィールド値及び値カウントからなるセンサスファイルを比較することを含む。この分析の結果は、値の重複が強くフィールド名が一致するデータセットフィールドを識別することであり、重複が強くない又はない場合、それはフィールドが過負荷であることを示し得るので、これは注目に値する。もちろん、2つのフィールドが強い重複を有することだけで、そちらが同じ量であることを必ずしも示唆しない。これは、偶然に重複し得る代理キーフィールドで特にあてはまり、その理由は、両方が、順次(又は準順次的に)生じさせられているキーのセットであるためである。いずれにしても、フィールド名が一致する場合、機能する仮定は、重複する値セットを有するデータセットフィールドが関係付けられることである。
【0095】
値のセットを比較するときに行われ得る他のチェックの1つは、最大の数の一意の値(又は低いカーディナリティの相異なる値)を有するデータセットの最大及び最小値の外側にある値を探すことである。これは、異常値を示し得る。
【0096】
比較の別の集合は、同じ論理データセットが時間の経過とともに繰り返しプロファイリングされるデータ監視シナリオに関連する。このシナリオでは、目下のデータ品質問題が、時間の経過を伴うデータ整合性に関する。一般ルールが、ベースライン平均値、平均値の変化率、平均曲線の周辺の変動の大きさ、及び他の統計測定値を計算するように定式化され得る。これは、特定の種類(入力された、ヌルなど)のレコードの個数のカウントと、値それら自体との両方に適用されてよい。回答され得る質問の中で、データ量は成長しているか?成長は単調かそれとも循環的か?データ品質問題の頻度はどうか(上記の問題の各クラス、すなわち、入力、パターン、列挙された値が、このやり方で分析され得る)。そのようなルールはまた、データパターンコードに適用されてよく、ことによると、時間の経過とともに生じるデータパターンの個数の変化(より大きなパターン変動が、データ量の増加に伴ってしばしば期待される)、又はパターンコードによって示されるフィールドの間の相関の変化を測定する。
【0097】
上述の技法は、適切なソフトウェアを実行するコンピューティングシステムを使用して実装され得る。例えば、ソフトウェアは、1又は2以上のプログラムされた若しくはプログラム可能なコンピューティングシステム(分散型、クライアント/サーバ、又はグリッドなどの種々のアーキテクチャであってよい)上で実行される1又は2以上のコンピュータプログラムにおいて手順を含むことができ、コンピューティングシステムのそれぞれは、少なくとも1つのプロセッサ、(揮発性及び/若しくは非揮発性メモリ並びに/又はストレージ要素を含む)少なくとも1つのデータストレージシステム、(少なくとも1つの入力デバイス又はポートを使用して入力を受け取るため、及び少なくとも1つの出力デバイス又はポートを使用して出力を提供するための)少なくとも1つのユーザインターフェースを含む。ソフトウェアは、例えば、データフローグラフの設計、構成、及び実行に関係するサービスを提供する、より大きなプログラムの1又は2以上のモジュールを含むことができる。プログラムのモジュール(例えば、データフローグラフの要素)は、データ構造、又はデータリポジトリに記憶されたデータモデルに適合する他の編成されたデータとして実装され得る。
【0098】
ソフトウェアは、CD−ROMなど、有形の非一時的媒体上、又は(例えば、汎用若しくは専用コンピューティングシステム若しくはデバイスによって可読の)他のコンピュータ可読媒体上で提供されてよく、或いは、ネットワークの通信媒体を介して、それが実行されるコンピューティングシステムの有形の非一時的媒体に送達されてもよい(例えば、伝搬信号にエンコードされる)。処理の一部又は全部は、専用コンピュータ上で、或いは、コプロセッサ若しくはフィールドプログラマブルゲートアレイ(FPGA)又は専用の特定用途向け集積回路(ASIC)などの専用ハードウェアを使用して、実行されてよい。処理は、ソフトウェアにより指定された計算の様々な部分が異なるコンピューティング要素によって実行される、分散様式で実装されてよい。それぞれのそのようなコンピュータプログラムは、好ましくは、汎用又は専用のプログラマブルコンピュータによってアクセス可能なストレージデバイスのコンピュータ可読記憶媒体(例えば、ソリッドステートメモリ若しくは媒体、又は磁気媒体若しくは光媒体)上に格納され、又はダウンロードされて、ストレージデバイス媒体がコンピュータによって読み取られると、本明細書に説明された処理を実行するようにコンピュータを構成し又は動作させる。また、本発明のシステムは、コンピュータプログラムを備えて構成された有形の非一時的媒体として実装されると考えられてよく、そのように構成された媒体は、コンピュータを特定の予め定義された様式で動作させて、本明細書で説明された処理ステップの1又は2以上を実行させる。
【0099】
本発明のいくつかの実施形態が説明されている。それでも、上記の説明は、添付の特許請求の範囲によって規定される本発明の範囲を限定することなく例示するように意図されていることは理解されよう。したがって、他の実施形態も添付の特許請求の範囲内にある。例えば、本発明の範囲から逸脱することなく種々の修正を行うことができる。さらに、上記に説明したステップのいくつかは、順序に依存しなくてよく、したがって説明と異なる順序で実行されてよい。