![]() 前へ |
![]() 次へ |
シナリオ
本番環境にあるデータ・ウェアハウスの管理を数か月間担当しているとします。データ・ウェアハウスは最初、Human Resources(HR)およびOrder Entry(OE)という2つのソース・スキーマを使用して作成され、Warehouse(WH)ターゲット・スキーマにロードされました。最近、HRスキーマおよびOEスキーマ内の表に対する2つの変更を検出しました。これらの変更を反映してWHスキーマを更新する必要があります。
変更#1: 最初にHRスキーマが変更されました。REGIONS表内のREGION_NAME列の長さが100文字まで拡張されました。
変更#2: 2番目にOEスキーマが変更されました。精度8およびスケール0でLOT_SIZE_NUMBERという行がORDER_ITEMS表に追加されました。
解決策
WHスキーマを更新するために、最初にこれらの変更による影響を測定し、次にターゲット・スキーマを更新する計画を作成して実行する必要があります。次の手順は、必要事項の概要を示します。
手順1: 変更されたソース・オブジェクトの識別
手順2: 変更による影響の測定
手順3: 変更されたオブジェクトの再インポート
手順4: データ・フロー内のオブジェクトの更新
手順5: ターゲット・スキーマの再設計
手順6: スクリプトの再配布
手順7: 新規ETLロジックのテスト
手順8: Discoverer EULの更新
手順9: ETLロジックの実行
事例
手順1: 変更されたソース・オブジェクトの識別
データ・ウェアハウスに変更分を反映する最初の手順は、ソース・オブジェクト内の変更を識別することです。これを実行するためには、ソース・オブジェクトが変更されたことを通知できるプロシージャまたはシステムが配備されている必要があります。
このシナリオでは、HRスキーマおよびOEスキーマを管理しているグループでいくつかのオブジェクトが変更されていることが検出されました。2つ変更があり、最初にHRスキーマが変更されました。より長いデータに対応できるように、REGION_NAME列が25文字から100文字に拡張されました。2番目にOEスキーマが変更されました。LOT_SIZE_NUMBER列が追加され、WHスキーマに統合する必要がありました。
手順2: 変更による影響の測定
変更を識別した後、ターゲット・スキーマに対する影響を測定する必要があります。
HRスキーマが変更された変更#1では、依存するすべてのオブジェクトを更新する必要があります。これには、REGIONS表の再インポートおよびREGION_NAME列を使用するすべてのオブジェクトの更新が伴います。依存するオブジェクトを識別するために、影響分析ダイアグラムを使用できます。また、この表を使用するすべてのマッピングを更新する必要があります。
OEスキーマが変更された変更#2では、表の再インポートおよびマッピングの更新に加えて、WHスキーマに新しい列を統合するための方法を見つける必要があります。売上の1つの単位内の部品または項目の数の動向を追跡するために列が追加されるので、WHスキーマ内のSALESキューブにNUMBER_OF_IND_UNITSというメジャーを追加し、このメジャーを各注文に割り当てます。続いてこの新しい列をSALESキューブに接続する必要があります。
手順3: 変更されたオブジェクトの再インポート
2つのソース・オブジェクトが変更されているので、ワークスペースにメタデータ定義を再インポートすることから開始する必要があります。ナビゲーション・ツリーからHRスキーマ内のREGIONS表およびOEスキーマ内のORDER_ITEMS表の両方を選択し、メタデータのインポート・ウィザードを使用して定義を再インポートします。
Warehouse Builderにより、これが更新であることが自動的に検知され、変更された定義の更新のみが実行されます。インポート・プロセスの最後に表示される「インポート結果」ダイアログ・ボックスに、同期化の詳細が表示されます。「OK」をクリックし、インポートを続行してワークスペースへ変更をコミットします。インポートを中断する場合は、「元に戻す」をクリックします。
手順4: データ・フロー内のオブジェクトの更新
HRスキーマ内の変更#1のように、ソース・オブジェクト内の変更により既存のオブジェクトおよび属性のみが変更された場合は、影響分析ダイアグラムを使用して調整する必要のあるオブジェクトを識別します。
このシナリオでは、データのロードが適切に続行されるようにするために、REGIONS表に応じて異なるすべてのオブジェクト内の列の長さを調整する必要があります。
データ・フロー内のオブジェクトを更新する手順は、次のとおりです。
ナビゲーション・ツリーからHRスキーマ内のREGIONS表を選択します。「表示」を選択し、次に「影響」をクリックします。
影響分析ダイアグラムが含まれるドキュメント・エディタに新規タブが表示されます。これにより、REGIONS表により影響を受けるオブジェクトはWHスキーマ内のCUSTOMERディメンションのみであることが示されます。
この手順では、リポジトリ・ブラウザがインストール済である必要があります。設定の詳細は、Oracle Warehouse Builderインストレーションおよび管理ガイドfor Windows and UNIXを参照してください。
ディメンション・エディタ内のCUSTOMERディメンションを開き、リージョン名レベル属性を文字長100に更新します。
ソースをターゲットに接続するMAP_CUSTOMERマッピングを開きます。REGIONS表の演算子およびCUSTOMERディメンションの演算子では、データ・オブジェクトからマッピング演算子にインバウンド同期化を実行します。
マッピング演算子は、マッピング・オブジェクトと同期される必要があり、マッピング・オブジェクトは更新されたオブジェクトに基づいてコードを生成するために示されます。
これで、変更1に関連付けられたメタデータの更新は完了です。
変更#2では、新しい列の追加後、変更#1と同じ方法でデータ・フローを更新する必要はありません。ORDER_ITEMS表の演算子を使用するすべてのマッピングに対して、必ずインバウンド同期化を実行します。ORDER_ITEMS表の影響分析ダイアグラムは、単なるマッピングMAP_SALESのみであることがわかります。
手順5: ターゲット・スキーマの再設計
変更#2では新しいLOT_SIZE_NUMBER列がORDER_ITEMS表に導入されたため、WHターゲット・スキーマを再設計し、この新しいデータをキューブ内に組み込む必要があります。NUMBER_OF_IND_UNITSという新しいメジャーをSALESキューブに追加することにより、組込みを実行できます。
ターゲット・スキーマを再設計する手順は、次のとおりです。
NUMBERデータ型、精度8、スケール0のメジャーNUMBER_OF_IND_UNITSをSALESキューブに追加します。
SALESキューブの系統ダイアグラムを表示してSALESキューブを含むマッピングを確定します。すべてのSALESキューブのマッピング演算子に対してインバウンド同期化を実行します。
マッピングMAP_SALESを開き、表ORDER_ITEMSがインバウンド同期化されていることを確認します。
ORDER_ITEMS表内のLOT_SIZE_NUMBER列を「JOIN」に接続し、続いて「SETOP」に接続し、次に「AGG」演算子に追加します。「AGG」演算子内で加算を行っていることを確認します。
最後に、AGG演算子のLOT_SIZE_NUMBER出力属性をSALESキューブのNUMBER_OF_IND_UNITS入力属性に接続します。
手順6: スクリプトの再配布
マッピングがデバッグされた後、デザイン・センターを使用してスクリプトを再生成および再配布します。コントロール・センター・マネージャを使用してデフォルトの配布アクションを検出します。Warehouse Builderにより、実行する配布のタイプが検出されます。
手順7: 新規ETLロジックのテスト
すべてのオブジェクトを調整し、WHターゲット・スキーマがすべての変更を反映して更新された後、マッピングから生成されたETLロジックをテストします。マッピング・デバッガを使用してこのタスクを完了します。エラーがある場合は、エラーを修正してスクリプトを再配布します。
手順8: Discoverer EULの更新
レポート作成ツールとしてDiscovererを使用している場合は、EULを更新します。
Discoverer EULを更新する手順は、次のとおりです。
オブジェクトの構造およびデータが変更されたため、EULで更新する必要のあるオブジェクトを識別します。この場合、変更されたオブジェクトはREGIONS表、SALES_ITEMS表およびSALESキューブです。
プロジェクト・ナビゲータで、手順1で識別されたすべてのオブジェクトを選択し、「導出」を右クリックして選択します。
導出を実行ウィザードが表示され、これらのオブジェクトを含むビジネス定義モジュール内のこれらのオブジェクト定義が更新されます。
これらの変更されたオブジェクトを含むビジネス定義モジュール内の「アイテム・フォルダ」ノードを開きます。
手順1で識別されたオブジェクトを選択し、「配布」を右クリックして選択します。
オブジェクトへの変更がDiscover EUL内で更新されます。
手順9: ETLロジックの実行
マッピングの配布後、ETLロジックを実行し、データをターゲットにロードします。