(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】6533746
(24)【登録日】2019年5月31日
(45)【発行日】2019年6月19日
(54)【発明の名称】データレコード選択
(51)【国際特許分類】
G06F 16/00 20190101AFI20190610BHJP
【FI】
G06F17/30 210D
【請求項の数】81
【全頁数】31
(21)【出願番号】特願2015-556176(P2015-556176)
(86)(22)【出願日】2014年1月31日
(65)【公表番号】特表2016-509308(P2016-509308A)
(43)【公表日】2016年3月24日
(86)【国際出願番号】US2014014186
(87)【国際公開番号】WO2014121092
(87)【国際公開日】20140807
【審査請求日】2017年1月26日
(31)【優先権主張番号】61/759,799
(32)【優先日】2013年2月1日
(33)【優先権主張国】US
(31)【優先権主張番号】13/827,558
(32)【優先日】2013年3月14日
(33)【優先権主張国】US
(73)【特許権者】
【識別番号】509123208
【氏名又は名称】アビニシオ テクノロジー エルエルシー
(74)【代理人】
【識別番号】100079108
【弁理士】
【氏名又は名称】稲葉 良幸
(74)【代理人】
【識別番号】100109346
【弁理士】
【氏名又は名称】大貫 敏史
(74)【代理人】
【識別番号】100117189
【弁理士】
【氏名又は名称】江口 昭彦
(74)【代理人】
【識別番号】100134120
【弁理士】
【氏名又は名称】内藤 和彦
(72)【発明者】
【氏名】イスマン,マーシャル エー.
(72)【発明者】
【氏名】エプスタイン,リチャード アラン
(72)【発明者】
【氏名】ホウグ,ラルフ
(72)【発明者】
【氏名】ロバーツ,アンドリュー エフ.
(72)【発明者】
【氏名】ラルストン,ジョン
(72)【発明者】
【氏名】リチャードソン,ジョン エル.
(72)【発明者】
【氏名】プニオワー,ジャスティン
【審査官】
吉田 誠
(56)【参考文献】
【文献】
特開2007−066017(JP,A)
(58)【調査した分野】(Int.Cl.,DB名)
G06F 16/00
(57)【特許請求の範囲】
【請求項1】
データレコードを選択して、データ処理アプリケーションのテスト中に処理規則を実行する、コンピュータにより実施される方法であって、
処理規則を含むデータ処理アプリケーションを用いて、データレコードの第1のセットを処理することであって、処理規則は、少なくとも一つの入力値に作用して少なくとも一つの出力値を生成し、特定のデータレコードの処理中に前記処理規則が前記データ処理アプリケーションによって実行されるか否かが、前記特定のデータレコードの1つ又はそれ以上のデータフィールドのそれぞれの値に直接又は間接に依存する、ことと、
前記データレコードの第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報を受け取ることと、
データレコードの第2のセットにおける1つ又はそれ以上のデータレコードのそれぞれの1つ又はそれ以上のデータフィールドの値を分析することであって、前記解析することは、データレコードの前記第2のセットについて、1つ又はそれ以上のデータフィールドのそれぞれのプロファイルを生成することを含み、データフィールドの前記プロファイルは、前記データフィールドの値を特徴付ける、ことと、
生成された前記プロファイルと、データレコードの前記第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報とに基づいて、少なくとも1つのサブセッティング規則を策定することであって、前記サブセッティング規則は、前記第2のセットの前記データレコードの前記データフィールドの特定の1つを、ターゲットデータフィールドとして識別する、ことと、
前記少なくとも1つのサブセッティング規則に基づいて、データレコードの前記第2のセットから、データレコードのサブセットを選択することであって、データレコードの前記サブセットの前記選択は、前記ターゲットデータフィールドの値に基づく、ことと、
前記データ処理アプリケーションを用いて、データレコードの選択されたサブセットを処理することと、
を含む、コンピュータにより実施される方法。
【請求項2】
少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドの基数に基づいて前記第1のデータフィールドをターゲットデータフィールドとして識別することを含む、請求項1の方法。
【請求項3】
前記ターゲットデータフィールドは前記複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、前記選択されたサブセットに前記ターゲットデータフィールドの前記異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む、請求項2の方法。
【請求項4】
プロファイルを生成することは、前記複数のデータレコードの第1のデータフィールドの値を分類することを含み、
少なくとも1つのサブセッティング規則を策定することは、前記分類に基づいて前記第1のデータフィールドをターゲットデータフィールドとして識別することを含む、請求項1の方法。
【請求項5】
前記ターゲットデータフィールドは前記複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、前記選択されたサブセットに前記ターゲットデータフィールドの前記異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む、請求項4の方法。
【請求項6】
少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドを第1のターゲットデータフィールドとして識別し第2のデータフィールドを第2のターゲットデータフィールドとして識別することを含む、請求項1の方法。
【請求項7】
データレコードのサブセットを選択することは、前記第1のターゲットデータフィールドの異なる値の第1のセットと前記第2のターゲットデータフィールドの異なる値の第2のセットとの組み合わせに基づいて前記データレコードのサブセットを選択することを含む、請求項6の方法。
【請求項8】
プロファイルを生成することは、第1のデータフィールドの値を介して関係付けられたデータレコード間の関係を識別することを含み、
前記少なくとも1つのサブセッティング規則は前記関係の識別を含む、請求項1の方法。
【請求項9】
データレコードのサブセットを選択することは、
第1のデータレコードを選択することと、
前記サブセッティング規則において識別された前記関係を介して前記第1のデータレコードに関係付けられた1つ以上の第2のデータレコードを選択することと、
を含む、請求項8の方法。
【請求項10】
前記データレコード間の関係は、データレコードの第1のセットのデータレコードとデータレコードの第2のセットのデータレコードとの間の関係を含む、請求項8の方法。
【請求項11】
プロファイルを生成することは、
前記複数のデータレコードのうち少なくともいくつかについて擬似フィールドを生成することと、
対応する各データレコードの前記擬似フィールドに累積値を取り込むことと、
を含み、
第1のデータレコードの前記累積値は前記第1のデータレコードと前記第1のデータレコードに関係付けられた少なくとも1つの他のデータレコードとに基づいて決定され、
前記第1のデータレコードと前記少なくとも1つの他のデータレコードとは第1のデータフィールドの値を介して関係付けられる、請求項1の方法。
【請求項12】
前記第1のデータレコードの第2のデータフィールドの値と他の関係する各データレコードの前記第2のデータフィールドの値との合計に基づいて前記累積値を決定することを含む、請求項11の方法。
【請求項13】
サブセッティング規則を受信することを含む、請求項1の方法。
【請求項14】
前記選択されたデータレコードのサブセットをデータ処理アプリケーションに提供することを含む、請求項1の方法。
【請求項15】
前記データ処理アプリケーションの結果に基づいて第2のサブセッティング規則を策定することと、
前記第2のサブセッティング規則に基づいてデータレコードの第2のサブセットを選択することと、
を含む、請求項12の方法。
【請求項16】
コンピュータ読み取り可能な媒体に記憶されたソフトウェアであって、コンピューティングシステムに、データレコードを選択して、データ処理アプリケーションのテスト中に処理規則を実行させる命令を含み、
前記命令は、前記コンピュータシステムに、
処理規則を含むデータ処理アプリケーションを用いて、データレコードの第1のセットを処理することであって、処理規則は、少なくとも一つの入力値に作用して少なくとも一つの出力値を生成し、特定のデータレコードの処理中に前記処理規則が前記データ処理アプリケーションによって実行されるか否かが、前記特定のデータレコードの1つ又はそれ以上のデータフィールドのそれぞれの値に直接又は間接に依存する、ことと、
前記データレコードの第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報を受け取ることと、
データレコードの第2のセットにおける1つ又はそれ以上のデータレコードのそれぞれの1つ又はそれ以上のデータフィールドの値を分析することであって、前記解析することは、データレコードの前記第2のセットについて、1つ又はそれ以上のデータフィールドのそれぞれのプロファイルを生成することを含み、データフィールドの前記プロファイルは、前記データフィールドの値を特徴付ける、ことと、
生成された前記プロファイルと、データレコードの前記第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報とに基づいて、少なくとも1つのサブセッティング規則を策定することであって、前記サブセッティング規則は、前記第2のセットの前記データレコードの前記データフィールドの特定の1つを、ターゲットデータフィールドとして識別する、ことと、
前記少なくとも1つのサブセッティング規則に基づいて、データレコードの前記第2のセットから、データレコードのサブセットを選択することであって、データレコードの前記サブセットの前記選択は、前記ターゲットデータフィールドの値に基づく、ことと、
前記データ処理アプリケーションを用いて、データレコードの選択されたサブセットを処理することと、
を実行させる命令を含む、ソフトウェア。
【請求項17】
少なくとも1つのプロセッサを備えるコンピューティングシステムであって、
前記少なくとも1つのプロセッサは、
処理規則を含むデータ処理アプリケーションを用いて、データレコードの第1のセットを処理することであって、処理規則は、少なくとも一つの入力値に作用して少なくとも一つの出力値を生成し、特定のデータレコードの処理中に前記処理規則が前記データ処理アプリケーションによって実行されるか否かが、前記特定のデータレコードの1つ又はそれ以上のデータフィールドのそれぞれの値に直接又は間接に依存する、ことと、
前記データレコードの第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報を受け取ることと、
データレコードの第2のセットにおける1つ又はそれ以上のデータレコードのそれぞれの1つ又はそれ以上のデータフィールドの値を分析することであって、前記解析することは、データレコードの前記第2のセットについて、1つ又はそれ以上のデータフィールドのそれぞれのプロファイルを生成することを含み、データフィールドの前記プロファイルは、前記データフィールドの値を特徴付ける、ことと、
生成された前記プロファイルと、データレコードの前記第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報とに基づいて、少なくとも1つのサブセッティング規則を策定することであって、前記サブセッティング規則は、前記第2のセットの前記データレコードの前記データフィールドの特定の1つを、ターゲットデータフィールドとして識別する、ことと、
前記少なくとも1つのサブセッティング規則に基づいて、データレコードの前記第2のセットから、データレコードのサブセットを選択することであって、データレコードの前記サブセットの前記選択は、前記ターゲットデータフィールドの値に基づく、ことと、
前記データ処理アプリケーションを用いて、データレコードの選択されたサブセットを処理することと、
を行うように構成されている、コンピューティングシステム。
【請求項18】
処理規則を含むデータ処理アプリケーションを用いて、データレコードの第1のセットを処理する手段であって、処理規則は、少なくとも一つの入力値に作用して少なくとも一つの出力値を生成し、特定のデータレコードの処理中に前記処理規則が前記データ処理アプリケーションによって実行されるか否かが、前記特定のデータレコードの1つ又はそれ以上のデータフィールドのそれぞれの値に直接又は間接に依存する、手段と、
前記データレコードの第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報を受け取る手段と、
データレコードの第2のセットにおける1つ又はそれ以上のデータレコードのそれぞれの1つ又はそれ以上のデータフィールドの値を分析する手段であって、前記解析することは、データレコードの前記第2のセットについて、1つ又はそれ以上のデータフィールドのそれぞれのプロファイルを生成することを含み、データフィールドの前記プロファイルは、前記データフィールドの値を特徴付ける、手段と、
生成された前記プロファイルと、データレコードの前記第1のセットの処理に関連して前記処理規則が実行された回数を示す実行情報とに基づいて、少なくとも1つのサブセッティング規則を策定する手段であって、前記サブセッティング規則は、前記第2のセットの前記データレコードの前記データフィールドの特定の1つを、ターゲットデータフィールドとして識別する、手段と、
前記少なくとも1つのサブセッティング規則に基づいて、データレコードの前記第2のセットから、データレコードのサブセットを選択する手段であって、データレコードの前記サブセットの前記選択は、前記ターゲットデータフィールドの値に基づく、手段と、
前記データ処理アプリケーションを用いて、データレコードの選択されたサブセットを処理する手段と、
を備えるコンピューティングシステム。
【請求項19】
各々が複数のデータフィールドを有する複数のデータレコードにアクセスすることと、
前記複数のデータレコードからデータレコードの第1のサブセットを選択することと、
前記データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供することと、
前記規則のうち少なくとも1つが前記データ処理アプリケーションによって実行された回数を示すレポートを受信することと、
前記レポートに示された回数に基づいて前記複数のデータレコードからデータレコードの第2のサブセットを選択することと、
を含む、コンピュータにより実施される方法。
【請求項20】
前記データレコードの第2のサブセットを前記データ処理アプリケーションに提供することを含む、請求項19の方法。
【請求項21】
前記レポートに基づいて、前記データ処理アプリケーションによって実行されなかった1つ以上の規則を識別することを含み、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項19の方法。
【請求項22】
前記レポートに基づいて、各々が対応する最大閾値回数よりも少なく実行された1つ以上の規則を識別することを含み、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項19の方法。
【請求項23】
前記レポートに基づいて、各々が対応する最小閾値回数よりも多く実行された1つ以上の規則を識別することを含み、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項19の方法。
【請求項24】
データレコードの第1のサブセットを選択することは、第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することを含む、請求項19の方法。
【請求項25】
前記第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することは、前記サブセットの少なくとも1つのデータレコードがターゲットデータフィールドの一連の異なる値の各々を有するように前記データレコードの第1のサブセットを選択することを含む、請求項24の方法。
【請求項26】
前記第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することは、
第1のデータレコードを選択することと、
前記第1のサブセッティング規則において識別された関係を介して前記第1のデータレコードと関係付けられた1つ以上の第2のデータレコードを選択することと、
を含む、請求項24の方法。
【請求項27】
前記データレコードの第2のサブセットを選択することは、前記第1のサブセッティング規則とは異なる第2のサブセッティング規則に基づいて前記データレコードの第2のサブセットを選択することを含む、請求項24の方法。
【請求項28】
前記レポートは、前記データ処理アプリケーションの1つ以上の規則の実行をトリガする変数の値を示すデータを含み、
前記変数に基づいて1つ以上のデータフィールドをターゲットデータフィールドとして識別することを備え、前記変数は前記識別された1つ以上のデータフィールドの値に依存する、請求項19の方法。
【請求項29】
前記データレコードの第2のサブセットは前記データレコードの第1のサブセットを含む、請求項19の方法。
【請求項30】
規則が前記データ処理アプリケーションによって少なくとも閾値回数実行されたことを前記レポートが示すまで、データレコードのサブセットを反復して選択すること及び前記データレコードのサブセットを前記データ処理アプリケーションに提供することを含む、請求項19の方法。
【請求項31】
コンピュータ読み取り可能な媒体に記憶されたソフトウェアであって、コンピューティングシステムに、
各々が複数のデータフィールドを有する複数のデータレコードにアクセスさせる命令と、
前記複数のデータレコードからデータレコードの第1のサブセットを選択させる命令と、
前記データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供させる命令と、
前記規則のうち少なくとも1つが前記データ処理アプリケーションによって実行された回数を示すレポートを受信させる命令と、
前記レポートに示された回数に基づいて前記複数のデータレコードからデータレコードの第2のサブセットを選択させる命令と、
を含む、ソフトウェア。
【請求項32】
各々が複数のデータフィールドを有する複数のデータレコードにアクセスし、
前記複数のデータレコードからデータレコードの第1のサブセットを選択し、
前記データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供し、
前記規則のうち少なくとも1つが前記データ処理アプリケーションによって実行された回数を示すレポートを受信し、
前記レポートに示された回数に基づいて前記複数のデータレコードからデータレコードの第2のサブセットを選択する
よう構成された少なくとも1つのプロセッサを備える、コンピューティングシステム。
【請求項33】
各々が複数のデータフィールドを有する複数のデータレコードにアクセスする手段と、
前記複数のデータレコードからデータレコードの第1のサブセットを選択する手段と、
前記データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供する手段と、
前記規則のうち少なくとも1つが前記データ処理アプリケーションによって実行された回数を示すレポートを受信する手段と、
前記レポートに示された回数に基づいて前記複数のデータレコードからデータレコードの第2のサブセットを選択する手段と、
を備える、コンピューティングシステム。
【請求項34】
少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドの基数に基づいて前記第1のデータフィールドをターゲットデータフィールドとして識別することを含む、請求項16のソフトウェア。
【請求項35】
前記ターゲットデータフィールドは前記複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、前記選択されたサブセットに前記ターゲットデータフィールドの前記異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む、請求項34のソフトウェア。
【請求項36】
プロファイルを生成することは、前記複数のデータレコードの第1のデータフィールドの値を分類することを含み、
少なくとも1つのサブセッティング規則を策定することは、前記分類に基づいて前記第1のデータフィールドをターゲットデータフィールドとして識別することを含む、請求項16のソフトウェア。
【請求項37】
前記ターゲットデータフィールドは前記複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、前記選択されたサブセットに前記ターゲットデータフィールドの前記異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む、請求項36のソフトウェア。
【請求項38】
少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドを第1のターゲットデータフィールドとして識別し第2のデータフィールドを第2のターゲットデータフィールドとして識別することを含む、請求項16のソフトウェア。
【請求項39】
データレコードのサブセットを選択することは、前記第1のターゲットデータフィールドの異なる値の第1のセットと前記第2のターゲットデータフィールドの異なる値の第2のセットとの組み合わせに基づいて前記データレコードのサブセットを選択することを含む、請求項38のソフトウェア。
【請求項40】
プロファイルを生成することは、第1のデータフィールドの値を介して関係付けられたデータレコード間の関係を識別することを含み、
前記少なくとも1つのサブセッティング規則は前記関係の識別を含む、請求項16のソフトウェア。
【請求項41】
データレコードのサブセットを選択することは、
第1のデータレコードを選択することと、
前記サブセッティング規則において識別された前記関係を介して前記第1のデータレコードに関係付けられた1つ以上の第2のデータレコードを選択することと、
を含む、請求項40のソフトウェア。
【請求項42】
前記データレコード間の関係は、データレコードの第1のセットのデータレコードとデータレコードの第2のセットのデータレコードとの間の関係を含む、請求項40のソフトウェア。
【請求項43】
プロファイルを生成することは、
前記複数のデータレコードのうち少なくともいくつかについて擬似フィールドを生成することと、
対応する各データレコードの前記擬似フィールドに累積値を取り込むことと、
を含み、
第1のデータレコードの前記累積値は前記第1のデータレコードと前記第1のデータレコードに関係付けられた少なくとも1つの他のデータレコードとに基づいて決定され、
前記第1のデータレコードと前記少なくとも1つの他のデータレコードとは第1のデータフィールドの値を介して関係付けられる、請求項16のソフトウェア。
【請求項44】
前記命令は、前記コンピューティングシステムに、前記第1のデータレコードの第2のデータフィールドの値と他の関係する各データレコードの前記第2のデータフィールドの値との合計に基づいて前記累積値を決定させる、請求項43のソフトウェア。
【請求項45】
前記命令は、前記コンピューティングシステムに、前記選択されたデータレコードのサブセットをデータ処理アプリケーションに提供させる、請求項16のソフトウェア。
【請求項46】
前記命令は、前記コンピューティングシステムに、
前記データ処理アプリケーションの結果に基づいて第2のサブセッティング規則を策定させ、
前記第2のサブセッティング規則に基づいてデータレコードの第2のサブセットを選択させる、請求項45のソフトウェア。
【請求項47】
少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドの基数に基づいて前記第1のデータフィールドをターゲットデータフィールドとして識別することを含む、請求項17のコンピューティングシステム。
【請求項48】
前記ターゲットデータフィールドは前記複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、前記選択されたサブセットに前記ターゲットデータフィールドの前記異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む、請求項47のコンピューティングシステム。
【請求項49】
プロファイルを生成することは、前記複数のデータレコードの第1のデータフィールドの値を分類することを含み、
少なくとも1つのサブセッティング規則を策定することは、前記分類に基づいて前記第1のデータフィールドをターゲットデータフィールドとして識別することを含む、請求項17のコンピューティングシステム。
【請求項50】
前記ターゲットデータフィールドは前記複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、前記選択されたサブセットに前記ターゲットデータフィールドの前記異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む、請求項49のコンピューティングシステム。
【請求項51】
少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドを第1のターゲットデータフィールドとして識別し第2のデータフィールドを第2のターゲットデータフィールドとして識別することを含む、請求項17のコンピューティングシステム。
【請求項52】
データレコードのサブセットを選択することは、前記第1のターゲットデータフィールドの異なる値の第1のセットと前記第2のターゲットデータフィールドの異なる値の第2のセットとの組み合わせに基づいて前記データレコードのサブセットを選択することを含む、請求項51のコンピューティングシステム。
【請求項53】
プロファイルを生成することは、第1のデータフィールドの値を介して関係付けられたデータレコード間の関係を識別することを含み、
前記少なくとも1つのサブセッティング規則は前記関係の識別を含む、請求項17のコンピューティングシステム。
【請求項54】
データレコードのサブセットを選択することは、
第1のデータレコードを選択することと、
前記サブセッティング規則において識別された前記関係を介して前記第1のデータレコードに関係付けられた1つ以上の第2のデータレコードを選択することと、
を含む、請求項53のコンピューティングシステム。
【請求項55】
前記データレコード間の関係は、データレコードの第1のセットのデータレコードとデータレコードの第2のセットのデータレコードとの間の関係を含む、請求項53のコンピューティングシステム。
【請求項56】
プロファイルを生成することは、
前記複数のデータレコードのうち少なくともいくつかについて擬似フィールドを生成することと、
対応する各データレコードの前記擬似フィールドに累積値を取り込むことと、
を含み、
第1のデータレコードの前記累積値は前記第1のデータレコードと前記第1のデータレコードに関係付けられた少なくとも1つの他のデータレコードとに基づいて決定され、
前記第1のデータレコードと前記少なくとも1つの他のデータレコードとは第1のデータフィールドの値を介して関係付けられる、請求項17のコンピューティングシステム。
【請求項57】
前記プロセッサは、前記第1のデータレコードの第2のデータフィールドの値と他の関係する各データレコードの前記第2のデータフィールドの値との合計に基づいて前記累積値を決定するよう構成されている、請求項56のコンピューティングシステム。
【請求項58】
前記プロセッサは、前記選択されたデータレコードのサブセットをデータ処理アプリケーションに提供するよう構成されている、請求項17のコンピューティングシステム。
【請求項59】
前記プロセッサは、
前記データ処理アプリケーションの結果に基づいて第2のサブセッティング規則を策定し、
前記第2のサブセッティング規則に基づいてデータレコードの第2のサブセットを選択する
よう構成されている、請求項58のコンピューティングシステム。
【請求項60】
前記命令は、前記コンピューティングシステムに、前記データレコードの第2のサブセットを前記データ処理アプリケーションに提供させる、請求項31のソフトウェア。
【請求項61】
前記命令は、前記コンピューティングシステムに、前記レポートに基づいて、前記データ処理アプリケーションによって実行されなかった1つ以上の規則を識別させ、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項31のソフトウェア。
【請求項62】
前記命令は、前記コンピューティングシステムに、前記レポートに基づいて、各々が対応する最大閾値回数よりも少なく実行された1つ以上の規則を識別させ、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項31のソフトウェア。
【請求項63】
前記命令は、前記コンピューティングシステムに、前記レポートに基づいて、各々が対応する最小閾値回数よりも多く実行された1つ以上の規則を識別させ、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項31のソフトウェア。
【請求項64】
データレコードの第1のサブセットを選択することは、第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することを含む、請求項31のソフトウェア。
【請求項65】
前記第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することは、前記サブセットの少なくとも1つのデータレコードがターゲットデータフィールドの一連の異なる値の各々を有するように前記データレコードの第1のサブセットを選択することを含む、請求項64のソフトウェア。
【請求項66】
前記第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することは、
第1のデータレコードを選択することと、
前記第1のサブセッティング規則において識別された関係を介して前記第1のデータレコードと関係付けられた1つ以上の第2のデータレコードを選択することと、
を含む、請求項64のソフトウェア。
【請求項67】
前記データレコードの第2のサブセットを選択することは、前記第1のサブセッティング規則とは異なる第2のサブセッティング規則に基づいて前記データレコードの第2のサブセットを選択することを含む、請求項64のソフトウェア。
【請求項68】
前記レポートは、前記データ処理アプリケーションの1つ以上の規則の実行をトリガする変数の値を示すデータを含み、
前記変数に基づいて1つ以上のデータフィールドをターゲットデータフィールドとして識別することを備え、前記変数は前記識別された1つ以上のデータフィールドの値に依存する、請求項31のソフトウェア。
【請求項69】
前記データレコードの第2のサブセットは前記データレコードの第1のサブセットを含む、請求項31のソフトウェア。
【請求項70】
前記命令は、前記コンピューティングシステムに、規則が前記データ処理アプリケーションによって少なくとも閾値回数実行されたことを前記レポートが示すまで、データレコードのサブセットを反復して選択させ、前記データレコードのサブセットを前記データ処理アプリケーションに対して提供させる、請求項31のソフトウェア。
【請求項71】
前記プロセッサは、前記データレコードの第2のサブセットを前記データ処理アプリケーションに提供するよう構成されている、請求項32のコンピューティングシステム。
【請求項72】
前記プロセッサは、前記レポートに基づいて、前記データ処理アプリケーションによって実行されなかった1つ以上の規則を識別するよう構成され、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項32のコンピューティングシステム。
【請求項73】
前記プロセッサは、前記レポートに基づいて、各々が対応する最大閾値回数よりも少なく実行された1つ以上の規則を識別するよう構成され、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項32のコンピューティングシステム。
【請求項74】
前記プロセッサは、前記レポートに基づいて、各々が対応する最小閾値回数よりも多く実行された1つ以上の規則を識別するよう構成され、
前記データレコードの第2のサブセットを選択することは、前記識別に基づいてデータレコードを選択することを含む、請求項32のコンピューティングシステム。
【請求項75】
データレコードの第1のサブセットを選択することは、第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することを含む、請求項32のコンピューティングシステム。
【請求項76】
前記第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することは、前記サブセットの少なくとも1つのデータレコードがターゲットデータフィールドの一連の異なる値の各々を有するように前記データレコードの第1のサブセットを選択することを含む、請求項75のコンピューティングシステム。
【請求項77】
前記第1のサブセッティング規則に基づいて前記データレコードの第1のサブセットを選択することは、
第1のデータレコードを選択することと、
前記第1のサブセッティング規則において識別された関係を介して前記第1のデータレコードと関係付けられた1つ以上の第2のデータレコードを選択することと、
を含む、請求項75のコンピューティングシステム。
【請求項78】
前記データレコードの第2のサブセットを選択することは、前記第1のサブセッティング規則とは異なる第2のサブセッティング規則に基づいて前記データレコードの第2のサブセットを選択することを含む、請求項75のコンピューティングシステム。
【請求項79】
前記レポートは、前記データ処理アプリケーションの1つ以上の規則の実行をトリガする変数の値を示すデータを含み、
前記変数に基づいて1つ以上のデータフィールドをターゲットデータフィールドとして識別することを備え、前記変数は前記識別された1つ以上のデータフィールドの値に依存する、請求項32のコンピューティングシステム。
【請求項80】
前記データレコードの第2のサブセットは前記データレコードの第1のサブセットを含む、請求項32のコンピューティングシステム。
【請求項81】
前記プロセッサは、規則が前記データ処理アプリケーションによって少なくとも閾値回数実行されたことを前記レポートが示すまで、データレコードのサブセットを反復して選択するよう構成され、前記データレコードのサブセットを前記データ処理アプリケーションに提供するよう構成されている、請求項32のコンピューティングシステム。
【発明の詳細な説明】
【技術分野】
【0001】
(優先権の主張)
本願は、2013年2月1日に提出された米国特許出願第61/759,799号及び2013年3月14日に提出された米国特許出願第13/827,558号の優先権を主張する。両出願の全内容は参照により本明細書に組み込まれる。
【背景技術】
【0002】
[0001] 記憶されているデータセットはしばしば、様々な特性が事前に知られていないデータを含む。例えば、データセットの典型値の値の範囲、データセット内の異なるフィールド間の関係、又は異なるフィールドの値の間の機能的依存性が未知であるかもしれない。データプロファイリングは、そのような特性を求めるためにデータセットのソースを調べることを伴い得る。
【発明の概要】
【0003】
[0002] データ処理アプリケーションの開発にあたり、開発者は、生産環境の外部で作業するかもしれず、生産データへのアクセスを有さないかもしれない。データ処理アプリケーション(本明細書においては「アプリケーション」と称される)が生産時に実データによって適切に実行することを保証するために、アプリケーションの実行及びテストの際には現実的なデータが用いられ得る。アプリケーションはしばしば、実行が1つ以上の変数の値に依存する規則を含む。これらの変数は、入力データに対応する入力変数であってもよいし、1つ以上の入力変数に依存する派生変数などであってもよい。データレコードのサブセットが生産実績データから選択されて、アプリケーションの開発及びテストに用いられ得る。これらのデータレコードは、一般的には、入力データが、アプリケーションのあらゆる規則が実行されるのに十分であるように(例えばアプリケーションの完全なコードカバレッジが達成されるように)選択される。
【0004】
[0003] 一般的な態様においては、コンピュータにより実施される方法は、各々が複数のデータフィールドを有する複数のデータレコードにアクセスすることを含む。方法はさらに、その複数のデータレコードのうち少なくともいくつかについてデータフィールドのうち1つ以上の値を分析すること、及びその分析に基づいて複数のデータレコードのプロファイルを生成することを含む。方法はさらに、そのプロファイルに基づいて少なくとも1つのサブセッティング規則を策定すること、及びその少なくとも1つのサブセッティング規則に基づいて複数のデータレコードからデータレコードのサブセットを選択することを含む。
【0005】
[0004] 実施形態は以下のうち1つ以上を備えてもよい。
【0006】
[0005] 少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドの基数に基づいて第1のデータフィールドをターゲットデータフィールドとして識別することを含む。場合によっては、ターゲットデータフィールドは複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、選択されたサブセットにターゲットデータフィールドの異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む。
【0007】
[0006] プロファイルを生成することは、複数のデータレコードの第1のデータフィールドの値を分類することを含む。少なくとも1つのサブセッティング規則を策定することは、その分類に基づいて第1のデータフィールドをターゲットデータフィールドとして識別することを含む。場合によっては、ターゲットフィールドは複数のデータレコードの一連の異なる値を有し、データレコードのサブセットを選択することは、選択されたサブセットにターゲットデータフィールドの異なる値の各々を有する少なくとも1つのデータレコードがあるようにデータレコードを選択することを含む。
【0008】
[0007] 少なくとも1つのサブセッティング規則を策定することは、第1のデータフィールドを第1のターゲットデータフィールドとして識別し第2のデータフィールドを第2のターゲットデータフィールドとして識別することを含む。場合によっては、データレコードのサブセットを選択することは、第1のターゲットデータフィールドの異なる値の第1のセットと第2のターゲットデータフィールドの異なる値の第2のセットとの組み合わせに基づいてデータレコードのサブセットを選択することを含む。
【0009】
[0008] プロファイルを生成することは、第1のデータフィールドの値を介して関係付けられたデータレコード間の関係を識別することを含む。少なくとも1つのサブセッティング規則は、その関係の識別を含む。場合によっては、データレコードのサブセットを選択することは、第1のデータレコードを選択することと、サブセッティング規則において識別された関係を介して第1のデータレコードに関係付けられた1つ以上の第2のデータレコードを選択することと、を含む。場合によっては、データレコード間の関係は、データレコードの第1のセットのデータレコードとデータレコードの第2のセットのデータレコードとの間の関係を含む。
【0010】
[0009] プロファイルを生成することは、複数のデータレコードのうち少なくともいくつかについて擬似フィールドを生成することと、対応する各データレコードの擬似フィールドに累積値を取り込むことと、を含む。第1のデータレコードの累積値は、第1のデータレコードと、その第1のデータレコードに関係付けられた少なくとも1つの他のデータレコードとに基づいて決定される。第1のデータレコードと少なくとも1つの他のデータレコードとは第1のデータフィールドの値を介して関係付けられる。場合によっては、方法は、第1のデータレコードの第2のデータフィールドの値と他の関係する各データレコードの第2のデータフィールドの値との合計に基づいて累積値を決定することを含む。
【0011】
[0010] 方法は、サブセッティング規則を受信することを含む。
【0012】
[0011] 方法は、選択されたデータレコードのサブセットをデータ処理アプリケーションに提供することを備える。場合によっては、方法は、データ処理アプリケーションの結果に基づいて第2のサブセッティング規則を策定することと、第2のサブセッティング規則に基づいてデータレコードの第2のサブセットを選択することと、を含む。
【0013】
[0012] 一般的な態様においては、コンピュータ読み取り可能な媒体に記憶されたソフトウェアは、コンピューティングシステムに、各々が複数のデータフィールドを有する複数のデータレコードにアクセスさせる命令を含む。ソフトウェアは、コンピューティングシステムに、複数のデータレコードのうち少なくともいくつかについて、データフィールドのうち1つ以上の値を分析させる命令と、その分析に基づいて複数のデータレコードのプロファイルを生成させる命令と、を含む。また、ソフトウェアは、コンピューティングシステムに、プロファイルに基づいて少なくとも1つのサブセッティング規則を策定させる命令と、その少なくとも1つのサブセッティング規則に基づいて複数のデータレコードからデータレコードのサブセットを選択させる命令と、も含む。
【0014】
[0013] 一般的な態様においては、コンピューティングシステムは、各々が複数のデータフィールドを有する複数のデータレコードにアクセスするよう構成された少なくとも1つのプロセッサを備える。プロセッサは、複数のデータレコードのうち少なくともいくつかについてデータフィールドのうち1つ以上の値を分析し、その分析に基づいて複数のデータレコードのプロファイルを生成するよう構成されている。また、プロセッサは、プロファイルに基づいて少なくとも1つのサブセッティング規則を策定し、その少なくとも1つのサブセッティング規則に基づいて複数のデータレコードからデータレコードのサブセットを選択するよう構成されている。
【0015】
[0014] 一般的な態様においては、コンピューティングシステムは、各々が複数のデータフィールドを有する複数のデータレコードにアクセスする手段を備える。コンピューティングシステムは、複数のデータレコードのうち少なくともいくつかについてデータフィールドのうち1つ以上の値を分析する手段と、その分析に基づいて複数のデータレコードのプロファイルを生成する手段と、を備える。また、コンピューティングシステムは、プロファイルに基づいて少なくとも1つのサブセッティング規則を策定する手段と、その少なくとも1つのサブセッティング規則に基づいて複数のデータレコードからデータレコードのサブセットを選択する手段と、を備える。
【0016】
[0015] 一般的な態様においては、コンピュータにより実施される方法は、各々が複数のデータフィールドを有する複数のデータレコードにアクセスすることと、その複数のデータレコードからデータレコードの第1のサブセットを選択することと、を含む。方法は、データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供することと、規則のうち少なくとも1つがデータ処理アプリケーションによって実行された回数を示すレポートを受信することと、を含む。方法は、そのレポートに基づいて複数のデータレコードからデータレコードの第2のサブセットを選択することを含む。
【0017】
[0016] 実施形態は以下のうち1つ以上を備えてもよい。
【0018】
[0017] 方法は、データレコードの第2のサブセットをデータ処理アプリケーションに提供することを含む。
【0019】
[0018] 方法は、レポートに基づいて、データ処理アプリケーションによって実行されなかった1つ以上の未実行規則を識別することを含む。データレコードの第2のサブセットを選択することは、その識別に基づいてデータレコードを選択することを含む。
【0020】
[0019] 方法は、レポートに基づいて、各々が対応する最大閾値回数よりも少なく実行された1つ以上の規則を識別することを含む。データレコードの第2のサブセットを選択することは、その識別に基づいてデータレコードを選択することを含む。
【0021】
[0020] 方法は、レポートに基づいて、各々が対応する最小閾値回数よりも多く実行された1つ以上の規則を識別することを含む。データレコードの第2のサブセットを選択することは、その識別に基づいてデータレコードを選択することを含む。
【0022】
[0021] データレコードの第1のサブセットを選択することは、第1のサブセッティング規則に基づいてデータレコードの第1のサブセットを選択することを含む。場合によっては、第1のサブセッティング規則に基づいてデータレコードの第1のサブセットを選択することは、サブセットの少なくとも1つのデータレコードがターゲットデータフィールドの一連の異なる値の各々を有するようにデータレコードの第1のサブセットを選択することを含む。場合によっては、第1のサブセッティング規則に基づいてデータレコードの第1のサブセットを選択することは、第1のデータレコードを選択することと、第1のサブセッティング規則において識別された関係を介してその第1のデータレコードと関係付けられた1つ以上の第2のデータレコードを選択することと、を含む。場合によっては、データレコードの第2のサブセットを選択することは、第1のサブセッティング規則とは異なる第2のサブセッティング規則に基づいてデータレコードの第2のサブセットを選択することを含む。
【0023】
[0022] レポートは、データ処理アプリケーションの1つ以上の規則の実行をトリガする変数の値を示すデータを含む。方法は、変数に基づいて1つ以上のデータフィールドをターゲットデータフィールドとして識別することを備え、その変数は識別された1つ以上のデータフィールドの値に依存する。
【0024】
[0023] データレコードの第2のサブセットはデータレコードの第1のサブセットを含む。
【0025】
[0024] 方法は、規則がデータ処理アプリケーションによって少なくとも閾値回数実行されたことをレポートが示すまで、データレコードのサブセットを反復して選択すること及びデータレコードのサブセットをデータ処理アプリケーションに提供することを含む。
【0026】
[0025] 一般的な態様においては、コンピュータ読み取り可能な媒体に記憶されたソフトウェアは、コンピューティングシステムに、各々が複数のデータフィールドを有する複数のデータレコードにアクセスさせる命令と、その複数のデータレコードからデータレコードの第1のサブセットを選択させる命令と、を含む。ソフトウェアは、コンピューティングシステムに、データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供させる命令と、規則のうち少なくとも1つがデータ処理アプリケーションによって実行された回数を示すレポートを受信させる命令と、を含む。ソフトウェアは、コンピューティングシステムに、レポートに基づいて複数のデータレコードからデータレコードの第2のサブセットを選択させる命令を含む。
【0027】
[0026] 一般的な態様においては、コンピューティングシステムは、各々が複数のデータフィールドを有する複数のデータレコードにアクセスし、その複数のデータレコードからデータレコードの第1のサブセットを選択するよう構成された少なくとも1つのプロセッサを備える。プロセッサは、データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供し、規則のうち少なくとも1つがデータ処理アプリケーションによって実行された回数を示すレポートを受信するよう構成されている。プロセッサは、レポートに基づいて、複数のデータレコードからデータレコードの第2のサブセットを選択するよう構成されている。
【0028】
[0027] 一般的な態様においては、コンピューティングシステムは、各々が複数のデータフィールドを有する複数のデータレコードにアクセスする手段と、その複数のデータレコードからデータレコードの第1のサブセットを選択する手段と、を備える。コンピューティングシステムは、データレコードの第1のサブセットを複数の規則を実装するデータ処理アプリケーションに提供する手段と、規則のうち少なくとも1つがデータ処理アプリケーションによって実行された回数を示すレポートを受信する手段と、を備える。コンピューティングシステムは、レポートに基づいて、複数のデータレコードからデータレコードの第2のサブセットを選択する手段を備える。
【0029】
[0028] 本明細書に記載の技術は、以下の利点のうち1つ以上を有していてもよい。例えば、生産データレコードの完全なセットは巨大であり得、そのようなレコードの大きなセットを用いてデータ処理アプリケーションをテストすることは、遅く、非実用的である可能性がある。データ処理アプリケーションの動作に関連のある、データレコードの完全なセットの特徴を表すよう選択されたデータレコードのサブセットのみを用いることで、綿密で効率的なテストを実現することができる。データレコードの完全なセットの自動プロファイリング分析及びデータ処理アプリケーションからの実行のフィードバックによって、アプリケーションの効率的なテストのための最小数のデータレコードの正確な選択を実現することができる。
【0030】
[0029] 他の特徴及び利点は、以下の説明及び特許請求の範囲から明らかである。
【図面の簡単な説明】
【0031】
【
図1】[0030] データ処理システムのブロック図である。
【
図2A】[0031] 顧客取引レコードのセット例のごく一部である。
【
図2B】[0032] 人口統計レコードのセット例のごく一部である。
【
図3】[0033] ターゲットデータフィールドに基づいてデータレコードのサブセットを選択するプロセス例のフローチャートである。
【
図4】[0034] データレコードを選択するプロセス例のフローチャートである。
【
図5】[0035] データレコードを選択する別のプロセス例のフローチャートである。
【発明を実施するための形態】
【0032】
[0036] データ処理アプリケーションの開発にあたり、開発者は、生産環境の外部で作業するかもしれず、生産実績データへのアクセスを有さないかもしれない。データ処理アプリケーションが生産において実データで適切に実行することを保証するために、アプリケーションの開発及びテストの際には現実的なデータが用いられ得る。アプリケーションはしばしば、1つ以上の変数の値に依存して(例えばトリガされて)実行する規則を実装する。これらの変数は、入力データに対応する入力変数であってもよいし、1つ以上の入力変数に依存する派生変数などであってもよい。アプリケーションの効果的なテストのためには、あらゆる論理規則が少なくとも対応する最小回数実行されるように、及び/又はあらゆる論理規則が対応する最大回数を超えて実行されないように、(例えばアプリケーションにおける完全なコードカバレッジが達成されるように)アプリケーションのあらゆる論理規則を実行させるのに十分な入力データが提供され得る。
【0033】
[0037] アプリケーションに提供されるデータレコードのサブセットは、典型的にはデータレコードの1つ以上のより大きなセットから(例えば生産実績データのセットから)選択される。サブセットはサブセッティング規則に基づいて選択され得るもので、これはユーザによって指定されても、データレコードのプロファイリング分析に基づいて策定されても、アプリケーションの実行からのフィードバックに基づいて策定されるなどしてもよい。例えば、テスト中のアプリケーションの規則のいくつか又はすべてを実行させ得るデータを含むデータレコードがサブセットに選択されてもよい。
【0034】
[0038] 選択されたデータレコードはアプリケーションに提供され、アプリケーションはその選択データレコードを入力データとして用いて実行する。アプリケーションは1つ以上の規則を実装する。すなわち、アプリケーションにより実装される各規則は、その規則に対応する条件式が満足されるときにそのアプリケーションにより実行され得るもので、対応する条件式が満足されなければそのアプリケーションによっては実行されない。規則は、少なくとも1つの条件式と1つの実行式とを含む仕様により規定される。条件式が満足される(例えば、条件式の結果が真と評価される)と、実行式が評価される。条件式は1つ以上の変数の値に依存し(例えばトリガされ)てもよく、これは入力データに対応する入力変数であってもよいし、1つ以上の入力変数に依存する派生変数などであってもよい。いくつかの例においては、アプリケーションは、トリガされた規則のすべてを実行する。いくつかの例においては、アプリケーションは、トリガされた規則のすべてよりは少なく、例えば規則のうちいくつか又は規則のうち1つのみ(例えばトリガされた最初の規則)を実行する。規則については、少なくとも、2007年4月10日に提出された米国特許第8,069,129号の第5欄61行乃至第6欄11行により詳細に説明されており、同文献の内容は、参照によりその全体が本明細書に組み込まれる。
【0035】
[0039] 実行の後には、アプリケーションの実行を示すデータ(例えば、アプリケーションにおいて実行した又は実行しなかった規則、アプリケーションにおいて各論理規則が実行された回数、又は他の実行データ)を含むレポートが提供され得る。このレポートに基づいて、例えば実行されていない規則を実行させたであろう入力データ、特定の論理規則を指定の回数実行させたであろう入力データ、又は別の所望の実行結果を生じさせたであろう入力データといった、追加的な入力データが識別され得る。修正措置が実行されてもよい。例えば、追加的なサブセッティング規則が策定されてもよいし、その追加的なサブセッティング規則に従ってデータレコードの更新されたサブセットが選択されてもよい。データレコードの更新されたサブセットは、以前に実行されていない規則のいくつか又はすべてを実行させるのに十分なデータレコード、規則のいくつか又はすべてを指定の回数実行させるのに十分なデータレコード、又は別の所望の実行結果を引き起こすのに十分なデータレコードを含み得る。
【0036】
[0040]
図1を参照すると、データ処理システム100は、サーバ102aをホストとするレコード選択サブシステム102を備える。レコード選択サブシステム102は、データレコード(例えば生産データレコード)の1つ以上のセットからデータレコードを選択する。選択されたデータレコードは、データ処理アプリケーション106、例えばテスト中又は開発中のアプリケーションに提供される。いくつかの例においては、アプリケーション106は、例えば同じサーバ102aをホストとするレコード選択サブシステム102に対してローカルである。いくつかの例においては、アプリケーション106は、例えばローカルエリアデータネットワーク又は広域データネットワーク118(例えばインターネット)のような1つ以上のネットワークを介してアクセスされるリモートサーバ106aをホストとするレコード選択サブシステム102に対してリモートであってもよい。
【0037】
[0041] データレコードは、1つ以上のサーバ104a,104b,104c,104dによりホストされるデータソース104及び対応する記憶装置108a,108b,108c,108dに記憶される。データソース104は、データベース109、表計算ファイル110、テキストファイル112、メインフレームにより使用されるネイティブフォーマットファイル114、又は別の種類のデータソースといった種々のデータソースのうち任意のものを含み得る。データソースのうち1つ以上は、例えば、同じコンピュータシステム(例えばサーバ102a)をホストとするレコード選択サブシステム102に対してローカルであってもよい。データソースのうち1つ以上は、例えば、ネットワーク118、複数のネットワーク等を介してアクセスされるリモートコンピュータ(例えばサーバ104a,104b,104c,104d)をホストとするレコード選択サブシステム102に対してリモートであってもよい。
【0038】
[0042] データソース104に記憶されたデータレコードは、データレコードの1つ以上のセットを含む。例えば、データレコードは、顧客取引レコード、顧客人口統計レコード、金融取引レコード、電気通信データ、又は他の種類のデータレコードを含み得る。各データレコードは1つ以上のデータフィールドを有し、各データフィールドは各データレコードについて数値、英数字値、ヌル値などといった特定の値(又はその欠如)を有する。例えば、顧客取引レコードのセットにおいては、各レコードは、データの中でも特に顧客識別子、購入価格、及び取引種別を記憶するデータフィールドを有していてもよい。
【0039】
[0043] レコード選択サブシステム102のサブセッティングモジュール120は、1つ以上のサブセッティング規則に従ってデータソース104のうち1つ以上に記憶されたデータレコードの1つ以上のセットからデータレコードのサブセットを選択するなど、種々の動作を提供し得る。サブセッティング規則とは、データレコードの1つ以上のセットからデータレコードのサブセットを選択するコンピュータによって実行可能な規則である。サブセッティング規則は、プロファイリングモジュール126によって生成されたデータレコードの1つ以上のセットのプロファイルの分析に基づいて、サブセッティングモジュール120により策定されてもよい。また、サブセッティング規則は、カバレッジ分析モジュール128により提供されるアプリケーションの実行の結果の分析に基づいて(例えばレポートに基づいて)サブセッティングモジュール120により策定されてもよい。サブセッティング規則は、例えばデータレコード及び/又はテスト中のアプリケーション106についてのユーザの理解に基づき、ユーザインタフェース124を介してユーザにより規定されてもよい。また、サブセッティング規則は、ハードディスクなどの記憶媒体から読み出されてもよく、あるいはインターネットなどのネットワークを介して受信されてもよい。
【0040】
[0044] 多種多様なサブセッティング規則が可能であり、単独でも組み合わせても適用され得る。サブセッティング規則は決定論的であってもよく(例えば、規則は、特定の基準に合致するすべてのレコードが選択されることを規定してもよい)、又は非決定論的であってもよい(例えば、規則は、特定の基準に合致するすべてのレコードのうち2つのレコードが無作為に選択されることを規定してもよい)。
【0041】
[0045] いくつかの例においては、サブセッティング規則は、1つ以上のターゲットデータフィールドを指定するとともに、そのターゲットデータフィールドのそれぞれ異なる値又は値分類がデータレコードの選択されたサブセットのデータレコードのうち少なくとも1つに含まれることを規定する。サブセッティングモジュール120は、データレコードの1つ以上のセットのターゲットデータフィールドのそれぞれ異なる値を識別し、サブセッティング規則を満足するようにデータレコードを選択する。例えば、50の状態の各々について異なる値を有するstateデータフィールドと、2つの異なる値を有するgenderデータフィールドとが、ターゲットデータフィールドとして識別されてもよい。サブセットのデータレコードは、状態についての50の値の各々と性別についての2つの値の各々とがサブセット内のデータレコードのうち少なくとも1つに含まれるように選択される。
【0042】
[0046] いくつかの例においては、サブセッティング規則は、データレコードの同じセット内又はデータレコードの異なるセット間におけるデータレコード間の関係の種類を規定する。サブセッティングモジュール120はデータレコードを、データレコードとサブセットのために選択された他のデータレコードとの関係に基づいて選択する。例えば、顧客識別子(cust_id)データフィールドについて共通の値を共有するデータレコードがサブセットのために選択されてもよい。フィルタリングなどの、サブセッティング規則の他の例も可能である。いくつかの例においては、サブセッティング規則の組み合わせを用いてサブセットのためのデータレコードを選択することができる。
【0043】
[0047] いくつかの例においては、サブセッティング規則は、データ分析者又はアプリケーション開発者などのユーザにより提供される。例えば、ユーザは、ターゲットフィールドを識別し、データレコード間の関係を規定し、あるいはサブセッティング規則を示してもよい。
【0044】
[0048] いくつかの例においては、サブセッティング規則は、サブセッティングモジュール120によって、プロファイリングモジュール126により自動的に生成されたデータレコードのプロファイルの分析に基づいて策定される。プロファイリングモジュール126は、データレコードの1つ以上のセットにアクセスして、単一のデータセットの個々のデータレコードを分析すること、及び/又はデータレコードのセット内の及び/又はデータレコードの異なるセットにまたがるデータフィールド間の関係を分析することによりデータレコードのプロファイルを生成してもよい。
【0045】
[0049] データレコードのセットのプロファイルとは、例えばフィールド単位での、そのデータレコードのセットのデータの概要である。プロファイルは、データレコードのセットのデータを特徴付ける情報、例えばデータレコードのデータフィールドのうち1つ以上の基数、データフィールドのうち1つ以上の値の分類、個々のデータレコードにおけるデータフィールド間の関係、データレコード間の関係、又はデータレコードのセットのデータを特徴付ける他の情報などを含み得る。データレコードのセットのプロファイルは、擬似フィールドを特徴付ける情報も含んでいてもよい。擬似フィールドとは、プロファイリングモジュール126により生成され、関係するデータレコードの1つ以上のデータフィールドの値の操作により決定される値が取り込まれたデータフィールドである。
【0046】
[0050] 生成されたデータレコードのプロファイルに基づいて、サブセッティングモジュール120が、アプリケーション106の良好なコードカバレッジを達成するデータレコードのサブセットの選択に関連し得るデータレコードの特徴を識別してもよい。例えば、データレコードのプロファイルに基づいて、サブセッティングモジュール120が、アプリケーションの入力変数及び派生変数に関係しそうな1つ以上のデータフィールド又はデータフィールドの組み合わせを識別してもよい。場合によっては、サブセッティング規則は、ユーザから又はコンピュータ記憶媒体から受信された入力に基づいて、及び/又はアプリケーション106の実行の結果に基づいて(例えばカバレッジ分析モジュール128から受信された入力に基づいて)策定されてもよい。
【0047】
[0051] サブセッティングモジュール120は、1種類以上の分析のための動作を実行してサブセッティング規則を規定してもよい。サブセッティングモジュール120は、個々のデータレコード内のデータフィールドに基づいて、例えばどのデータフィールドがアプリケーション106の変数に関係しそうであるかを決定することにより、1つ以上のサブセッティング規則を規定してもよい。いくつかの例においては、サブセッティングモジュール120は、プロファイルに示されるターゲットデータフィールドの基数(すなわち、セットの全データレコードにまたがるデータフィールドの異なる値又は値の分類の数)に基づいてターゲットデータフィールドを識別する。例えば、(2という基数を有する)genderデータフィールドはターゲットデータフィールドとして識別され得るが、その一方で(およそデータレコードの総数の基数を有する)phone_numberデータフィールドはターゲットデータフィールドとしては識別されないであろう。いくつかの例においては、サブセッティングモジュール120は、1つ以上のデータフィールドにおけるデータの操作の結果生じたデータが取り込まれた擬似フィールドをターゲットデータフィールドとして識別する。例えば、incomeデータフィールドのデータはカテゴリ(例えば高(high)、中(medium)、又は低(low))に分類されてもよく、そのincomeデータフィールドの分類が取り込まれた擬似フィールド(inc_range)がターゲットデータフィールドとして識別されてもよい。いくつかの例においては、サブセッティングモジュール120は、ターゲットデータフィールドと、プロファイルに示される同じレコード内の1つ以上の他のデータフィールドとの間の関係に基づいて、ターゲットデータフィールドを識別する。例えば、プロファイルは、データフィールドstateとZIPとが非依存でないことを示し得る。この依存性に基づいて、サブセッティングモジュール120は、これらのデータフィールドのうち一方のみを可能なターゲットデータフィールドと考えてもよい。サブセッティングモジュール120は、プロファイルに示されるデータレコードのセット内の及び/又はデータレコードの異なるセットにまたがった異なるデータレコード間の関係の分析に基づいて、1つ以上のサブセッティング規則を規定してもよい。例えば、プロファイルは、データレコードがデータフィールドの共通の値(例えばcust_idデータフィールドの値)を介してリンクされ得ることを示してもよい。データレコードの他の分析も可能である。
【0048】
[0052] データレコードのサブセットが一旦サブセッティングモジュール120によって選択されると、データレコードの選択されたサブセットを示すデータがテスト中のアプリケーション106に提供される。例えば、データレコードの選択されたサブセット及びデータレコードのアドレスの識別子がアプリケーション106に提供されてもよい。データレコードの選択されたサブセットを含むファイルもアプリケーション106に提供されてもよい。
【0049】
[0053] データ処理アプリケーション106は、データレコードのサブセットを入力データとして用いて実行される。実行の後には、レコード選択サブシステム102のカバレッジ分析モジュール128にレポートが提供される。レポートはユーザ122にも提供されてもよい。レポートは、アプリケーションの実行を示すデータ(例えば、実行した又はしなかったアプリケーションの規則、アプリケーションの各論理規則が実行された回数、又は他の実行データ)を含む。いくつかの例においては、レポートは実行した又はしなかった規則を直接識別する。レポートは、各論理規則が実行された回数、実行中のアプリケーションの各変数の値、又は他の情報といった、アプリケーション106の実行についての追加的な情報も含んでいてもよい。
【0050】
[0054] 実行しなかったアプリケーションの各論理規則については、カバレッジ分析モジュール128が、その論理規則に関係するアプリケーション106の1つ以上の変数を識別する。カバレッジ分析モジュール128は、レポートに含まれたデータ(例えば、アプリケーション106の中のデータの流れを示すデータ)や、アプリケーションについてのプリロードされた情報などに基づいて、変数を識別してもよい。場合によっては、カバレッジ分析モジュール128は、論理規則を実行させたであろう各変数の値又は値の範囲も識別する。入力データフィールドと、変数に対応する値又は値の範囲とは、識別され、サブセッティングモジュール120による以降のデータレコードの更新されたサブセットの選択において追加的なサブセッティング規則を規定するために用いられる。
【0051】
[0055] 例えば、識別された変数がデータレコードのデータフィールドのうち1つに直接対応するアプリケーションの入力変数である場合には、カバレッジ分析モジュール128が、対応するデータフィールドと、そのデータフィールドの値又は値の範囲とを識別する。例えば、変数xが10よりも大きく、且つ変数xが顧客取引の金額についてのデータを含む入力データフィールドtxn_amtに対応するときにアプリケーション106の論理規則が実行するのであれば、カバレッジ分析モジュールは、入力データが、txn_amt>10である少なくとも1つのデータレコードを含むべきであると決定する。この決定(例えばtxn_amt>10)はサブセッティングモジュール120に提供され、サブセッティングモジュールが、アプリケーション106に提供されるデータレコードの以降のサブセットがx>10論理規則を実行させるのに十分なデータを含むように追加的なサブセッティング規則を規定する。
【0052】
[0056] 例えば、識別された変数が入力変数でない(すなわち、識別された変数はデータレコードのデータフィールドのうちの1つに直接対応しない)場合には、カバレッジ分析モジュール128のデータリネージサブモジュール130が、アプリケーション106の論理を通じた変数の導出を追跡し、その識別された変数がどの入力変数から導出されたのかを識別する。すると、カバレッジ分析モジュール128が、対応するデータフィールド及びそのデータフィールドの値又は値の範囲を識別する。例えば、アプリケーション106の論理規則が、変数yの値が2であるときに実行するのであれば、データリネージサブモジュール130は、入力データフィールドgender、inc_range、及びstateに対応する3つの入力変数の論理的組み合わせからアプリケーションの論理ステップを介してyが導出されることを決定してもよい。変数yの論理的な導出に従うことによって、y=2とするデータフィールドgender、inc_range、及びstateの値を決定することができる。例えば、論理規則y=2は、gender=F、inc_range=high、及びstate=ME,NH,VT,MA,RI又はCTであるときに満足されてもよい。この決定はサブセッティングモジュール120に提供される。サブセッティングモジュールは、アプリケーション106に提供されるデータレコードの以降のサブセットがy=2論理規則を実行させるのに十分なデータを含むように追加的なサブセッティング規則を規定する。別の一例としては、論理規則は、2つの変数の値が特定の関係を有するとき、例えばデータフィールドfirstname及びlastnameに対応する変数の値が等しいときなどに実行してもよい。
【0053】
[0057] いくつかの例においては、カバレッジ分析の結果はユーザ122にも提供される。ユーザは、追加的なサブセッティング規則をサブセッティングモジュール120に提供してもよく、あるいは以前に提供されたサブセッティング規則を変更してもよい。また、ユーザは、追加的な入力をプロファイリングモジュール126に提供して、以前にプロファイリングモジュールに提供された入力を変更してもよい。
【0054】
[0058] いくつかの例においては、データレコードの完全なセットであっても、アプリケーション106の論理規則を満足するのに十分なデータを含まない。例えば、アプリケーション106は、データフィールドincomeの値が500万ドルよりも大きいときにのみ実行する論理規則を含んでいてもよい。income>$5,000,000のデータレコードがセット内に存在しないのであれば、データレコードのいずれのサブセットもその論理規則を実行させない。データセットにおけるそのような不備を識別するために、いくつかの例においては、アプリケーションが、データレコードのすべてを入力として用いて1回以上実行されてもよい。その結果生じるレポートは、入力のために選択されたデータレコードのサブセットに関係なく、カバーされ得ない規則を識別する。
【0055】
[0059]
図2A及び2Bに示すデータレコードのセット例200,252を参照して、サブセッティングモジュール120及びプロファイリングモジュール126の動作を説明する。
図2Aは顧客取引レコードのセット200のごく一部の例である。各顧客取引レコード202には、例えば顧客識別子(cust_id)204a、取引種別(txn_type)204b、取引金額(txn_amt)204c、取引期日(date)204d、及び店舗識別子(store_id)204eなど、いくつかのデータフィールド204がある。他のデータフィールドも含まれていてもよい。
図2Bは人口統計レコードのセット250のごく一部の例である。各人口統計レコード252には、例えば顧客識別子(cust_id)254a、顧客住所(address,state,ZIP)254b,254c,254d、顧客収入(income)254e、及び顧客性別(gender)254fなど、いくつかのデータフィールド254がある。他のデータフィールドも含まれていてもよい。プロファイリングモジュール126及びサブセッティングモジュール120の動作はこれらのデータセット例に限定されるものではなく、他の種類のデータセットにも同様に当てはまる。
【0056】
[0060] サブセッティングモジュール120は、1種類以上のサブセッティング規則に従ってデータレコードのサブセットを選択してもよい。いくつかのサブセッティング規則例は以下のようなものである。:
【0057】
[0061] フィルタリング
いくつかの例においては、サブセッティングモジュール120は、フィルタに従ってデータレコードのサブセットを選択する。例えば、フィルタは、所与のデータフィールドについて特定の値を有するすべてのデータレコードが選択されることを規定してもよい。例えば、フィルタは、state(データフィールド254c)=“MA”を有するセット250のすべての人口統計レコードがサブセットのために選択されることを規定してもよい。フィルタは、ユーザ、プロファイリングモジュール126、及び/又はカバレッジ分析モジュール128によって規定されてもよい。
【0058】
[0062] いくつかの例においては、サブセッティングモジュール120は、データレコードが所与のデータフィールドの値に基づいて除外される規則ベースのフィルタに従ってデータレコードのサブセットを選択する。例えば、フィルタは、store_id(データフィールド204e)=“online”のデータレコードがサブセットから除外されることを規定してもよい。規則ベースのフィルタは、ユーザ122、プロファイリングモジュール126、及び/又はカバレッジ分析モジュール128によって規定されてもよい。
【0059】
[0063] ターゲットデータフィールド
いくつかの例においては、サブセッティングモジュール120は、1つ以上のターゲットデータフィールドに基づいてデータレコードのサブセットを選択する。ターゲットデータフィールドとは、例えばアプリケーションの変数と関係のありそうなデータフィールドである。例えば、顧客取引レコードに作用するある特定のアプリケーションが店舗位置によって取引種別(すなわち購入又は返品)を追跡する場合には、アプリケーションの開発者は、データフィールドtxn_type(データフィールド204b)及びstore_id(データフィールド204e)をターゲットデータフィールドとして識別してもよい。場合によっては、サブセッティングモジュール120は、データレコードのプロファイルに示されるデータフィールドの基数などのデータフィールドの特性に基づいて、ターゲットデータフィールドを識別してもよい。場合によっては、カバレッジ分析モジュール128が、アプリケーションの変数とデータフィールドとの間の関係に基づいてターゲットデータフィールドを識別してもよい。基数の低いデータフィールド(例えば閾値基数よりも小さい基数を有するデータフィールド)は、プロファイリングモジュール126がデータフィールドの内容について及びその内容がアプリケーションにどのように関係し得るのかについて他の情報をほとんど又は全く有さない場合であっても、ターゲットデータフィールドとして識別され得る。閾値基数はユーザにより規定されてもよいし、あるいはプロファイリングモジュールによって自動的に決定されてもよい。例えば、人口統計レコードのセット350のプロファイルに基づくと、データフィールドstateは、もしも閾値基数が少なくとも50に設定されるならば、ターゲットデータフィールドとして識別され得る。
【0060】
[0064]
図3は、ターゲットデータフィールドに基づいてデータレコードのサブセットを選択するプロセス例のフローチャートである。1つ以上のターゲットデータフィールドが、例えばデータレコードのプロファイルに含まれた情報、ユーザからの情報、カバレッジ分析モジュール128からの情報等に基づいて、識別される(300)。レコードのセットにおいては、各ターゲットデータフィールドについて一連の異なる値が識別される(302)。各ターゲットデータフィールドのそれぞれ異なる値がサブセット内の少なくとも1つのデータレコードに含まれるように、サブセットのためにデータレコードが選択される(304)。一例においては、stateデータフィールド及びgenderデータフィールドが、人口統計レコードのセット250のためのターゲットデータフィールドとして識別される。データレコードのセット250は分析され、stateについての50の異なる値と、genderについての2つの異なる値とが識別される。データレコードは、stateについての50の値の各々とgenderについての2つの値の各々とがサブセット内の少なくとも1つのデータレコードに含まれるように選択される。いくつかの例においては、サブセッティング規則は、各ターゲットデータフィールドのそれぞれ異なる値がサブセットに含まれる回数を規定してもよい(例えば1回、10回、50回など)。
【0061】
[0065] ターゲットデータフィールドに基づくサブセッティングは、各データフィールドの各値のあらゆる組み合わせがサブセット内に表されることを必ずしも意味するものではない。例えば、stateについての50の値の各々とgenderについての2つの値の各々とが含まれているデータレコードのサブセットは、50のデータレコードしか含まないかもしれない。いくつかの例においては、ターゲットデータフィールドとは、(例えば後述するようにプロファイリングモジュールによって構成された)擬似フィールドのような構成されたフィールドであり、同じレコード内の又は異なるレコードにまたがる1つ以上のデータフィールドに依存する。
【0062】
[0066] データ分類
いくつかの例においては、データレコードのサブセットは、データレコードの1つ以上のターゲットデータフィールドにおけるデータの分類に基づいて選択される。例えば、サブセッティング規則は、ターゲットデータフィールドを識別するとともに、ターゲットデータフィールドの値を分類可能な異なる値の範囲(「ビン」)を特定してもよい。サブセットのためのデータレコードは、ターゲットデータフィールドの正確な値よりもむしろターゲットデータフィールドのビンに基づいて選択される。一例においては、人口統計レコードのセット250のデータフィールドincomeがターゲットデータフィールドとして識別される。3つのビン、すなわち「低」(income<$50,000)、「中」(incomeが$50,000と$150,000との間)、及び「高」(income>$150,000)が指定される。サブセッティングモジュール120がサブセットに含めることについて検討する各データレコードのincomeデータフィールドの値は低、中、又は高として分類され、データレコードは、incomeの3つのビンの各々がサブセット内の少なくとも1つのデータレコードに含まれるように選択される。いくつかの例においては、データフィールドの値は(例えばプロファイリングモジュールによって)分類され、各データレコードの擬似フィールドに対応する分類された値が取り込まれる(例えばデータフィールドinc_range256)。これらの例においては、擬似フィールドがターゲットデータフィールドとして扱われ、データレコードは、擬似フィールドのそれぞれ異なる値がサブセット内の少なくとも1つのデータレコードに含まれるように選択される。分類されるデータフィールド、ビンの数、及び/又は各ビンの値の範囲は、ユーザ122によって規定されてもよいし、あるいはプロファイリングモジュール126及び/又はカバレッジ分析モジュール128によって自動的に識別されてもよい。
【0063】
[0067] 組み合わせ論
いくつかの例においては、データレコードのサブセットは、2つ以上の他のサブセッティング規則の組み合わせを規定し得る組み合わせ論規則に従って選択される。例えば、組み合わせ論規則は、2つのターゲットデータフィールドを識別するとともに、その2つのターゲットデータフィールドの各々のすべての値のあらゆる可能な組み合わせがサブセット内の少なくとも1つのデータレコードに含まれることを規定してもよい。組み合わせ論規則の一例は、データフィールドinc_range及びgenderをターゲットデータフィールドとして識別し、これらの2つのデータフィールドのすべての可能な組み合わせがサブセットに含まれることを規定してもよい。この組み合わせ論規則を満足するサブセットは、6つのデータレコード(すなわち、低+女性、低+男性、中+女性、中+男性、高+女性、高+男性)を含むであろう。一方、組み合わせ論規則でなければ、inc_range及びgenderをターゲットデータフィールドとして規定することは、わずか3つのレコード(例えば低+女性、中+男性、高+女性)で満足され得る。いくつかの例においては、サブセッティング規則は、2つ以上のターゲットデータフィールドの組み合わせ論的な組み合わせと、その組み合わせ論的な組み合わせとは別の1つ以上の他のターゲットデータフィールドとを規定してもよい。例えば、サブセッティング規則は、inc_range及びgenderを組み合わせ論的な組み合わせに取り込まれるターゲットデータフィールドとして規定してもよく、また、stateをその組み合わせとは別のターゲットデータフィールドとして規定してもよい。より複雑な組み合わせもまた可能である。ターゲットデータフィールド及び特定の種類の組み合わせは、ユーザ122により規定されてもよいし、あるいはプロファイリングモジュール126及び/又はカバレッジ分析モジュール128により自動的に識別されてもよい。
【0064】
[0068] データレコード間の関係
いくつかの例においては、データレコードのサブセットは、データレコードのセット内の又はデータレコードの異なるセットにまたがるデータレコード間の関係に従って選択される。サブセッティング規則は、1つのデータレコードがサブセットのために選択される場合、結合キーを介してそのデータレコードに関係付けられた他のデータレコードもそのサブセットのために選択されるように、結合キーを規定してもよい。例えば、サブセッティング規則は、データフィールドcust_idを、顧客取引レコードのセット200内のデータレコード及びこのセット200と人口統計レコードのセット250との間のデータレコードを関付ける結合キーとして識別してもよい。サブセットのために(例えば別のサブセッティング規則に従って)選択されるいずれかのセットからの各データレコードについては、その選択されるデータレコードと同じcust_idの値を共有する他のデータレコードもサブセットのために選択される。関係に従ってデータレコードを選択することにより、サブセットは、例えば特定の顧客のすべての取引のデータレコードならびにその顧客の人口統計レコードを含むであろう。この関係は、ユーザ122により規定されてもよいし、あるいはプロファイリングモジュール126及び/又はカバレッジ分析モジュール128により自動的に識別されてもよい。
【0065】
[0069] いくつかの例においては、データレコード間の関係は、データレコードの1つ以上の特性に基づいていてもよい。例えば、注目データレコードが識別されてもよい(例えば不正なクレジットカード取引に対応するデータレコード)。その場合、対応するサブセッティング規則が、サブセットが識別された注目データレコードと類似の特性を有する50のデータレコードを含むべきであることを規定して、例えばそのデータレコードにおける他の不正の事例を識別することを支援してもよい。
【0066】
[0070] 他のサブセッティング規則も規定され得る。例えば、データレコード数が規定されてもよい(例えば、サブセットは、txn_type=“purchase”である少なくとも100のレコードを含むこととする)。統計パラメータが規定されてもよい(例えば、サブセットは、txn_type=“purchase”のすべてのデータレコードと、txn_type=“return”のデータレコードの15%とを含むこととする)。数値パラメータが規定されてもよい(例えば、サブセットは、データレコードのセット内の100万のデータレコードにつき少なくとも指定した数のデータレコードを含むこととする)。これらのサブセッティング規則は、ユーザ122によって規定されてもよく、及び/又は(プロファイリングモジュール126によって生成された)プロファイルの分析及び/又は(カバレッジ分析モジュール128により提供された)実行の分析の結果に基づいてサブセッティングモジュール120により策定されてもよい。
【0067】
[0071] いくつかの例においては、複数のサブセッティング規則がデータレコードのセットに適用されてもよい。場合によっては、これらの複数のサブセッティング規則を適用した結果、いくつかのデータレコードがサブセットのために複数回選択されてもよい。サブセット内に1回よりも多く現れるデータレコードを排除するために、選択されたデータレコードに重複排除規則を適用してもよい。
【0068】
[0072] いくつかの例においては、サブセッティング規則は、プロファイリングモジュール126によって生成されたプロファイルの分析に基づいて策定される。プロファイリングモジュール126は、外部のソースからの入力を用いずに、あるいはユーザ122及び/又はカバレッジ分析モジュール128からの入力を用いて、データレコードを分析してもよい。プロファイリング分析のいくつかの例は以下のようなものである。:
【0069】
[0073] 基数
いくつかの例においては、プロファイリングモジュール126は、データフィールドの基数(すなわち、セットのデータレコードのすべてにまたがるデータフィールドのための異なる値の数)を識別する。例えば、顧客取引レコードのセット300をプロファイルするときには、プロファイリングモジュールは、txn_typeを基数の低い(セット300のすべてのデータレコードに異なる値が2つしかない)データフィールドとして識別してもよい。人口統計レコードのセット350をプロファイルするときには、閾値基数が少なくとも50に設定されるならば、データフィールドstateが基数50のデータフィールドとして識別され得る。データフィールドのいくつか又はすべての基数は、サブセッティング規則を規定するためにサブセッティングモジュール120によって用いられてもよい。
【0070】
[0074] 分類
いくつかの例においては、プロファイリングモジュール126は、データフィールド内のデータを分類する。例えば、プロファイリングモジュールは、基数が高いデータフィールドの値を分類可能な値の異なる範囲(「ビン」)を識別してもよい。分類されるとき、データフィールドは、より低い基数を有し、したがって上述のようにターゲットデータフィールドとして識別されてもよい。場合によっては、プロファイリングモジュールは、各レコードを分析しながらそのレコードのデータフィールドの値を分類するが、その分類を記憶はしない。場合によっては、プロファイリングモジュールは各レコードのための擬似フィールドを生成し、そこにデータフィールドの値に対応するビンが記憶される。一例として、人口統計レコードのセット350のデータフィールドincomeは高基数である。プロファイリングモジュールは、各レコードのincome値を3つのビン(高、中、又は低)のうち1つに分類し、擬似フィールドinc_range356を生成して類別されたデータを記憶する。擬似フィールド356は基数3を有し、したがって、高基数のデータフィールドincomeがターゲットデータフィールドとして識別され得なかった場合には、サブセッティングモジュール120によってターゲットデータフィールドとして識別されてもよい。いくつかの例においては、プロファイリングモジュールは、高基数のデータフィールドが自動的に分類され得ることを認識する。いくつかの例においては、ユーザが分類のためのデータフィールドを識別するとともに、ビンの数及び各ビンに該当する値の範囲を規定してもよい。いくつかの例においては、ユーザが、特定のデータフィールドを識別することなく、分類されるデータフィールドの特性を規定する(例えばユーザは、数値を有し10と100との間の基数を有する任意のデータフィールドが四分位数に分けられることを規定してもよい)。
【0071】
[0075] データフィールド間の関係
いくつかの例においては、プロファイリングモジュール126は、単一のデータレコード内のデータフィールド間の関係を決定する。例えば、あるデータレコード内の第1のデータフィールドが各データレコード内の第2のデータフィールドに依存する場合には、その第1のデータフィールドと第2のデータフィールドとのうち一方のみがターゲットデータフィールドと見なされる必要がある。例えば、データフィールドstateとデータフィールドZIPとは関係付けられている(すなわち、ZIPの値はstateの値に依存する)。プロファイルにおけるそのような関係の表示に基づいて、サブセッティングモジュール120は、2つの関係付けられたデータフィールドのうち一方のみを潜在的なターゲットデータフィールドと見なしてもよい。データフィールド間のより複雑な関係も識別可能であり、ターゲットデータフィールドの識別においてサブセッティングモジュール120により用いられ得る。プロファイリングモジュールは、ユーザ入力、例えば関係のありそうなデータフィールドのユーザ指定によってガイドされてもよい。
【0072】
[0076] データレコード間の関係
いくつかの例においては、プロファイリングモジュール126は、データレコードのセット内の又はデータレコードの異なるセットにまたがる異なるデータレコード間の関係を決定する。例えば、プロファイリングモジュールは、セット内のいくつかのデータレコードがデータフィールドの共通の値を介してリンクされていることを認識してもよい。例えば、顧客取引レコードのセット300は、同じ顧客による取引に対応する複数のデータレコードを含んでいてもよい。これらのデータレコードは、cust_idの共通の値(すなわち結合キー)を介してリンクされる。プロファイリングモジュールは、第1のセット内の第1のデータレコードがデータフィールドの共通の値を介して第2のセット内の第2のデータレコードと関係していることも認識し得る。例えば、顧客取引レコードのセット300のデータレコードは、データフィールドcust_idを介して、人口統計レコードのセット350のデータレコードとリンクされていてもよい(すなわち、特定の顧客の取引レコードは、その顧客の人口統計レコードとリンクされ得る)。プロファイリングモジュールは、ユーザ入力、例えばデータレコードとリンクしそうなデータフィールドのユーザ指定によってガイドされてもよい。また、プロファイリングモジュールは、データレコードのセットと関連付けられたリレーショナルデータベースのスキーマの分析によって結合キー又は他の関係を識別するようガイドされてもよい。いくつかの例においては、プロファイリングモジュール126は、データレコード間の関係を決定し、その関係をユーザに対して提示する。するとユーザは、関係についての情報を用いてサブセッティングモジュール120にサブセッティング規則を規定する。
【0073】
[0077] プロファイルにおけるデータレコード間のそのような関係の表示に基づいて、サブセッティングモジュール120は、結合キーをサブセッティング規則の一部として規定してもよい。そのようなサブセッティング規則の下では、サブセットのために1つのデータレコードが選択される場合、結合キーを介してそのデータレコードに関係する他のデータレコードもサブセットのために選択される(例えば所与のcust_idを有する1つのデータレコードが選択される場合、同じcust_idを有する他のデータレコードも選択される)。
【0074】
[0078] 擬似フィールド
いくつかの例においては、プロファイリングモジュール126は、関係するデータレコードの1つ以上のデータフィールドの値の操作によって決定された値を有する新たな擬似フィールドを生成し、その擬似フィールドをターゲットデータフィールドとして識別する。擬似フィールドの値は、結合キーを介して関係付けられたデータレコードの1つ以上のデータフィールドの値の組み合わせであってもよい。例えば、擬似フィールドの値は、累積値、例えば第2のデータフィールドの共通の値を介して関連付けられたデータレコードの第1のデータフィールドのすべての値の合計、総数、又は他の累積などの累積であってもよい。擬似フィールドの値は、累積値の分類であってもよい。例えば、所与の顧客の合計取引金額に応じたアクションを行うアプリケーションにおいてロジックを処理するために、擬似フィールドtotal_amt206が顧客取引レコードのセット300に生成される。所与のcust_id値を有するデータレコードの擬似フィールドtotal_amtの値は、そのcust_id値を有するすべてのデータレコードのtxn_amtフィールドの値を合計し、その合計を3つのビン(高、中、又は低)のうち1つに分類することによって決定される。すると、擬似フィールドはサブセッティングモジュールによってターゲットデータフィールドとして識別され得る。
【0075】
[0079]
図4を参照すると、あるプロセス例においては、複数のデータレコードがアクセスされる(400)。各データレコードは複数のデータフィールドを有する。複数のデータレコードのうち少なくともいくつかについて、データフィールドのうち1つ以上の値が分析される(402)。この分析に基づいて、複数のデータレコードのプロファイルが生成される(404)。複数のデータレコードのプロファイルは、データレコードのセット内のデータを特徴付ける情報を含む。少なくとも1つのサブセッティング規則がプロファイルに基づいて策定される(406)。サブセッティング規則とは、複数のデータレコードからデータレコードのサブセットを選択する規則の仕様である。データレコードのサブセットは、少なくとも1つのサブセッティング規則に基づいて選択される(406)。例えば、データレコードのサブセットは、ターゲットデータフィールドの値に基づいて、及び/又はデータフィールドの値を介して関係付けられたデータレコード間の関係に基づいて、選択されてもよい。
【0076】
[0080]
図5を参照すると、別のプロセス例においては、複数のデータレコードがアクセスされる(500)。各データレコードは複数のデータフィールドを有する。データレコードの第1のサブセットが複数のデータレコードから選択される(502)。このデータレコードの第1のサブセットは、テスト中のアプリケーションなどのデータ処理アプリケーションに提供される(504)。アプリケーションは種々の規則を実装する。データ処理アプリケーションの規則は、アプリケーションの実行可能な部分であって、その実行は1つ以上の変数の値に依存する(例えばトリガされる)。規則のうち少なくとも1つがデータ処理アプリケーションによって実行された回数を示すレポートが受信される(506)。このレポートに基づいて、データレコードの第2のサブセットが複数のデータレコードから選択される(508)。このデータレコードの第2のサブセットはデータ処理アプリケーションに提供される(510)。例えば、第2のサブセットは、以前に実行されていない規則が実行され得るように、あるいは特定の規則が実行され得るように、選択される。
【0077】
[0081] いくつかの例においては、プロファイリングモジュール126により実施されたプロファイリング分析に基づいて、新たなデータレコードが生成可能である。例えば、プロファイリング分析は、データレコード内及びデータレコード間におけるデータフィールド間の関係及びデータレコードの既存のセット内のデータフィールドの可能な値の範囲を明らかにする。データフィールドのうち少なくともいくつかに既存のデータレコードについての情報から算出又は決定された値が取り込まれた新たなデータレコードが構築可能である。テストデータ生成は、例えばソースデータセットにアプリケーションの特定の論理規則、例えばincome>$10,000,000を要求する論理規則、あるいは要求された値のすべてがデータレコードのセット内に示されていない場合に複数のデータフィールドの特定の値の複雑な組み合わせを要求する論理規則を実行させるであろうデータレコードがないときに用いられてもよい。また、テストデータ生成は、プロファイルが元々のデータセットのプロファイルと合致する新たなデータセットを生成するために用いられてもよい。例えば、新たなデータセットは、元々のデータレコードのプライバシを守るために、元々のデータセットのデータを任意抽出することによって生成されてもよい。
【0078】
[0082] いくつかの例においては、上述のアプローチは、UNIXオペレーティングシステムなどの適切なオペレーティングシステムの制御の下で、1つ以上の汎用コンピュータをホストとし得る実行環境において実行される。例えば、実行環境は、ローカルである(例えばSMPコンピュータなどのマルチプロセッサシステム)か、又はローカルに分散された(例えばクラスタとして結合された複数のプロセッサ又はMPP)か、又はリモートであるか、又はリモートに分散された(例えばローカルエリアネットワーク(LAN)及び/又は広域ネットワーク(WAN)を介して結合された複数のプロセッサ)か、又はこれらの任意の組み合わせである複数の中央演算処理装置(CPU)を使用するコンピュータシステムの構成を含む複数ノード並列計算環境を含むことができる。
【0079】
[0083] 場合によっては、上述のアプローチは、頂点間の有向リンク(作業要素の流れを表す)によって接続された頂点(コンポーネント又はデータセットを表す)を含むデータフローグラフとして、アプリケーションを開発するシステムにより実行される。例えば、そのような環境は、「グラフ型計算のためのパラメータ管理」と題された米国特許出願公開第2007/0011668号に詳述されており、これは参照により本明細書に組み込まれる。そのようなグラフ型計算を実行するシステムは、米国特許第5,566,072号、「グラフとして表された操作の実行」に説明されており、これは参照により本明細書に組み込まれる。このシステムに従って作成されたデータフローグラフは、グラフコンポーネントにより表される個々のプロセス内外への情報を取得する方法、プロセス間で情報を移動させる方法、及びプロセスの実行順序を定義する方法を提供する。このシステムは、プロセス間通信方法を選ぶアルゴリズムを含む(例えば、グラフのリンクに従った通信路はTCP/IP又はUNIXドメインソケットを使用することができ、あるいは共有メモリを使用してプロセス間でデータを渡すことができる)。
【0080】
[0084] 上述のアプローチは、コンピュータ上で実行されるソフトウェアを用いて実行することができる。例えば、ソフトウェアは、各々が少なくとも1つのプロセッサ、少なくとも1つのデータ記憶システム(揮発性及び不揮発性メモリ及び/又は記憶要素など)、少なくとも1つの入力装置又はポート、及び少なくとも1つの出力装置又はポートを備えた1つ以上のプログラムされた又はプログラム可能なコンピュータシステム(分散型、クライアント/サーバ、又は格子など、様々なアーキテクチャであり得る)上で実行する1つ以上のコンピュータプログラムにおけるプロシージャを形成する。ソフトウェアは、例えばデータフローグラフの設計及び構成に関する他のサービスを提供するより大きなプログラムの1つ以上のモジュールを形成し得る。グラフのノード及び要素は、コンピュータ読み取り可能な媒体に記憶されたデータ構造又はデータリポジトリに記憶されたデータモデルに準拠する他の組織的なデータとして実装され得る。
【0081】
[0085] ソフトウェアは、汎用又は専用プログラム可能なコンピュータにより読み取り可能なCD−ROMなどの記憶媒体に提供されてもよく、あるいはネットワークの通信媒体を介してそのソフトウェアが実行されるコンピュータの記憶媒体に配信(伝播信号中に符号化)されてもよい。機能のすべてが専用コンピュータ上で、又はコプロセッサなどの専用ハードウェアを用いて行われてもよい。ソフトウェアは、分散的に実装されて、ソフトウェアにより指定される計算の異なる部分が異なるコンピュータによって行われてもよい。そのようなコンピュータプログラムの各々は、好適には汎用又は専用のプログラム可能なコンピュータによって読み取り可能な記憶媒体又は装置(例えばソリッドステートメモリ又は媒体、あるいは磁気又は光学媒体)に記憶され又はダウンロードされて、本明細書に記載のプロシージャを行うべくこれらの記憶媒体又は装置がコンピュータシステムにより読み取られるときに、コンピュータを構成し動作させる。本発明のシステムは、コンピュータプログラムによって構成されたコンピュータ読み取り可能な記憶媒体として実装されるものと考えられてもよく、ここで、そのように構成された記憶媒体は、コンピュータシステムを、特定の所定の手法で動作させて、本明細書に記載の機能を行わせる。
【0082】
[0086] 本発明の多数の実施形態を説明した。しかし、本発明の精神及び範囲を逸脱することなく様々な変更が行われ得ることは理解されるであろう。例えば、上述したステップのうちいくつかは順序に非依存であってもよく、したがって記載されたものとは異なる順序で行われ得る。
【0083】
[0087] 上述の記載は説明を意図したものであり、添付の特許請求の範囲によって規定される本発明の範囲を限定することを意図したものではないことが理解されるべきである。例えば、上述した多数の機能ステップは、全体の処理に実質的に影響を及ぼすことなく、異なる順序で実行され得る。他の実施形態は下記の特許請求の範囲内にある。