この章ではOracle Warehouse Builderのデータ整備機能とその使用方法を説明します。
この章の内容は次のとおりです。
プロファイリング結果からデータ・ルールを導出した後、プロファイリング結果に基づいたソース・データの修正プロセスを自動化できます。スキーマ修正とマッピング修正を作成できます。スキーマ修正ではスクリプトが作成されます。このスクリプトを使用すると、導出したデータ・ルールを適用して、ソース・オブジェクトと同じ構造を持つデータ・オブジェクトの修正済セットを作成できます。マッピング修正では、ソース・オブジェクトからデータを取得して新しいオブジェクトにロードするための新しい修正マッピングが作成されます。
データ・オブジェクトの特定のセット(表、ビューなど)およびそれらのオブジェクトに適用されるデータ・ルールの特定のセットでは、Oracle Warehouse Builderにより次のデータ修正オブジェクトおよびロジックが自動的に生成されます。
修正済スキーマ・オブジェクトの定義。これは、ソース表と同じ列を持ち、同じデータ・ルールがバインドされている表ですが、制約が存在し、データ型やその他の構造がより厳格なため、データ・ルールの修正が必要です。修正済スキーマ・オブジェクトへの個々のデータ・ルールの適用方法の詳細は、表21-1「スキーマ修正に対するデータ・ルールの実装」を参照してください。
修正した新しい表にクリーンなバージョンのソース・データをロードするためのクレンジングETLマッピング。準拠した行は、変更することなく、クリーンな表にパススルーできます。準拠していないデータはフィルタリングして除外するか、報告するか、準拠するように修正できます。Oracle Warehouse Builderには多数の一般的なデータ修正アルゴリズムが組み込まれていますが、ユーザー独自のクレンジング・ロジックを実装することもできます。使用可能な修正方法の詳細は、表21-2「データ修正のクレンジング方針」を参照してください。
修正するデータを実際に作成するには、修正するスキーマ・オブジェクト、マッピングおよび関連するデータ・ルールをターゲット・ロケーションにデプロイするか、マッピングを実行するか、必要に応じて、マッピングの実行をスケジュールする必要があります。整備済スキーマ・オブジェクトを元のクリーンではない状態のデータをソースとして使用してさらにETLを実行できます。
ETLマッピングのデータ・ルールを手動で適用することもできます。表などのデータ・オブジェクトをマッピングに追加する場合、オブジェクトに適用する1つ以上のデータ・ルールを選択できます。オブジェクトに対してエラー表が作成され、準拠データと非準拠データに対してマッピング内に個別のフローを定義できます。
データ・ルールに基づいてソース表またはその他のオブジェクトの修正を自動的に生成する場合、生成されるオブジェクトには次が含まれます。
修正されたスキーマ・オブジェクトの定義。つまり、ソース表と同じ列を持つけれども修正するデータ・ルールに対応する制約、型およびその他の構造を持つ表です。
準拠ソース・データをターゲット表に移動するか、非準拠データをフィルタするか、指定のアルゴリズムに基づいて非準拠データから修正済の準拠データを生成するETLマッピングをクレンジング
修正するデータを実際に作成するには、修正するスキーマ・オブジェクト、マッピングおよび関連するデータ・ルールをターゲット・データベースにデプロイするか、マッピングを実行するか、必要に応じて、マッピングの実行をスケジュールする必要があります。
修正作成の前提条件は次のとおりです。
修正するソース・データ・オブジェクト(表、ビューなど)をプロファイリングしたデータ・プロファイルが存在する必要があります。
修正する非準拠データの特定に使用するデータ・ルールが存在する必要があります。
データ・プロファイル・エディタではデータ・プロファイリング結果に基づくスキーマの修正およびデータの整備を実行するマッピングを作成できます。
修正を作成する手順は、次のとおりです。
データ・プロファイルが開いていない場合、プロジェクト・ナビゲータでそのデータ・プロファイルを右クリックし、「開く」を選択して開きます。
「プロファイル」メニューから「修正の作成」を選択します。
修正の作成ウィザードが表示されます。
ようこそページで「次へ」をクリックします。
ターゲット・モジュールの選択ページで、修正を含むターゲット・モジュールを指定し、「次へ」をクリックします。
新しいモジュールを作成するか、既存のモジュールを使用できます。
修正を既存のターゲット・モジュールに格納するには、「既存のモジュールを選択」を選択します。「使用可能」リストには修正を格納できる既存のモジュールが表示されます。このリストからモジュールを選択します。
修正を新規ターゲット・モジュールに格納するには、「新規ターゲット・モジュールの作成」を選択します。モジュールの作成ウィザードが表示され、新規ターゲット・モジュールの作成ステップが示されます。
前の修正によって作成された修正オブジェクトを削除するには、「前の修正オブジェクトを削除します。」を選択します。
オブジェクトの選択ページで、修正を生成するオブジェクトを「選択済」リストに移動して選択します。「次へ」をクリックします。
「フィルタ」リストを使用すると、選択可能なオブジェクトをフィルタできます。デフォルト選択は「すべてのオブジェクト」です。表やビューなど、特定タイプのデータ・オブジェクトのみを表示できます。
データ・ルールおよびデータ型の選択ページで、生成する必要のある修正を選択することによってスキーマ修正を実行します。「次へ」をクリックします。
データ修正の指定の詳細は、「修正されるスキーマ・オブジェクトのデータ・ルールおよびデータ・タイプの選択」を参照してください。
(オプション)データ・ルール検証ページで、検証エラーを書き留め(存在する場合)、作業を進める前にこれらを修正します。
修正対象として選択したオブジェクトに前のデータ修正アクションの修正オブジェクトが存在する場合、このページにメッセージが表示されます。「次へ」をクリックし、前に作成した修正オブジェクトを削除します。
修正された表の確認と受入ページで、修正するオブジェクトを選択し、「次へ」をクリックします。
オブジェクトの修正方法を指定する方法の詳細は、「修正するオブジェクトの選択」を参照してください。
データ修正アクションの選択ページで、ソース・データのクレンジングを実行する修正アクションを指定し、「次へ」をクリックします。
データの修正およびクレンジングを実行するアクションの指定の詳細は、「データ修正の選択とアクションのクレンジング」を参照してください。
サマリー・ページで、「終了」をクリックして修正オブジェクトを作成します。
修正スキーマが作成され、プロジェクト・ナビゲータに追加されます。修正オブジェクトおよびマッピングは、修正の作成ウィザードのターゲット・モジュールの選択ページでターゲット・モジュールとして指定したモジュールの下に表示されます。修正オブジェクトはソース・オブジェクトと同じ名前を使用します。修正マッピングの名前は、接頭辞M_を持つオブジェクト名です。修正マッピングはソース・データを整備し、そのデータを修正済のターゲット・オブジェクトにロードするために使用されます。
データ・ルールおよびデータ型ページを使用して、修正されるデータ・オブジェクトに対して生成するスキーマ修正を選択します。Oracle Warehouse Builderは、データ・プロファイリング結果に基づいて、このページにデータ型修正およびデータ・オブジェクトに適用できるデータ・ルールを移入します。
スキーマ修正では、データ型の定義を修正し、修正するオブジェクトに適用するデータ・ルールを定義します。修正用に選択したオブジェクトはページの左側に表示され、モジュールごとにツリーに編成されます。右のパネルには「データ・ルール」および「データ型」という2つのタブがあります。オブジェクト名をクリックしてオブジェクトを選択し、「データ・ルール」タブおよび「データ型」タブを使用してこのオブジェクトに対してどのようにスキーマ修正を実行するかを定義します。
データ・ルール: 「データ・ルール」タブには、オブジェクト・ツリーで選択されたオブジェクトに使用可能なデータ・ルールが表示されます。修正するオブジェクトに対して生成するデータ・ルールを指定するには、データ・ルールの左側にあるチェック・ボックスを選択します。Oracle Warehouse Builderは、スキーマ生成時にこれらのデータ・ルールを使用して表の制約を作成します。
「バインド」セクションには、ルールのバインド先となる表の列に関する詳細が含まれています。ルール名をクリックするとそのルールのバインドが表示されます。
Oracle Warehouse Builderでは、データ・ルールを修正されたスキーマ・オブジェクトに適用するために様々な方法を使用します。使用される方法は、実装するデータ・ルールのタイプによって異なります。
表21-1に、オブジェクト・スキーマの修正方法を示します。また、各修正で使用されるデータ・ルール・タイプも示します。
表21-1 スキーマ修正に対するデータ・ルールの実装
| スキーマ修正方法 | 説明 | 修正方法を使用可能なデータ・ルールのタイプ |
|---|---|---|
|
制約の作成 |
修正表にデータ・ルールを反映する制約が作成されます。制約を作成できない場合は、データ・ルールの適用ウィザードのデータ・ルール検証ページに検証メッセージが表示されます。 |
カスタム ドメイン・リスト ドメイン・パターン・リスト ドメイン範囲 共通形式 NULLなし 一意キー |
|
データ型の変更 |
プロファイリングの結果に従って列のデータ型が |
Is Number Is Date |
|
検索表の作成 |
検索表が作成され、修正された表および検索表に、該当する外部キー制約または一意キー制約が追加されます。 |
関数従属性 |
|
名前およびアドレスの解析 |
名前およびアドレス属性が修正表に追加されます。名前およびアドレス属性は、Name and Address演算子の出力値の選択に対応します。データ整備の目的で作成されたマップでは、Name and Address演算子は名前およびアドレス整備の実行に使用されます。 |
名前とアドレス |
データ型: 「データ型」タブには、修正対象として選択している列が表示されます。変更は、データ型または精度の変更、あるいは固定長から可変長への変更になります。このタブの「文書化されたデータ型」列には既存の列定義が表示され、「新規データ型」列にはこの列定義に対して提案された修正内容が表示されます。
列定義を修正するには、列名の左側にあるチェック・ボックスを選択します。
修正された表の確認と受入ページを使用して、修正するオブジェクトを確認し、データ修正の実行方法に関する追加の詳細を指定します。このページには、「データ・ルール」および「データ型」ページのスキーマ修正で選択したオブジェクトが含まれます。
データ・オブジェクトの修正方法を指定するには、次の手順に従います。
「生成される修正表を確認して確定してください」セクションで、データ・オブジェクトの左側にある「作成」を選択して、修正済スキーマ内にこのデータ・オブジェクトを作成します。
修正された表の定義セクションに、選択したデータ・オブジェクトの修正の詳細が表示されます。「列」タブには、修正するデータ・オブジェクトで作成される列の詳細が表示されます。「制約」タブには、修正するデータ・オブジェクトで作成される制約の詳細が表示されます。「データ・ルール」タブには、修正するデータ・オブジェクトに作成されるデータ・ルールの詳細が表示されます。
修正された表の定義セクションの「列」タブで、次の操作を実行します。
修正済のデータ・オブジェクトにこの列を作成するには、列名の左側で「作成」を選択します。
修正済のデータ・オブジェクトからこの列を削除するには、列名の左側にある「作成」を選択解除します。
値をクリックして、新しい値を入力することで、列の「データ型」、「長さ」、「精度」、「秒精度」および「スケール」を編集します。ただし、列名は変更できません。
修正された表の定義セクションの「制約」タブで、次の操作を実行します。
さらに制約を追加するには、「制約の追加」をクリックします。
修正するデータ・オブジェクトから制約を削除するには、制約を選択して「削除」をクリックします。
修正された表の定義セクションの「データ・ルール」タブで、次の操作を実行します。
修正するデータ・オブジェクトにこの導出されたデータ・ルールを適用するには、データ・ルールの左側にあるチェック・ボックスを選択します。
「バインド」列には、データ・ルールを適用する必要のある列を必ず含めてください。
「ルールの適用」をクリックして、修正するオブジェクトに新しいデータ・ルールを適用します。データ・ルールの適用ウィザードではデータ・ルールの適用をプロセスに沿ってガイドします。
データ・プロファイリングの結果に基づいて修正オブジェクトの自動生成を決定する場合は、ソースの不整合データを修正済オブジェクトに格納する前のクレンジング方法を指定する必要があります。このために、修正オブジェクトに適用されるデータ・ルールごとにクレンジング方針を指定します。
データ修正アクションの選択ページでは、ソース・データの修正方法を指定できます。このページには、「修正済の表の選択」および「データ修正アクションの選択」の2つのセクションがあります。「修正済の表の選択」セクションには、修正用に選択したオブジェクトがリストされます。このセクションには、修正するために選択したデータ・オブジェクトごとに次の列があります。
修正: このオプションを設定すると、表の列に表示されているデータ・オブジェクトの修正オブジェクトの生成を行うことができます。
表: 指定されている修正アクションのデータ・オブジェクト名を表します。
ロード・オプション: 修正マッピングでロードするレコードを示します。生成される修正マッピングがすべてのレコードをロードする必要があることを示すには、「すべてのレコード」を選択します。生成される修正マッピングが修正するオブジェクトのみをロードする必要があることを示すには、修正するオブジェクトを選択します。
監査オプション: このオプションを設定すると、表の列に表示されている表のデータ監査を作成します。
説明: 作成される修正マッピングの説明を表します。
「データ修正アクションの選択」に関連するデータ・ルールを表示するには「修正済の表の選択」でデータ・オブジェクトを選択します。
各データ・ルールで、データ・オブジェクトのデータ・ルール・セットに違反するデータ値を処理する方法を指定する修正アクションを選択する必要があります。「アクション」列のリストを使用して、実行する修正アクションを指定します。
選択できる修正アクションは次のとおりです。
無視: データ・ルールは無視されるため、このデータ・ルールに基づいて拒否される値はありません。
レポート: データ・ルールは、レポート作成専用にデータがロードされた後にのみ実行されます。「無視」オプションと同様ですが、データ・ルールに違反している値を含むレポートが作成されます。このアクションは、一部のルール・タイプに対してのみ使用できます。
整備: このデータ・ルールで拒否された値はエラー表に移動され、そこでクレンジング方針が適用されます。このオプションを選択した場合は、「クレンジング方針の指定」の説明に従って、クレンジング方針を指定する必要があります。
各データ・ルールで、「クリーンアップ方針」リストを使用してセット・データ・ルールに違反するデータをクレンジングする方法を指定します。このオプションは、「アクション」列で「整備」を選択した場合にのみ有効になります。整備方針は、データ・ルールのタイプとルール構成によって異なります。データ・ルールと一致しないレコードを格納するにはエラー表を使用します。
表21-2では、クレンジング方針を説明し、方針に適用可能なデータ・ルールのタイプをリストしています。
表21-2 データ修正のクレンジング方針
| クレンジング方針 | 説明 | 適用可能なデータ・ルールのタイプ |
|---|---|---|
|
削除 |
ターゲット表とエラー・レコードを移入しません。 |
すべて |
|
カスタム |
ヘッダーが格納されるターゲット表にファンクションが作成されます。実装詳細は含まれません。このファクションに実装詳細を追加する必要があります。 |
ドメイン・リスト ドメイン・パターン・リスト ドメイン範囲 共通形式 NULLなし 名前とアドレス カスタム |
|
既存ファンクションの使用 |
修正を実行する既存のファンクションのリストから選択します。 |
ドメイン・リスト ドメイン・パターン・リスト ドメイン範囲 共通形式 NULLなし 名前とアドレス カスタム |
|
最小値に設定 |
エラー・レコードの属性値をデータ・ルールに定義されている最小値に設定します。 |
定義された最小値を持つ「ドメイン範囲」ルール |
|
最大値に設定 |
エラー・レコードの属性値をデータ・ルールに定義されている最大値に設定します。 |
定義された最大値を持つ「ドメイン範囲」ルール |
|
類似度 |
許可されたドメイン値に基づく類似度アルゴリズムを使用して、エラー・レコードに類似した値が検出されます。類似した値が検出されない場合は元の値が使用されます。 |
文字データ型を持つ「ドメイン・リスト」ルール |
|
Soundex |
許可されたドメイン値に基づくSoundexアルゴリズムを使用して、エラー・レコードに類似した値が検出されます。Soundex値が検出されない場合は元の値が使用されます。 |
文字データ型を持つ「ドメイン・リスト」ルール |
|
マージ |
Match-Mergeアルゴリズムを使用して、重複レコードが1つの行にマージされます。 |
一意キー |
|
モードに設定 |
失敗となった関数従属性パーティションにモード値がある場合は、モード値を使用してエラー・レコードを修正します。 |
関数従属性 |
表エディタで修正表を表示すると、表の設計の一部として作成したデータ・ルールと制約を確認できます。また、他のすべてのETLマッピングが表示可能であるように、修正マッピングも表示できます。
修正マッピングを表示する手順は、次のとおりです。
マッピングをダブルクリックし、マッピング・エディタでオブジェクトを開きます。
マッピングが開いた後、「表示」→「自動レイアウト」を順番に選択してマッピング全体を表示します。
図21-1に、修正の作成ウィザードで生成された修正マップを示します。
サブマッピングATTR_VALUE_1を選択し、ツールバーの「子グラフの表示」をクリックしてサブマッピングを表示します。
図21-2に、表示されるサブマッピングを示します。
サブマッピングは、修正の作成ウィザードで指定した実際の修正クレンジングを行うマッピング内の要素です。このサブマップの中央に、修正の作成ウィザードによりファンクションとして生成されたDOMAINSIMILARITY変換があります。
修正オブジェクトの生成後は、修正オブジェクトをデプロイして実行し、スキーマの修正とデータの整備を実行する必要があります。修正マッピングをデータ・ルールとともに実行すると、データが修正されます。また、関連するデータ・ルールは、データ管理でオプションで使用できるように修正されるスキーマのオブジェクトにバインドされたままになります。
スキーマの修正およびデータのクレンジングでは、次の手順を実行する必要があります。
データ・プロファイリングの結果に基づいてスキーマ修正を実行すると、指定したスキーマ修正アクションが生成され、修正済のデータ・オブジェクトが生成されます。修正済データ・オブジェクトの名前は、接頭辞TMP_を持つ元のソース・オブジェクトの名前です。
スキーマの修正をデプロイする場合は、すべての修正済オブジェクトを、データ修正プロセスの一部として修正済のオブジェクトに対して定義されたデータ・ルールがある場合は一緒にデプロイします。
修正マッピングを生成して、データ・プロファイリング結果に基づいてソース・データをクレンジングすると、Oracle Warehouse Builderはワークスペースに修正マッピングを作成します。特定のデータ・オブジェクトの修正マッピングの名前は、接頭辞M_を持つデータ・オブジェクトの名前です。たとえば、DEPT表をクレンジングするために生成された修正マッピングはM_DEPTになります。
データ修正プロセスの一環として作成した修正マッピングをデプロイするには、次の手順を実行します。
ソース表のSELECT権限をPUBLICに付与します。
たとえば、修正マッピングには、HRスキーマのEMPLOYEES表が含まれます。HR.EMPLOYEES表で、SELECT権限がPUBLICに付与される場合にのみ、この修正マッピングを正常にデプロイできます。
データ・プロファイリングによって作成された修正表をデプロイします。
プロジェクト・ナビゲータで、表を右クリックして「デプロイ」を選択できます。または、コントロール・センターを使用してデータ・オブジェクトをデプロイできます。
ソース・データをクレンジングするために生成された修正マッピングをデプロイします。
ソース・データをクレンジングして修正済の表にロードするには、その他のETLマッピングと同様に修正マッピングを実行します。
マッピングを実行するには、プロジェクト・ナビゲータでマッピングを右クリックして「開始」を選択します。
また、このマッピングをスケジュールして、その他のマッピングなどを実行したり、プロセス・フローにマッピングを含めたりできます。