マッピング・エディタには、事前に作成済の一連のマッピング演算子が用意されています。これらの演算子を使用して、ソースからターゲットへのデータ移動方法を指定する共通の変換を定義できます。
この章では、マッピングに演算子を使用してデータを変換する方法について説明します。マッピングの設計に役立つウィザードが用意されている演算子や、SQL式の記述に役立つ式ビルダーを起動できる演算子があります。
この章の内容は次のとおりです。
設計に関して様々な決定を行う必要がある演算子の場合、Warehouse Builderには、演算子の定義を指示するウィザードが用意されています。各ウィザードは、実行する必要がある手順の概要を示すようこそページから始まります。各ウィザードは、選択内容をリストするサマリー・ページで終わります。ウィザードでナビゲートするには「次へ」および「戻る」を使用します。演算子ウィザードを閉じるには、任意のウィザード・ページで「終了」をクリックします。
Warehouse Builderには、次の演算子用のウィザードが用意されています。
Match-Merge演算子の詳細は、「Match-Merge演算子の使用」を参照してください。
Name and Address演算子の詳細は、「マッピングに使用したName and Address演算子」を参照してください。
演算子を定義する作業に慣れた後は、ウィザードを無効化し、かわりに演算子エディタを使用できます。演算子エディタを起動するには、マッピング・エディタで演算子を右クリックして「詳細をオープン」を選択します。演算子エディタでは、ウィザードと同じ内容が、ウィザード・ページではなくタブ形式で表示されます。
演算子ウィザードまたは演算子エディタのどちらを使用する場合も、演算子ごとに次の各ページを完了します。
一般ページを使用して、演算子の名前と説明(オプション)を指定します。ウィザードでは、デフォルトで演算子タイプが名前として割り当てられます。たとえば、新規ピボット演算子のデフォルト名は「ピボット」です。
「グループ」タブで、グループ情報を編集します。
各グループには、名前、方向および説明(オプション)が表示されます。ほとんどの演算子のグループ名は変更できますが、どの演算子の場合もグループの方向は変更できません。グループの方向には、「入力」、「出力」、「入力/出力」のいずれかを指定できます。
演算子によっては、「グループ」タブでグループを追加および削除できます。たとえば、入力グループを「ジョイナ」に、出力グループを「スプリッタ」に追加します。
演算子エディタには、「グループ」タブに表示されているグループのタイプごとに、タブが1つずつ表示されます。これらのタブには、属性名、データ型、長さ、精度、スケールおよび説明(オプション)が表示されます。
演算子によっては、属性を追加、削除および編集できます。マッピング・エディタでは、編集できないプロパティはグレー表示になります。たとえば、データ型がNUMBERの場合、精度とスケールは編集できますが、長さは編集できません。
接続の入力ページを使用して、属性を演算子にコピーおよびマッピングします。選択する属性は、入力グループのマッピング・メンバーとなります。「使用可能な属性」パネルには、マッピングの全演算子のリストが表示されます。
演算子の接続の入力ページで指定する手順は次のとおりです。
「使用可能な属性」パネルで、グループ全体または個別の属性を選択します。
名前で特定の属性またはグループを検索するには、「検索」にテキストを入力し、「実行」を選択します。次の一致を検索するには、「実行」を再度選択します。
複数のグループまたは属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択する場合は、ジョイナ演算子または集合演算子を使用してグループを結合する必要があります。
2つのパネルの間にある「>」ボタンを使用して、選択内容を「マップ済属性」パネルに移動します。
接続の入力のリストからグループまたは属性を削除するには、「<」矢印を使用できます。Warehouse Builderでは、選択内容が入力グループから削除され、ソース演算子と現行の演算子間のマッピング線も削除されます。
一部のデータ・フロー演算子の場合は式を作成する必要があります。式とは、データを変換したり制限を指定する文または句です。これらの式は、SQL文の一部としてインラインで使用されるSQLの各部を構成します。それぞれの式は、データ・フロー演算子のロールにより決定されるタイプに属しています。式を作成するには、式ビルダーを使用する方法と、演算子または属性のプロパティ・ウィンドウの「式」フィールドに入力する方法があります。
フィルタ、ジョイナおよびアグリゲータなどの演算子の場合、マッピング・エディタの<演算子名>プロパティ・パネルから式ビルダーを開くことができます。
式、データ・ジェネレータ、スプリッタおよび定数などの演算子の場合は、マッピング・エディタの「属性のプロパティ」パネルから式ビルダーを開くことができます。
式ビルダーを開く手順は、次のとおりです。
演算子または属性のプロパティ・パネルで、「式」フィールドの省略記号のボタンをクリックします。図26-1に、「属性のプロパティ」パネルを示します。
図26-2に示すように、式ビルダーが表示されます。
式を作成するには、次の方法があります。
「式」フィールドにテキストを入力します。
左パネルの「入力」タブと「変換」タブからアイテムをドラッグし、右側の「式」フィールドにドロップします。
左パネルの「入力」タブと「変換」タブでアイテムをダブルクリックします。
「式」フィールドの下で使用可能な算術演算子のボタンをクリックします。
「検証」をクリックします。
式の構文が正確であることが検証されます。
「OK」をクリックし、式を保存して式ビルダーを閉じます。
「式ビルダー」の構成は、次のとおりです。
左側のパネルのナビゲーション・ツリーには次の2つのタブが表示されます。
「入力」タブ:入力パラメータのリストです。
「変換」タブ: Oracleライブラリ、グローバル共有ライブラリおよびカスタム変換ライブラリに格納されている事前定義のファンクションとプロシージャのリストです。変換の詳細は、第9章「Oracle Warehouse Builderの変換の使用方法」を参照してください。
「式」フィールド:右側のパネルの上部には、「式」フィールドがあります。このフィールドを使用して、式の入力や編集を行います。
算術演算子ボタン: 「式」フィールドの下には、算術演算子ボタンがあります。このボタンを使用すると、手動で入力しなくても式を作成できます。使用できる算術演算子は、アクティブなデータ・フロー演算子のタイプによって異なります。
その他: アクティブな式タイプに該当する、使用可能なSQL句のドロップダウン・リストです。
Oracle9i Databaseからは、DECODE
ファンクションのかわりにCASE
ファンクションの使用が推奨されています。これは、DECODE
ファンクションではSQLしか生成できませんが、CASE
ファンクションではSQLとPL/SQLの両方を生成できるためです。Warehouse Builderで、式にDECODE
ファンクションを使用すると、コード生成時にCASE
ファンクションに変換されます(該当する場合)。つまり、すべてのオペレーティング・モード(セットベース、行ベースなど)でDECODE
の機能を配布でき、Oracleデータベースのリリース(8.1、9.0以上)を意識しなくても済みます。
たとえば、Warehouse Builderで次のファンクションを変換するとします。
DECODE (T1.A, 1, 'ABC', 2, 'DEF', 3, 'GHI', 'JKL')
このファンクションは次のように変換されます。
CASE T1.A WHEN 1 THEN 'ABC' WHEN 2 THEN 'DEF' WHEN 3 THEN 'GHI' ELSE 'JKL'
「検証」ボタン: このボタンを使用して、「式ビルダー」の現在の式を検証します。式を検証すると、その式で参照しているすべてのマッピング・オブジェクトにリポジトリ・オブジェクトが関連付けられていることを確認できます。「式ビルダー」で作成できる式は、演算子の入力とそのプロジェクトで実行可能な変換のみです。この制限によって、演算子の外部の要素が変更されたときの式の無効化を防止できます。配布データベースがDesign Repositoryと異なる場合、データベースが式を受け付けないことがあります。式が有効でも、データベースに対して不適切である場合にこの現象が発生します。このような場合、式エラーは配布時にのみ検出できます。
「検証結果」フィールド:右側のパネルの下部には、「検証結果」フィールドがあります。このフィールドの右側にある「検証」ボタンを選択すると、このフィールドでは検証結果が表示されます。
アグリゲータ演算子は、入力データの合計や平均などのデータ集計を計算します。集計データを含む出力行セットを提供します。
アグリゲータ演算子では、入力グループ1つと出力グループ1つを使用します。出力グループの場合は、集計の実行対象の属性を指定するGROUP BY句を定義します。オプションで、集計データを制限するHAVING句も指定できます。出力グループ内の各属性は同じカーディナリティを持ちます。出力行セットの行数は、入力行数以下になります。
アグリゲータ演算子を1つ使用して複数の集計を実行できます。アグリゲータの出力グループに含まれる属性ごとに異なる集計関数を指定できますが、各アグリゲータでサポートされているGROUP BY句とHAVING句はそれぞれ1つのみです。
図26-3に、アグリゲータ演算子を使用してチャネルと製品の売上合計を集計するマッピングを示します。出力属性の式プロパティを使用して、属性TOTAL_SALES
に適用する集計関数がSUMであることを指定しています。アグリゲータ演算子のGroup Byプロパティを使用して、売上の集計対象にチャネルIDと製品IDを指定しています。このアグリゲータ演算子の出力は、ターゲット表SALES_FACT
にマップされます。
マッピングのアグリゲータ演算子を定義する手順は、次のとおりです。
アグリゲータ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
キャンバス上で、アグリゲータ演算子の入力グループにソース属性を接続します。
アグリゲータ演算子を右クリックして「詳細をオープン」を選択します。
アグリゲータ・エディタが表示されます。
「出力属性」タブで、「追加」をクリックして出力属性を追加します。
Warehouse BuilderによりNUMBERデータ型の出力属性が追加されます。この属性の名前とデータ型の両方を変更できます。
図26-3に示した例では、出力属性を追加して属性名をTOTAL_SALESに変更しています。
「OK」をクリックしてアグリゲータ・エディタを閉じます。
属性のプロパティ・インスペクタ・ウィンドウを使用して、各出力属性の式を定義します。手順の詳細は、「集計関数の式」を参照してください。
図26-3に示した例では、式をSUM(amount_sold)として定義しています。
演算子についてGroup By句とHaving句(オプション)を定義します。手順の詳細は、「Group By句」および「Having句」を参照してください。
アグリゲータ演算子の出力グループに含まれる属性を、ターゲットの入力グループにマップします。
Group By句では、グループごとに1行ずつサマリー行を戻すように受信行セットをグループ化する方法を定義します。グループ化の方法は、入力グループの順序付き属性リストで指定します。デフォルトのGROUP BY句はNONEです。
Group By句を定義する手順は次のとおりです。
マッピング・エディタのキャンバスでアグリゲータ演算子を選択します。
アグリゲータ・プロパティ・パネルにアグリゲータ演算子のプロパティが表示されます。
「Group By句」プロパティの右側の省略記号のボタンをクリックします。
「Group By句」ダイアログが表示されます。
「使用可能な属性」リストから「GROUP BY属性」リストに属性を移動します。
図26-3に示した例では、入力属性channel_id
およびprod_id
を「使用可能な属性」リストから「GROUP BY属性」リストに移動しています。
「OK」をクリックします。
Having句は、出力グループで戻される行のグループをこの条件がtrueとなるグループに限定するブール条件です。この句を指定しなければ、全グループの全サマリー行が出力グループで戻されます。
Having句を定義する手順は、次のとおりです。
属性の式プロパティでは、その属性に対して実行する集計関数を定義します。グループ化されていない各出力属性に対して、集計式の結果をDISTINCTにするかALLにするかを選択します。ALLがデフォルトです。次に例を示します。
結果DISTINCTでは、平均を計算する前にすべての重複行が削除されます。
ALL集計では、すべての行の平均値が結果として返されます。
集計関数が不要である場合は、NONEを指定します。属性の集計にNONEを指定すると、その属性は結果としてのGROUP BY関数に自動的に追加されます。
出力属性について式を定義する手順は、次のとおりです。
マッピング・キャンバス上のアグリゲータ演算子で、集計関数を定義する出力属性を選択します。
「属性のプロパティ」パネルに、選択した出力属性のプロパティが表示されます。
「式」プロパティの右側の省略記号のボタンをクリックします。
図26-5に示すように、「式」ダイアログが表示されます。
「関数」ドロップダウン・リストから集計関数を選択します。
Warehouse Builderでは、集計関数としてAVG、COUNT、MAX、MIN、NONE、STDDEV、STDDEV_POP、STDDEV_SAMP、SUM、VAR_POP、VAR_SAMPおよびVARIANCEを選択できます。
図26-3に示した例では、SUMを集計関数として選択します。
集計式としてALLまたはDISTINCTを選択します。
「属性」ドロップダウン・リストから、集計する属性を選択します。
図26-3に示した例では、ドロップダウン・リストから属性amount_sold
を選択しています。
「OK」をクリックします。
Anydata Cast演算子を使用すると、Sys.AnyDataタイプのオブジェクトを主タイプまたはユーザー定義タイプに変換できます。Anydata Cast演算子はAnydata属性をソースとして受け入れ、オブジェクトを目的のタイプに変換します。
Anydataキャスト演算子は、ユーザー定義データ型および基本データ型と併用されます。キャスト演算子はフィルタとして機能します。出力グループの属性数はn+1で、nは入力グループの属性数です。この演算子では、入力グループ1つと出力グループ1つを使用します。入力グループは編集可能ですが、出力グループは編集禁止です。出力グループに可能な操作は、属性名の変更とキャスト先のデータ型の変更のみです。他の出力グループ属性のデータ型は変更できません。
入力グループには属性を接続できません。各出力グループは、Anydata属性を含めて入力グループの属性のコピーを取得します。キャスト操作のソースとして入力グループのAnydata属性を選択する必要があります。
Anydata属性のキャスト先となるデータ型を変更した場合は、次の手順を実行する必要があります。
キャスト操作のターゲットである出力グループの属性を編集します。
属性のデータ型を変更します。
キャスト演算子はバインドされていないため、調整操作はサポートされていません。
マッピングのAnydataキャスト演算子を定義する手順は、次のとおりです。
Anydataキャスト演算子をマッピング・エディタのキャンバスにドロップします。
Anydataキャスト・ダイアログが表示されます。このダイアログのツリーに表示される親ノードの1つを開くと、基本データ型(Anydata以外)が表示されます。他の親ノードはそれぞれモジュールに対応しています。
キャストのターゲット・タイプを選択して「終了」をクリックします。
ANYDATAキャスト演算子を右クリックして「詳細をオープン」を選択します。
ANYDATA_CASTエディタが表示されます。
「入力属性」タブで、「追加」をクリックして属性の名前、データ型およびその他のプロパティを指定します。
「OK」をクリックして演算子エディタを閉じます。
Anydataキャスト演算子の出力グループの属性をターゲットにマップします。
デュプリケータ解除を使用すると、マッピングが表すSELECTコードにDISTINCT句を挿入してソースから重複データを削除できます。
たとえば、ソース表からディメンションにデータをロードした場合に、ディメンション内の上位レベルがソース内で重複していることがあります。図26-7は、PRODUCTS
ディメンションにデータをロードする間にデュプリケータ解除演算子を使用してソースの重複値を削除するマッピングを示しています。ソース表では、同じカテゴリに複数の製品が属していることがあるため、カテゴリIDの重複値が含まれています。デュプリケータ解除演算子により、これらの重複値が削除され、カテゴリIDの個別値がPRODUCTS
ディメンションにロードされます。
ターゲットに必要なすべての行は、デュプリケータ解除を通過する必要があります。デュプリケータ解除をバイパスしてターゲットに直接ヒットできる行セットはありません。
重複を削除する手順は、次のとおりです。
デュプリケータ解除演算子をマッピング・エディタのキャンバスにドロップします。
ソース演算子の属性をデュプリケータ解除演算子の入力/出力グループに接続します。
デュプリケータ解除演算子グループの属性をターゲット演算子の属性に接続します。
式演算子を使用して、演算子の出力パラメータの1つについて非手続き型アルゴリズムを定義するSQL式を記述します。
式テキストには、入力パラメータ名、変数名およびライブラリ・ファンクションを組み合せて使用できます。SQLタイプの式を使用して、入力行セットのカーディナリティを保持しながら行セット内の行の列値データを変換するには、式演算子を使用します。この種の式を作成するには、出力属性の属性のプロパティ・ウィンドウを開き、式ビルダーを開きます。
デフォルトでは、式演算子には入力グループ1つと出力グループ1つが含まれます。
図26-8に、式演算子を使用するマッピングを示します。トランザクション表ORACLE_ORDERS
には、製品ID、単価、販売数量などのオーダー詳細が含まれています。ORDERS_FACT
表には、チャネル、製品およびオーダー間の売上合計額の集計が含まれています。式演算子は、単価を販売数量で乗算して製品ごとの売上高を計算するために使用されています。アグリゲータ演算子により、チャネル・コード、製品IDおよびオーダーID間の売上高が集計されてから、ターゲット表がロードされます。
集計関数の記述には、式演算子ではなくアグリゲータ演算子を使用してください。「アグリゲータ演算子」を参照してください。
マッピングの式演算子を定義する手順は、次のとおりです。
式演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
式演算子を右クリックして「詳細をオープン」を選択します。
式エディタが表示されます。
「出力属性」タブで、「追加」をクリックして属性の名前、データ型およびその他のプロパティを指定します。
「OK」をクリックして演算子エディタを閉じます。
「式演算子」から出力属性を選択します。
「属性のプロパティ」パネル・ウィンドウに、選択した出力属性のプロパティが表示されます。
「式」フィールドの右側にある省略記号のボタンをクリックします。
式ビルダーが表示されます。式ビルダーで式を定義します。
コード生成のために、入力属性が式テンプレート内の入力属性名で置換されます。
式出力属性を該当するターゲット属性に接続します。
ソース演算子をフィルタ演算子に接続し、フィルタ条件を適用して、行のサブセットを次の演算子に送ります。フィルタ演算子により、マッピングが表すコードにWHERE句が挿入されて、ソースからターゲットへのデータがフィルタされます。フィルタ条件は「式ビルダー」で指定します。フィルタ条件には、サポートされるデータ型をすべて使用でき、定数を含めることもできます。
フィルタ演算子に使用するのは入力/出力グループ1つのみで、このグループをソース行セットとターゲット行セットの両方に接続できます。結果の行セットは、ブール・フィルタ条件式に基づいてソース行セットがフィルタされた後のサブセットです。ターゲット側で必要な行はすべて、フィルタ演算子を通過する必要があります。フィルタをバイパスしてターゲットに直接ヒットできる行セットはなくなります。
フィルタ演算子を含むマッピングの場合、Warehouse Builderではフィルタ条件式をセット・ベース表示モード用にWHERE句として表示するコードが生成されます。元のフィルタ条件でのフィルタ入力名は、ソース表の実際の列名をソース表の別名で修飾した名前で置換されます。
図26-9に、フィルタ演算子を使用して、選択したデータをターゲット表に移動するマッピングを示します。ORACLE_ORDERS
表には、オーダー・データが含まれています。フィルタ演算子のフィルタ条件プロパティを使用して、最終更新日が現在のシステム日付である記帳済オーダーのみをORDERS
表に移動しています。
マッピングのフィルタ演算子を定義する手順は、次のとおりです。
フィルタ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
ソース属性をフィルタ演算子の入力/出力グループに接続します。
フィルタ演算子のヘッダーを選択します。
マッピング・エディタのフィルタのプロパティ・パネルに、フィルタ演算子のプロパティが表示されます。
フィルタ条件プロパティの右にある省略記号のボタンをクリックします。
フィルタ条件の「式ビルダー」ダイアログが表示されます。
式ビルダーを使用してフィルタ条件式を定義します。
「OK」をクリックして式ビルダーを閉じます。
フィルタ演算子の出力をターゲットの入力/出力グループに接続します。
ジョイナ演算子を使用して、カーディナリティの異なる様々なソースの複数の行セットを結合し、1つの出力行セットを生成します。
ジョイナ演算子は、各ソース行セットの列値を他の1つ以上の行セットに関連付けるブール条件を使用します。ジョイナ演算子により、生成されたSQL問合せにWHERE句が挿入されます。Warehouse Builderでは、外部結合、自己結合、等価結合および非等価結合がサポートされています。Oracle9iで実行している場合、Warehouse Builderでは完全外部結合がサポートされています。結合の詳細は、Oracle SQLリファレンスを参照してください。
注意: データ・ソースとジョイナの間にある演算子により、複合SQLまたはPL/SQLを生成できます。 |
入力行セットが外部キーを介して関連付けられている場合は、その関係を使用してデフォルトの結合条件が形成されます。このデフォルト条件を使用するか、または変更できます。ソースが外部キーを介して関連付けられていない場合は、結合条件を定義する必要があります。
結合問合せに使用する2つの表の結合条件を指定しなければ、Warehouse Builderでは2つの表のデカルト積が戻され、一方の表の各行が他方の表の各行と結合されます。
デフォルトの外部キーにより重複するWHERE句が生成される場合は、ジョイナ演算子により重複する句が削除されます。これは、結合条件で複数の外部キーを参照している場合に発生することがあります。たとえば、表T1の外部キーFK1が表T2の一意キーUK1を指し、表T2の外部キーFK2が表T1の一意キーUK2を指している場合、結合条件は次のようになります。
T1.A = T2.A AND T1.B = T2.B /*All instances of FK1 -> UK1 are reduced to one WHERE clause*/ AND T2.B = T1.B AND T2.C = T1.C /*All instances of FK2 -> UK2 are reduced to one E-Business Suite clause*/
この場合、ジョイナ演算子により次の結合条件が生成されます。
T2.A = T2.A AND T1.B = T2.B AND T2.C = T1.C
属性をジョイナ演算子の入力グループにマップする前に結合条件を定義すると、生成済コードでは結合条件がリテラルとして扱われます。属性はまだジョイナ演算子にマップされていないため、コード・ジェネレータではこれらの属性が認識されません。この問題を回避するために、最初にジョイナ演算子の入力グループをマップしてから、結合条件を定義することをお薦めします。
結合条件は、PL/SQLコンテキスト内で定義されます。SAPソースの場合、Warehouse BuilderではABAPコンテキスト内でPL/SQLの結合条件を解析してABAPコードを生成できます。ABAPで可能なのは、定義済の外部キー関係での結合のみです。
図26-10に、ジョイナ演算子を含むマッピングを示します。2つのソース表ORACLE_ORDERS
およびORACLE_ORDER_LINES
が結合され、この2つの表のデータが結合されて1つの表となっています。ジョイナ演算子の出力は、ターゲット表DAILY_ORDERS
に渡されます。
マッピングのジョイナ演算子を定義する手順は、次のとおりです。
ジョイナ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
第1のソースの出力グループをジョイナの入力グループINGRP1に接続します。
出力属性が、対応する入力のデータ型と一致するデータ型を使用して作成されます。
第2のソース演算子のグループをジョイナ演算子のINGRP2グループに接続します。
ジョイナ演算子のヘッダーを選択します。
マッピング・エディタのジョイナのプロパティ・パネルに、ジョイナ演算子のプロパティが表示されます。
結合条件プロパティの右にある省略記号のボタンをクリックします。
「式ビルダー」ダイアログが表示されます。
結合条件を定義します。
「OK」をクリックして式ビルダーを閉じます。
ジョイナ演算子の出力グループの属性をターゲットにマップします。
結合条件には集計関数を含めないでください。
ジョイナに使用可能な入力グループの数に制限はありませんが、出力グループは1つのみです。
ジョイナの入力グループの順序が結合順序として使用されます。ANSI結合とOracle結合の主な違いは、ANSI結合では結合順序を明確に指定する必要があることです。Oracle結合の場合、順序指定は不要です。
SELECT ... FROM T1 FULL OUTER JOIN T2 ON (T1.A=T2.A) JOIN T3 ON (T2.A=T3.A);
T1、T3、T2のような別の順序で入力グループを作成する場合、Warehouse Builderでは次のように生成されます。
SELECT ... FROM T1 JOIN T3 ON (1=1) JOIN T2 ON (T1.A=T2.A and T2.A=T3.A);
T1とT3の結合時には、結合条件は指定されません。Warehouse Builderにより条件1=1(特にブールのtrue)が入力され、指定した2つの条件を使用してT2が結合されます。
フィルタ条件は結合後に適用されます。たとえば、次の結合を考えてみます。
Input1.c --- + Input2.c --- +---> Joiner Input3.c --- +
この結合に次の条件が適用されるとします。
条件1: Input1.c (+) = Input2.c (+)
条件2: Input2.c = Input3.c
条件3: Input1.c is null
最初の2つの条件はtrue結合ですが、第3の条件はフィルタ条件です。ANSIコードを生成する場合、Warehouse Builderではこの文が次のように解析されます。
select ... from Input1 full outer join Input2 on (Input1.c = Input2.c) join Input3 on (Input2.c = Input3.c) WHERE Input1.c is not null;
ターゲット・ウェアハウスがOracle9i以降のリリースをベースとしている場合、Warehouse Builderのジョイナ演算子では完全外部結合もサポートされます。完全外部結合条件を指定するには、関係演算子の両側に(+)記号を付ける必要があります。関係演算子には、等号のみでなく他の演算子(>、<、!=、>=、<=など)も使用できます。
T1.A (+) = T2.B (+)
この完全外部結合の結果は次のとおりです。
条件T1.A = T2.Bを満たすソースT1の行およびT2の行。
この条件を満たさないソースT1の行。T2に対応する列にNULLが移入されます。
この条件を満たさないソースT2の行。T1に対応する列にNULLが移入されます。
T1.A = T2.B (+)のような部分外部結合にOracle SQL構文を使用する場合は、関係演算子の両側に(+)記号を使用すると無効なOracle SQL構文になります。ただし、Warehouse Builderでは、2つの(+)記号を含む条件がANSI SQL構文に変換されます。次に例を示します。
SELECT ... FROM T1 FULL OUTER JOIN T2 ON (T1.A = T2.B);
完全外部結合を使用する場合は、次の点に注意してください。
Oracle9iより前のリリースの場合は、完全外部結合条件を指定しないでください。
ANSI結合構文が生成されるのは、ジョイナに完全外部結合条件を指定した場合のみです。それ以外の場合は、Oracle固有の次の結合構文が生成されます。
SELECT ... FROM T1, T2 WHERE T1.A = T2.B;
完全外部結合条件と結合条件の両方を同じジョイナで指定できます。ただし、同じソースに対して両方の条件を指定した場合、コード生成には強い方の結合タイプが使用されます。たとえば、次のように指定するとします。
T1.A(+) = T2.A(+) and T1.B = T2.B
T1.B = T2.B
はT1とT2の間の完全外部結合条件よりも強いため、Warehouse Builderでは完全外部結合のかわりに結合文が生成されます。
完全外部結合条件と部分外部結合条件を同じジョイナで指定することはできません。完全外部結合を指定する場合、その結合条件の他の部分では部分外部結合を指定できません。たとえば、T1.A (+) = T2.A (+) and T2.B = T3.B (+)
は無効です。
等価結合の場合、2つの表のキー値が一致する必要があります。完全外部結合の場合は、キー値が照合され、一致しないキー値については結果表にNULLが作成されます。左外部結合または右外部結合では、指定した表の行がすべて保持されます。
Oracle8iでは、次のように結合条件変数(+)を使用してSQLで外部結合を作成します。
SELECT ... FROM A, B WHERE A.key = B.key (+);
この例は左外部結合です。表Aの行は、一致する行が表Bになくても結合結果に含まれます。Oracle8iで完全外部結合を作成するには、複数のSQL文を使用する必要があります。
「式ビルダー」では、完全外部結合に次の構文を使用できます。
TABLE1.COL1 (+) = TABLE2.COL2 (+)
この構造は、Oracle8iではサポートされません。Oracle DatabaseはANSI SQL 1999準拠です。ANSI SQL 1999標準には、完全外部結合を実行するためのソリューション構文が含まれています。コード・ジェネレータでは、前述の式が次のようなANSI SQL 1999の完全外部結合文に変換されます。
SELECT ... FROM table1 FULL OUTER JOIN table2 ON (table1.col1 = table2.col2)
完全外部結合文はANSI SQL 1999に準拠しているため、生成コードがOracle9iデータベースに配布される場合にのみ有効です。Oracle8iデータベースに対して完全外部結合を指定すると、妥当性エラーになります。
完全外部結合と部分外部結合を1つのSQL文で一緒に使用できますが、AND条件またはAND/OR条件内で使用する必要があります。完全外部結合と部分外部結合をOR条件内で使用すると、予期しないAND条件となります。次に例を示します。
SELECT ... FROM table1 FULL OUTER JOIN table2 ON (A = B or C = D)
この条件は、Oracle ServerではA (+) = B (+) AND C = D
として評価されます。
マッピングに完全外部結合を使用する手順は、次のとおりです。
ジョイナ演算子の追加に関する手順1から4までに従います。
「結合条件」プロパティの右にある省略記号ボタンをクリックし、「式ビルダー」を使用して完全外部結合の式を定義します。
「OK」をクリックして式ビルダーを閉じます。
キー検索演算子を使用して、表、ビュー、キューブまたはディメンションのデータを検索します。たとえば、キー検索演算子を使用するのは、キューブをロードするマッピングを定義する場合や、ディメンションのサロゲート・キーを定義する場合などです。サロゲート識別子の詳細は、「レベルの定義」を参照してください。
検索するキーには、任意の一意な値を使用できます。RDBMSで定義されているように主キーまたは一意キーである必要はありません。キー検索演算子は、指定されたキー入力を使用して参照表からデータを読み取り、一致する行を検索します。この演算子は、入力キーごとに1行を戻します。同じマッピングに複数のキー検索演算子を使用できます。
キー検索演算子の出力は、検索オブジェクトの列に対応します。キー入力行ごとに検索行が確実に1行のみ検出されるようにするには、一致条件にキーを使用します。
キー検索の各出力属性には「DEFAULT VALUE」というプロパティがあります。「DEFAULT VALUE」プロパティは、入力値の参照表で値が検出されない場合に送信行セットでNULLのかわりに使用されます。生成済コードでは、NVLファンクションが使用されます。キー検索の結果は、常に外部結合文となります。
データの検索元となる表、ビューまたはディメンションは、キー検索演算子にバインドされます。キー検索演算子を、バインド先のリポジトリ・オブジェクトと同期化できます。ただし、リポジトリ・オブジェクトをキー検索演算子と同期化することはできません。演算子の同期化の詳細は、「リポジトリ・オブジェクトに基づく演算子の同期化」を参照してください。
図26-11に、キューブのロードに使用されるマッピングを示します。ソース表のデータはジョイナ演算子を使用して結合されます。ただし、ソース表のデータに含まれているのはチャネルのみです。このキューブをロードするには、サロゲート識別子の値が必要です。キー検索演算子を使用してCHANNELS
ディメンションのサロゲート識別子が検索されてから、この値がキューブにロードされます。
キー検索演算子の使用には、次のオプションが用意されています。
新しいキー検索演算子の定義: キー検索演算子をパレットからマッピングにドラッグします。マッピング・エディタのウィザードが起動します。
既存のキー検索演算子の編集: キー検索演算子を右クリックして「詳細をオープン」を選択します。
演算子ウィザードと演算子エディタのどちらを使用する場合も、次のページを完了します。
一般ページを使用して、キー検索演算子の名前と説明(オプション)を指定します。デフォルトでは、ウィザードにより演算子名「Key_Lookup」が指定されます。
グループ・ページを使用して、入力グループと出力グループをそれぞれ1つ指定します。キー検索演算子の場合、入力グループは複数の属性に含まれるソースのデータを表します。出力グループは、行に変換されたデータを表します。入力グループと出力グループの名前を変更したり、説明を追加できます。各キー検索演算子の入力グループと出力グループはそれぞれ1つのみである必要があるため、ウィザードではグループの追加や削除またはグループの方向の変更はできません。
接続の入力ページを使用して、属性をコピーしてキー検索演算子にマップします。選択した属性を使用して検索オブジェクトに対する検索が実行され、一致する行が検出されます。ページの左側には、マッピング内の全演算子のリストが表示されます。図26-12 に、キー検索演算子の入力として選択されたORACLE_PRODUCTS表の属性を示します。
キー検索演算子の接続の入力ページを完了する手順は、次のとおりです。
左側のパネルで、グループ全体または個別の属性を選択します。
特定の属性またはグループを名前で検索するには、「検索」にテキストを入力して「実行」を選択します。次の一致を検索するには、再度「実行」を選択します。[Shift]キーを押しながらクリックすると、複数の属性を選択できます。
ページ中央にある「>」ボタンを使用して、選択内容をウィザード・ページの右側に移動します。
接続の入力のリストからグループまたは属性を削除するには、「<」ボタンを使用します。Warehouse Builderでは、選択内容が入力グループから削除され、ソース演算子とピボット演算子間のマッピング線も削除されます。
検索ページを使用して、検索を実行するオブジェクトの詳細を指定します。このオブジェクトは検索結果と呼ばれます。現行のプロジェクトに属している表、ビューまたはディメンションの検索を実行できます。図26-13に、図26-11に示したマッピングの検索ページを示します。
検索詳細を指定するには、次の値を選択します。
検索結果を持つオブジェクト
「検索結果を持つオブジェクトを選択」ドロップダウン・リストを使用して、検索を実行するオブジェクトを選択します。このドロップダウン・リストには、現行のプロジェクト内のモジュールがすべて表示されます。モジュール・ノードを拡張し、モジュールのオブジェクトを表示します。このリストから検索結果を含むオブジェクトを選択します。
検索結果を持つレベル
検索オブジェクトとしてディメンションを選択する場合、検索結果を含むディメンション内のレベルを指定する必要があります。「検索結果を持つレベルを選択」ドロップダウン・リストには、選択したディメンション内のレベルが表示されます。検索結果を含むディメンション・レベルを選択します。
参照条件
検索結果のレコードと入力属性の一致に使用する条件を指定します。「参照表のキー」ドロップダウン・リストには、検索結果の一意制約が表示されます。「入力属性」ドロップダウン・リストには、接続の入力ページで選択した属性が表示されます。これらのドロップダウン・リストを使用して、レコードの一致に使用する属性を指定します。
検索用のディメンション・レベルを選択すると、オプションとしてディメンション・レベルのサロゲートIDとビジネスID、およびディメンション・データを格納するデータベース表の主キーが表示されます。
このページを使用するのは、検索ページで検索結果としてタイプ2のSCDを選択した場合のみです。検索結果がタイプ2のSCDの場合、検索として使用する特定のレコードのバージョンを指定する必要があります。選択できるオプションは次のとおりです。
最新のレコードを使用します。
このオプションでは、検索条件を使用した検索の対象となる属性に対応する現行のレコードが戻されます。現行のレコードとは、最新のタイムスタンプが付いたレコードです。
過去日付を定数として指定します
このオプションでは、「日付」および「時間」ドロップダウン・リストで指定した定数値を含むレコードが戻されます。
過去日付を持つ入力属性を選択します
このオプションを選択すると、入力属性の1つに含まれる日時に関連するレコードを戻すことができます。「入力属性」ドロップダウン・リストを使用して、過去の値を含む属性を選択します。
一致行なしページを使用して、検索ページで指定した検索条件を満たす行がない場合に実行するアクションを指定します。次のオプションを1つ選択します。
行が戻りません。
このオプションでは、検索結果に一致条件を満たす行がない場合、行を戻しません。
行を次のデフォルト値とともに戻します
このオプションを使用すると、検索結果が検索条件を満たさない場合に、デフォルト値を含む行を戻すことができます。このオプションの下にある表を使用して、検索列ごとにデフォルト値を指定します。
ピボット演算子を使用すると、1行の属性を複数行に変換できます。
この演算子は、複数の行ではなく属性に含まれるデータを変換する場合にマッピングで使用します。このような状況は、クロス集計形式のデータなど、非リレーショナル・データ・ソースからデータを抽出する際に生じることがあります。
図26-14に示す外部表SALES_DAT
には、フラット・ファイルのデータが含まれています。この表には、営業担当ごとに1行と、各月の列があります。外部表の詳細は、「外部表の使用」を参照してください。
表26-1に、Warehouse Builderによりピボット操作が実行された後のデータのサンプルを示します。それまで複数の列(M1、M2、M3...)に含まれていたデータが、1つの属性(Monthly_Sales)に含まれています。SALES_DAT
内の1つのID行は、ピボット後のデータの12行に対応します。
表26-1 ピボット後のデータ
REP | MONTH | MONTHLY_SALES | REGION |
---|---|---|---|
0675 |
Jan |
10.5 |
4 |
0675 |
Feb |
11.4 |
4 |
0675 |
Mar |
9.5 |
4 |
0675 |
Apr |
8.7 |
4 |
0675 |
May |
7.4 |
4 |
0675 |
Jun |
7.5 |
4 |
0675 |
Jul |
7.8 |
4 |
0675 |
Aug |
9.7 |
4 |
0675 |
Sep |
NULL |
4 |
0675 |
Oct |
NULL |
4 |
0675 |
Nov |
NULL |
4 |
0675 |
Dec |
NULL |
4 |
この例のピボット変換を実行するには、図26-15に示すようなマッピングを作成します。
このマッピングの場合、Warehouse Builderは外部表からデータを読み取った後、データをピボットして集計し、セット・ベース・モードでターゲットに書き込みます。ピボット後にデータをターゲットに直接ロードする必要はありません。データをターゲット演算子に送る前後に、一連の演算子でピボット演算子を使用できます。フィルタ、ジョイナおよび集合演算などの演算子をピボット演算子の前に配置できます。Warehouse Builderでピボットされたデータは行単位の操作ではないため、マッピングをセット・ベース・モードで実行することも可能です。
ピボット演算子では、行ロケータはソースからの反復データ・セットに対応するように作成する出力属性です。ピボット演算子を使用すると、Warehouse Builderでは1つの入力属性が複数行に変換され、行ロケータの値が生成されます。次の例では、ソースに各月の属性が含まれているため、MONTH
という出力属性を作成し、この属性を行ロケータとして指定できます。SALES_DAT
の行ごとに、出力では12行のピボット・データが生成されます。
表26-2に、Warehouse Builderで行インディケータとしてMONTH
を使用してデータがピボットされた後の、SALES_DAT
の1行目のデータを示します。
ピボット演算子の使用には、次のオプションが用意されています。
新しいピボット演算子の定義: 「ピボット」ウィザードを使用して、マッピングに新しいピボット演算子を追加します。ピボット演算子をパレットからマッピングにドラッグします。マッピング・エディタの「ピボット」ウィザードが起動します。
既存のピボット演算子の編集: ピボット・エディタを使用して、前に作成したピボット演算子を編集します。演算子を右クリックして「詳細をオープン」を選択します。マッピング・エディタのピボット・エディタが開きます。
ピボット・ウィザードとピボット・エディタのどちらを使用する場合も、次のページを完了します。
一般ページを使用して、ピボット演算子の名前と説明(オプション)を指定します。デフォルトでは、ウィザードにより演算子名「Pivot」が指定されます。
グループ・ページを使用して、入力グループと出力グループをそれぞれ1つ指定します。
ピボット演算子の場合、入力グループは複数の属性に含まれるソースのデータを表します。出力グループは行に変換されたデータを表します。
入力グループと出力グループの名前を変更したり、説明を追加できます。各ピボット演算子の入力グループと出力グループはそれぞれ1つのみである必要があるため、ウィザードでグループの追加や削除またはグループの方向の変更はできません。
接続の入力ページを使用して、属性をコピーしてピボット演算子にマップします。選択した属性は、ピボットの入力グループにマップされます。ページの左側には、マッピング内の全演算子のリストが表示されます。図26-16に、ピボット演算子の入力として選択された外部表SALES_DATからのグループを示します。
ピボット演算子の接続の入力ページを完了する手順は、次のとおりです。
左側のパネルで、グループ全体または個別の属性を選択します。
名前で特定の属性またはグループを検索するには、「検索」にテキストを入力し、「実行」を選択します。次の一致を検索するには、「実行」を再度選択します。
複数の属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択する場合は、最初にジョイナ演算子または集合演算子を使用してグループを結合する必要があります。
ページ中央にある「>」ボタンを使用して、選択内容をウィザード・ページの右側に移動します。
「<」ボタンを使用して、入力の接続のリストからグループまたは属性を削除します。Warehouse Builderにより、入力グループから選択内容が削除され、ソース演算子とピボット演算子間のマッピング線も削除されます。図26-17に、SALES_DAT
からコピーされてPIVOTSALES
演算子にマップされたグループを示します。
入力属性ページで、「接続の入力」タブまたはウィザード・ページで選択した属性を変更します。
入力属性ページでは、次のタスクを実行できます。
属性の追加: 「追加」ボタンを使用して入力属性を追加します。
属性のプロパティの変更: 属性名、データ型、長さ、精度およびスケールを変更できます。
説明(オプション)の追加: 入力属性の説明を入力します。
属性キーの指定: オプションとして、「キー」チェック・ボックスを使用し、入力グループを一意に識別する属性を指定します。
出力属性ページで、ピボット演算子の出力属性を作成します。「入力属性」タブまたはウィザード・ページで入力属性をキーとして指定した場合、Warehouse Builderでは、これらの入力属性が編集または削除できない出力属性として表示されます。図26-18に、MONTH
が行ロケータとして選択された出力属性を示します。
ピボットの出力属性ページでは、次のタスクを実行できます。
属性のプロパティの変更: 前のタブまたはウィザード・ページでキーとして指定した属性を除いて、属性名、データ型、長さ、精度およびスケールを変更できます。
説明(オプション)の追加: 出力属性の説明を入力します。
行ロケータの指定: ピボット演算子に行ロケータを指定する必要はありませんが、指定しておくことをお薦めします。出力属性ページまたはタブで行ロケータを識別すると、出力データと入力データとの照合がより容易になります。
ピボット演算子において、行ロケータとは、ソースの繰返しデータ・セットに対応する出力属性です。たとえば、ソース・データに、各月の個別の属性が含まれる場合、出力属性「MONTH
」を作成し、それを行ロケータとして指定します。
ピボット変換ページで、各出力属性の式を記述します。
Warehouse Builderでは、デフォルトで2行が表示されます。「追加」を使用して、ソースの1行から出力する行数を指定します。たとえば、ソースに1年の四半期ごとの属性が含まれる場合、ソースの各行の出力には4行を指定できます。ソース・データに、1年の月ごとの属性が含まれる場合は、ソースの各行の出力には12行を指定できます。
図26-19に、各月の属性を使用してソースに定義されたピボット式とともに「ピボット変換」タブを示します。
ピボット式の記述は、次の出力タイプに基づきます。
行ロケータ: 各行の名前を指定します。この名前は表にロードする値です。たとえば、行ロケータが「MONTH」の場合、最初の行には「Jan」と入力します。
ピボットされた出力データ: リスト・ボックスから該当する式を選択します。たとえば、「Jan」として定義した行では、1月の値のセットを戻す式を選択します。
すでにキーとして指定された属性: Warehouse Builderによって式が定義されます。
不要なデータ: ピボット変換ページに出力としては不要なデータが含まれる場合、「NULL」式を使用します。Warehouse Builderでは、「NULL」として定義された属性に対して、データのない繰返し行セットが出力されます。
ウィザードを使用して新しいピボット演算子を作成する場合は、ウィザードを閉じるときに「終了」をクリックします。マッピング・エディタに、定義された演算子が表示されます。
ピボット・エディタを使用して既存のピボット演算子を編集する場合は、演算子の編集が終わったときに、「OK」をクリックします。マッピング・エディタで演算子が更新され、変更内容が反映されます。
マッピング後プロセス演算子を使用して、PL/SQLマッピングの実行後に実行されるプロシージャを定義します。たとえば、マッピング後プロセス演算子を使用すると、マッピングが正常に完了してデータがターゲットにロードされた後で、索引を再び有効化して作成できます。
マッピング後プロセス演算子は、Warehouse Builderで定義されたファンクションまたはプロシージャをマッピングの実行後にコールします。出力パラメータ・グループは、戻り値(ファンクションを介して実装済の場合)の接続ポイントと、ファンクションまたはプロシージャの出力パラメータを提供します。これらの出力属性の接続に制限はありません。
マッピング後プロセス演算子には、選択したPL/SQLプロシージャまたはファンクションに関連付けられているパラメータの数と方向に対応するグループが含まれています。グループと属性のリストを変更するには調整する必要があります。
1つのマッピングに対して定義できるマッピング後プロセス演算子は1つのみです。マッピング後に複数のプロシージャを実行する場合は、それらを1つのプロシージャにラップする必要があります。
マッピング後プロセス演算子には、定数、データ・ジェネレータ、マッピング入力パラメータおよびマッピング前プロセスからの出力をマップできます。マッピング後プロセス演算子は、SQL*Loaderマッピングには無効です。
マッピング後プロセス演算子をマッピング・エディタに追加した後、「演算子のプロパティ」ダイアログを使用してプロセスの実行条件を指定します。
マッピングにマッピング後プロセス演算子を使用する手順は、次のとおりです。
マッピング後プロセス演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
Warehouse Builderの「マッピング後プロセスの追加」ダイアログが表示されます。
「マッピング後プロセスの追加」ダイアログを使用して、変換を選択または作成します。「マッピング後プロセスの追加」ダイアログの使用方法の詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
ソース演算子の出力属性をマッピング後プロセス演算子の入力/出力グループに接続します。
演算子の実行条件を設定します。
マッピング後プロセス演算子の実行条件を設定する手順は、次のとおりです。
マッピング・キャンバスからマッピング後プロセス演算子を選択します。
マッピング後プロセスのプロパティ・パネルに、マッピング後プロセス演算子のプロパティが表示されます。
「マッピング後プロセスの実行条件」をクリックし、次の実行条件から1つ選択します。
ALWAYS: プロセスはマッピング・エラーに関係なく実行されます。
ON SUCCESS: プロセスは、マッピングがエラーなしで完了した場合にのみ実行されます。
ON ERROR: プロセスは、マッピングの完了時にエラー数がマッピングに対して設定された許容エラー数を超えていた場合にのみ実行されます。
ON WARNING: プロセスは、マッピングの完了時にエラー数がマッピングに対して設定された許容エラー数を下回っていた場合にのみ実行されます。
「ON ERROR」または「警告の場合」を選択し、マッピングを行ベース・モードで実行する場合は、マッピングの「エラーの最大数」が設定されていることを確認する必要があります。許容エラー数を確認するには、プロジェクト・エクスプローラでマッピングを右クリックし、「構成」を選択して「ランタイム・パラメータ」を開きます。
マッピング前プロセス演算子を使用して、マッピングの実行前に実行されるプロシージャを定義します。
たとえば、マッピング前プロセス演算子を使用すると、表をステージング領域にロードするマッピングの実行前に、そのステージング領域にある表を切り捨てることができます。また、データをターゲットにロードするマッピングの実行前に、索引を無効化することも可能です。その後、マッピング後プロセス演算子を使用して、データをターゲットにロードするマッピングの実行後に、索引を再有効化して作成できます。
マッピング前プロセス演算子は、Warehouse Builderでメタデータが定義されているファンクションまたはプロシージャをマッピングの実行前にコールします。出力パラメータ・グループは、戻り値(ファンクションを介して実装済の場合)の接続ポイントと、ファンクションまたはプロシージャの出力パラメータを提供します。これらの出力属性の接続に制限はありません。
マッピング前プロセス演算子をマッピング・エディタのキャンバスにドロップすると、ダイアログが開き、使用可能なライブラリ、カテゴリ、ファンクションおよびプロシージャが表示されます。ツリーからファンクションまたはプロシージャを選択すると、事前定義済の入力パラメータおよび出力パラメータとともに演算子が表示されます。
マッピング前プロセス演算子には、選択したPL/SQLプロシージャまたはファンクションの関連パラメータの数と方向に対応するグループが含まれています。
1つのマッピングで使用できるマッピング前プロセス演算子は1つのみです。また、マッピング前プロセス演算子にマップできるのは、マッピング前プロセスの定数、マッピング入力パラメータおよび出力のみです。
マッピング前プロセス演算子をマッピング・エディタに追加した後、「演算子のプロパティ」ダイアログを使用してマッピングの実行条件を指定します。
マッピングにマッピング前プロセス演算子を使用する手順は、次のとおりです。
マッピング前プロセス演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「マッピング前プロセスの追加」ダイアログが表示されます。
「マッピング前プロセスの追加」ダイアログを使用して、変換を選択または作成します。このダイアログの使用方法の詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」を参照してください。
マッピング前プロセス演算子の出力属性を、ターゲット演算子の入力グループに接続します。
演算子の実行条件を設定します。
マッピング前プロセス演算子を使用したマッピングの実行条件を設定する手順は、次のとおりです。
マッピング・キャンバスで、マッピング前プロセス演算子を選択します。
マッピング前プロセスのプロパティ・パネルに、マッピング前プロセス演算子のプロパティが表示されます。
「マッピングの実行条件」をクリックし、次の実行条件から1つ選択します。
ALWAYS: Warehouse Builderでは、エラーの有無に関係なくプロセスの完了後にマッピングが実行されます。
ON SUCCESS: Warehouse Builderでは、プロセスがエラーなしで完了した場合にのみマッピングが実行されます。
ON ERROR: Warehouse Builderでは、プロセスがエラーありで完了した場合にのみマッピングが実行されます。
集合演算では、2つのコンポーネントの問合せ結果が組み合されて1つの結果になります。
ジョイナは個別の行を組み合せて1行にしますが、集合演算子はすべてのデータ行を組み合せて1つのユニバーサル行にします。集合演算子の場合、データは1つの出力に追加されますが、列リストが組み合されて1つの列リストとなることはありません。
集合演算演算子を使用すると、マッピングで次の集合演算を使用できます。
デフォルトでは、集合演算演算子には入力グループ2つと出力グループ1つが含まれます。演算子エディタを使用すると、入力グループを追加できます。出力グループの属性の数は、最大数の属性を含む入力グループの属性の数と一致します。
集合演算演算子を使用するには、すべての集合の属性数が一致し、対応する属性のデータ型が一致する必要があります。対応する属性は、入力グループ内の属性の順序で判別されます。たとえば、入力グループ1の属性1は入力グループ2の属性1に対応します。
集合演算は上から下へと適用する必要があります。集合演算の実行順序は、入力グループの順序により決定されます。この順序は減算操作にのみ影響します。たとえば、AマイナスBとBマイナスAは異なります。最初の入力グループ内の属性の順序により、集合の構造が決定されます。たとえば、{ empno, ename }と{ ename, empno }は異なります。
図26-20に、集合演算演算子を使用するマッピングを示します。2つのソース表のデータはINTERSECT集合演算を使用して組み合されます。この操作の出力はターゲットにマップされます。ターゲット表には、両方の入力表に共通する行のみが含まれます。
マッピングで集合演算演算子を使用する手順は、次のとおりです。
集合演算演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
集合演算演算子グループにソース属性を接続します。
集合演算子のヘッダーを選択します。
集合演算のプロパティ・パネルに集合演算子のプロパティが表示されます。
「集合演算」プロパティのドロップダウン・リストをクリックし、リストから操作を選択します。
集合演算出力グループをターゲット入力グループに接続します。
ソーター演算子を使用すると、ソート済の行セットを生成できます。
ソーター演算子を使用すると、ソート対象の入力属性とソート順(昇順または降順)を指定できます。Warehouse Builderでは、マッピングにより生成されるコードにORDER BY句を挿入することでデータがソートされます。
ソーター演算子には、入力/出力グループが1つあります。ソーター演算子を使用すると、すべてのリレーショナル・データベース・ソースのデータをソートできます。ソーター演算子の後に任意の演算子を使用できます。
ソーター演算子にはORDER BY句が含まれます。この句は入力/出力グループの属性の順序付きリストであり、この入力/出力グループでは、順序付き属性リストと同じ順序でソートが実行されることが指定されます。各属性について昇順または降順のソートを設定できます。
ウェアハウス内のほとんどのデータは、バッチでロードされます。ロード・ルーチンには問題が発生する場合があります。たとえば、受注バッチに1つの受注番号が複数回含まれ、各受注明細が異なる受注ステータスを表している場合があります。受注のステータスは、1日のうちに「CREATED」から「UPDATED」、「BOOKED」へと進みます。
SQL文ではデフォルトで順序付けが保証されないため、ターゲット表に対する挿入と更新が間違った順序で実行される場合があります。結果のステータスは「BOOKED」である必要がありますが、「UPDATED」行が最後に処理されると、それがその日の最後の値になります。Warehouse Builderでは、ソーター演算子を使用して順序付きの抽出問合せを作成することで、この問題を解決できます。ORDER BY句では、最後に更新される属性を使用できます。これにより、レコードは必ず作成時の順序で表示されます。
図26-21に、ソーター演算子を使用してORACLE_ORDERS
表のレコードをソートするマッピングを示します。ソーター演算子の「Order By句」プロパティを使用して、ORDER_ID
およびLAST_UPDATED
属性で入力レコードをソートします。
マッピングでソーター演算子を使用する手順は次のとおりです。
「ソーター」演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
図26-21に示すように、ソース演算子グループをソーター入力/出力グループに接続します。
ソーター演算子のヘッダーを選択します。
ソーターのプロパティ・パネルに演算子のプロパティが表示されます。
「Order By句」フィールドの省略記号のボタンをクリックします。
「Order By句」ダイアログが表示されます。
ソートする属性を選択します。
「使用可能な属性」リストから属性を選択し、「>」ボタンをクリックします。「使用可能な属性」リストのすべての属性を選択するには、「>>」ボタンをクリックします。
属性にORDER BY句を適用します。
「ORDER BY属性」リストから属性を選択し、「昇順/降順」ドロップダウン・リストからASC(昇順)またはDESC(降順)を選択します。
「OK」をクリックします。
ソーター演算子の出力をターゲットに接続します。
スプリッタ演算子を使用すると、1つのソースのデータを複数のターゲットに分割できます。
スプリッタ演算子は、ブール分割条件を使用して1つの入力行セットを複数の出力行セットに分割します。各出力行セットのカーディナリティは、入力のカーディナリティ以下となります。これは、データを作成条件に基づいて異なるターゲットに移動する必要がある場合に役立ちます。複数のフィルタを介してデータを移動するかわりにスプリッタを使用できます。
オプションとして、1つのソースのデータを複数のターゲットに分割するマッピングを最適化してパフォーマンスを向上できます。詳細は、「例: 複数ターゲットあるマッピングの作成」を参照してください。
スプリッタ演算子には、入力グループ1つと出力グループ3つが含まれています。出力グループはOUTGRP1、OUTGRP2およびREMAINING_ROWSです。出力グループREMAINING_ROWSには、どの出力グループにも含まれない入力行がすべて含まれます。この出力グループは削除できますが、編集はできません。必要な場合は、出力グループを追加作成できます。
スプリッタ演算子には、分割条件が含まれています。コード生成のために、ソース列が式テンプレート内の入力属性名で置換されます。この式は、WHERE句で使用できる有効なSQL式です。
図26-22に、スプリッタ演算子を使用してソース表CUSTOMERS
の顧客データを2つの個別表に分割するマッピングを示します。一方の表には顧客所在地のみが含まれ、他方の表にはその他の顧客詳細が含まれています。スプリッタ演算子の各出力グループの「分割条件」プロパティを使用して、特定のターゲット表に移動するデータを指定します。
マッピングでスプリッタ演算子を使用する手順は、次のとおりです。
スプリッタ演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
ソース演算子のグループをスプリッタ演算子の入力グループに接続します。
出力属性が、対応する入力のデータ型と一致するデータ型を使用して作成されます。
スプリッタ演算子の出力グループを選択します。
「グループのプロパティ」パネルに、出力グループのプロパティが表示されます。
「分割条件」フィールドの右にある省略記号ボタンをクリックします。
「式ビルダー」ダイアログが表示されます。
分割条件を定義します。
たとえば、分割条件としてUPPER(INGRP1.OR_CHANNEL) = 'DIRECT'を定義できます。
REMAINING ROWSグループを除く各出力グループの分割条件について式を定義します。
出力グループをターゲットに接続します。
複数のターゲットを使用するマッピングの設計時には、パフォーマンス向上のために最適化するためのオプションが用意されています。マッピングについて正確な監査詳細が必要な場合は、最適化しなくてもかまいません。その場合、Warehouse Builderではターゲットごとに個別のINSERT文が生成されます。
複数ターゲットのマッピングを最適化するには、組み合された全ターゲットに対してWarehouse Builderで1つのINSERT文が生成されるように、追加の手順を実行する必要があります。この場合、Warehouse Builderではmulti_table_insert
SQL文が生成されます。このSQL文は、リリース9i以降のOracle Databaseサーバーで使用可能なパラレル問合せおよびパラレルDMLサービスを利用します。
複数のターゲットを使用するマッピングを最適化する手順は、次のとおりです。
Oracle9i以降のSQLを生成するように構成されているOracleターゲット・モジュールで、マッピングを定義します。
Warehouse Builderのプロジェクト・エクスプローラでターゲット・モジュールを右クリックして「構成」を選択します。「配布システム・タイプ」および「PL/SQL生成モード」の下で、Oracle9i以降を選択します。
マッピング・エディタで、単一のソース、スプリッタ演算子および複数のターゲットを使用するマッピングを設計します。
Warehouse Builderでマッピングを最適化するには、ターゲットとしてビューやマテリアライズド・ビューではなく表を指定する必要があります。各ターゲット表の列数は999未満であることが必要です。スプリッタ演算子とターゲットの間には、カーディナリティを変更する演算子を使用しないでください。たとえば、図26-23に示すように、スプリッタとターゲットの間にはフィルタを配置できますが、ジョイナ演算子やアグリゲータ演算子は配置できません。これらの制限は、マッピングを最適化するように選択した場合にのみ適用されます。
プロジェクト・エクスプローラで、マッピングを選択してメニュー・バーから「設計」、「構成」を選択します。構成するマッピングを右クリックして「構成」を選択する方法もあります。
マッピングの「構成プロパティ」ダイアログが表示されます。
「ランタイム・パラメータ」を開き、「デフォルト・オペレーティング・モード」を「セット・ベース」に設定します。
「コード生成オプション」を開いて「最適化コード」を選択します。
このマッピングを実行して生成結果を表示すると、すべてのターゲットについてSELECTとINSERTの合計カウントが1つ戻されます。
テーブル・ファンクション演算子を使用すると、入力行セットを操作し、同一または異なるカーディナリティを持つ別の行セットを戻すことができます。
通常のファンクションは一度に1行のみを処理しますが、テーブル・ファンクションでは行セットに同じ複雑なPL/SQLロジックを適用してパフォーマンスを向上できます。従来型のファンクションとは異なり、テーブル・ファンクションは物理表のように問合せ可能な出力行セットを戻すことができます。
テーブル・ファンクションの実行をパラレル化することもできます。この場合、戻された行は中間のステージングなしで次のプロセスに直接ストリーム化されます。テーブル・ファンクションから戻されるコレクションの行は、テーブル・ファンクションの入力全体の処理が完了してからバッチで出力するかわりに、パイプライン化したり生成時のまま1行ずつ出力できます。
テーブル・ファンクションを使用すると、データ・ウェアハウスのロード時にパフォーマンスを大幅に向上できます。
マッピングでテーブル・ファンクション演算子を定義する手順は、次のとおりです。
テーブル・ファンクション演算子を含むマッピングを配布する前に、テーブル・ファンクションをターゲット・ウェアハウス内で手動で作成する必要があります。テーブル・ファンクション演算子は、マッピングにより生成されるコードを介して実際のテーブル・ファンクション・オブジェクトにバインドされます。
テーブル・ファンクション演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
マッピング・エディタのキャンバスに、TABLEFUNCTIONというテーブル・ファンクション演算子が追加されます。
テーブル・ファンクション演算子の入力グループに、適切なソース属性を接続します。
テーブル・ファンクション演算子を右クリックして「詳細をオープン」を選択します。
テーブル・ファンクション・エディタが表示されます。
「グループ」タブで、「追加」を選択して出力グループを追加します。
図26-24に、テーブル・ファンクション演算子を使用してデータを表にロードするマッピングを示します。
テーブル・ファンクションの特性
名前によるパラメータの受渡しはサポートされていません。
戻り型がTABLE of PLS Recordの場合は、「PLSレコード」フィールドの名前と一致する名前を選択する必要があります。選択リストから選択できるのは、PLS Recordのフィールドのサブセット1つのみです。
戻り型がTABLE of T1%ROWTYPEの場合は、表T1の列名と一致する名前を選択する必要があります。
戻り型がTABLE of Object Typeの場合は、「オブジェクト・タイプ」属性の名前と一致する名前を選択する必要があります。
戻り型がTABLE of Scalar(TABLE of NUMBERなど)の場合、テーブル・ファンクションから戻されるスカラー値の検索に使用できるのはSELECT COLUMN_VALUEのみです。
マッピングでテーブル・ファンクション演算子を使用するには、事前にWarehouse Builder外部のターゲット・スキーマにテーブル・ファンクションを作成します。バインドされていないテーブル・ファンクション演算子でサポートされているデータベース内のテーブル・ファンクションは、次の要件を満たす必要があります。
PLS Record(PLS Recordのフィールド)を戻すREFカーソルは、Warehouse Builderでサポートされているスカラー・データ型である必要があります(0..n)。
入力パラメータが1つ以上必要です。
PLS Record(PLS Recordのフィールドは、Warehouse Builderでサポートされているスカラー・データ型である必要があります)。
オブジェクト・タイプ(オブジェクト・タイプの属性は、Warehouse Builderでサポートされているスカラー・データ型である必要があります)。
Warehouse Builderでサポートされているスカラー・データ型。
ROWTYPE
マッピング内のテーブル・ファンクション演算子の場合
REFカーソル・タイプ・パラメータごとにパラメータ・グループを1つ追加する必要があります。
1つのスカラー型パラメータ・グループの一部として複数のスカラー・パラメータを使用できます。
パラメータ・グループとグループ内のパラメータは、任意の順序で入力できます。
テーブル・ファンクション演算子のパラメータの位置は、ターゲット・ウェアハウスで作成されるテーブル・ファンクションのパラメータの位置と同じにする必要があります。
テーブル・ファンクション演算子のプロパティにアクセスするには、マッピング・エディタの「プロパティ」パネルを使用します。「プロパティ」パネルには、キャンバスで選択したオブジェクトのプロパティが表示されます。たとえば、テーブル・ファンクション演算子の入力グループを選択すると、「プロパティ」パネルには入力パラメータ・グループのプロパティが表示されます。
テーブル・ファンクション演算子のプロパティは、次のとおりです。
テーブル・ファンクション名: テーブル・ファンクション名を表します。このプロパティでは、テーブル・ファンクションの実際の名前と一致する名前を指定する必要があります。
テーブル・ファンクションはターゲット: テーブル・ファンクションがターゲットであることを指定するには、このオプションを選択します。このプロパティはデフォルトで選択されます。
テーブル・ファンクション演算子は、次のタイプの入力パラメータを受け入れます。
入力パラメータ・タイプ: 有効な入力パラメータ・タイプは、REF_CURSOR_TYPEまたはSCALAR_TYPEです。
REF_CURSOR_TYPE: PLS Record { 0...N }を戻します。PLS Recordのフィールドは、Warehouse Builderでサポートされているスカラー・データ型である必要があります。
SCALAR_TYPE: Warehouse Builderでサポートされているスカラー・データ型。
パラメータの位置: このパラメータ・グループに対応するテーブル・ファンクション・シグネチャ内のパラメータの位置を示します。このプロパティを適用できるのはREF_CURSOR属性グループのみで、スカラー・パラメータの位置と併用されます。
スカラー・タイプの表を戻します。: このプロパティは、テーブル・ファンクションの戻り型がTABLE of SCALARであるかどうかを示します。この情報が必須なのは、TABLE of SCALARのSELECTリストの項目がSelect COLUMN_VALUEである必要がありますが、その他の場合には適切な名前である必要があるためです。
変換演算子を使用し、入力行セットのカーディナリティを保持しながら、PL/SQLファンクションを使用して行セットに含まれる行の列値データを変換します。
変換演算子は、リポジトリ内のモジュールの1つに含まれるファンクションまたはプロシージャにバインドされる必要があります。変換演算子の入力と出力は、バインド先のリポジトリ・ファンクションまたはプロシージャの入力パラメータと出力パラメータに対応します。変換演算子がファンクションにバインドされている場合、結果の出力はファンクションの結果に対応する演算子に追加されます。バインド先のファンクションまたはプロシージャは、ターゲット・システムに存在しないかぎり、マッピングの配布前に生成して配布する必要があります。
Warehouse Builderでは、ランタイム・スキーマに事前定義済のPL/SQLライブラリ・ファンクションが用意されており、変換演算子をマッピングに追加する際にバインド先ファンクションとして選択できます。また、ファンクションまたはプロシージャはグローバル共有ライブラリからも選択できます。
変換演算子のプロパティは次のとおりです。
ファンクション・コール: コール側パラメータとしてリストされた属性名を使用してコード・ジェネレータにより生成されるファンクション・コール用のテキスト・テンプレート。実際のコールでは、属性名はその属性に接続される実際のソース列またはターゲット列で置換されます。
ファンクション名: この演算子のバインド先となるファンクションまたはプロシージャの名前。
プロシージャ: trueの場合は、バインド先変換が戻り値のないファンクションではなくプロシージャであることを示すブール値。
データ型: 指定の属性に対応するバインド先ファンクションの入力、出力または結果パラメータのデータ型を示します。マッピング変換の出力がCHARデータ型の場合、Warehouse Builderでは結果にRTRIMが適用されてからデータがターゲットに移動されます。これにより、出力結果には余分な空白が含まれなくなります。
デフォルト値: 指定の属性のデフォルト値(デフォルト値がない場合は空白)。
オプション入力: trueの場合は、指定の属性がオプションであることを示すブール値。属性がオプションの場合、マッピングで接続する必要はありません。
ファンクション戻り値: trueの場合は、指定の出力属性がファンクションの結果属性であることを示すブール値。結果属性は名前付きの結果です。このプロパティを使用するのは、別の出力が名前付きの結果である場合、または結果出力の名前を変更する場合です。
マッピングで変換のマッピング演算子を使用する手順は、次のとおりです。
変換のマッピング演算子をマッピング・エディタのキャンバスにドラッグ・アンド・ドロップします。
「変換のマッピングの追加」ダイアログが表示されます。
「変換のマッピングの追加」ダイアログを使用して、新しい変換を作成するか、変換を1つ以上選択します。これらのオプションの詳細は、「リポジトリ・オブジェクトにバインドする演算子の追加」の冒頭を参照してください。
マッピングの変換演算子の入力にソース属性を接続します。
(オプションの手順)入力を1つ右クリックして「詳細をオープン」を選択します。
「属性のプロパティ」パネルに属性のプロパティが表示されます。
入力属性を選択します。「プロシージャ」プロパティが「True」に設定されている場合、入力パラメータを接続しないでください。
変換演算子の出力属性をターゲット属性に接続します。
アンピボット演算子は、複数の入力行を1つの出力行に変換します。
アンピボット演算子を使用すると、ソースからの抽出後に、ソース・データ内で属性別にグループ化されているソース行セットから1行を生成できます。ピボット演算子と同様に、アンピボット演算子もマッピングの任意の場所で使用できます。
表26-3に、SALESリレーショナル表のサンプル・データを示します。クロス集計フォーマットの場合、MONTH列には年の月ごとに1つずつ最大12の文字値があります。すべての売上データは、MONTHLY_SALESという1列に含まれます。
表26-3 クロス集計フォーマットのデータ
REP | MONTH | MONTHLY_SALES | REGION |
---|---|---|---|
0675 |
Jan |
10.5 |
4 |
0676 |
Jan |
9.5 |
3 |
0679 |
Jan |
8.7 |
3 |
0675 |
Feb |
11.4 |
4 |
0676 |
Feb |
10.5 |
3 |
0679 |
Feb |
7.4 |
3 |
0675 |
Mar |
9.5 |
4 |
0676 |
Mar |
10.3 |
3 |
0679 |
Mar |
7.5 |
3 |
0675 |
Apr |
8.7 |
4 |
0676 |
Apr |
7.6 |
3 |
0679 |
Apr |
7.8 |
3 |
図26-25に、Warehouse Builderにより表がアンピボットされた後のリレーショナル表SALESのデータを示します。前にMONTH列に含まれていたデータ(Jan、Feb、Marなど)は、12の個別属性(M1、M2、M3など)に対応します。前にMONTHLY_SALESに含まれていた売上データは、アンピボット後は各月を表す12の属性間に分散されています。
アンピボット演算子を使用すると、Warehouse Builderでは行ロケータに基づいて複数の入力行が1行に変換されます。アンピボット演算子では、行ロケータは定義した一連の出力属性に対応するようにソースから選択する必要のある属性です。アンピボット演算子の場合、行ロケータは必須です。この例では、行ロケータはSALES表のMONTHで、アンピボットされた出力の属性M1、M2、M3... M12に対応します。
アンピボット演算子の使用には、次のオプションが用意されています。
新しいアンピボット演算子の定義: アンピボット演算子をパレットからマッピングにドラッグします。マッピング・エディタのウィザードが起動します。
既存のアンピボット演算子の編集: アンピボット演算子を右クリックして「詳細をオープン」を選択します。マッピング・エディタのアンピボット・エディタが開きます。
アンピボット・ウィザードとアンピボット・エディタのどちらを使用する場合も、次のページを完了します。
一般ページを使用して、アンピボット演算子の名前と説明(オプション)を指定します。デフォルトでは、ウィザードにより演算子名「アンピボット」が指定されます。
グループ・ページを使用して、入力グループと出力グループをそれぞれ1つ指定します。
アンピボット演算子の場合、入力グループはクロス集計フォーマットのソース・データを表します。出力グループは、複数の属性間で分散されるターゲット・データを表します。
入力グループと出力グループの名前を変更したり、説明を追加できます。各アンピボット演算子の入力グループと出力グループはそれぞれ1つのみである必要があるため、ウィザードでグループの追加や削除またはグループの方向の変更はできません。
接続の入力ページを使用して、属性を選択し、アンピボット演算子にコピーおよびマップします。
アンピボット演算子の接続の入力ページを完了する手順は、次のとおりです。
左側のパネルで、グループ全体または個別の属性を選択します。
特定の属性またはグループを名前で検索するには、「検索」にテキストを入力して「実行」をクリックします。次の一致を検索するには、「実行」を再度クリックします。
複数のグループまたは属性を選択するには、[Shift]キーを押しながら選択します。異なるグループの属性を選択する場合は、最初にジョイナ演算子または集合演算子を使用してグループを結合する必要があります。
ページ中央にある「>」ボタンを使用して、選択内容をウィザード・ページの右側に移動します。
接続の入力のリストからグループまたは属性を移動するには、「<」矢印を使用できます。Warehouse Builderでは、選択内容が入力グループから削除され、ソース演算子とアンピボット演算子間のマッピング線も削除されます。
入力属性ページで、「接続の入力」タブまたはウィザード・ページで選択した属性を変更します。
アンピボットの入力属性ページでは、次のタスクを実行できます。
属性の追加: 「追加」ボタンを使用して入力属性を追加します。
属性のプロパティの変更: 属性名、データ型、長さ、精度およびスケールを変更できます。
説明(オプション)の追加: 入力属性の説明を入力します。
キー属性の指定: アンピボット演算子には1つ以上のキー属性を指定する必要があります。「キー」チェック・ボックスを使用して、入力グループを一意に識別する属性を指定します。キー属性の同じ値を持つ入力行から、アンピボットされた出力行が1つ生成されます。
行ロケータ・ページで、行ロケータを選択し、行ロケータに含まれる個別値に値を割り当てます。図26-26に、行ロケータとして選択された属性MONTHと、「Jan」、「Feb」、「Mar」などの値を示します。
アンピボットの行ロケータ・ページで指定する手順は次のとおりです。
「行ロケータ」リスト・ボックスから属性を選択します。
アンピボット演算子における行ロケータは、出力属性セットに対応するソース・データの属性です。
「追加」を使用して、行ロケータに存在する個別の値の数を指定します。
各行ロケータの値には、ソース・データセットに表示されている値を入力します。
文字列値の場合は、一重引用符でテキストを囲みます。たとえば、行ロケータが「MONTH」の場合、その属性には合計12の個別値があります。「追加」をクリックして、各個別値の行を追加します。行ロケータ値には、ソース・データセットに表示される値をそのまま入力します。たとえば、表26-3には、「Jan」、「Feb」および「Mar」の行ロケータ値があります。
図26-27に示す出力属性ページを使用して、アンピボット演算子の出力属性を作成します。
「入力属性」タブまたはウィザード・ページで入力属性をキーとして指定した場合、Warehouse Builderでは、これらの入力属性は、編集または削除できない出力属性として表示されます。
アンピボットの出力属性ページでは、次のタスクを実行できます。
属性の追加: 「追加」を使用して、「行ロケータ」タブまたはウィザード・ページで指定した行に対応する出力属性の数を増やします。12の行を指定した場合は、12の出力属性と、キーとして指定しなかった他の入力属性の属性を指定します。
属性のプロパティの変更: 「入力属性」タブまたはウィザード・ページでキーとして指定した属性を除いて、属性名、データ型、長さ、精度およびスケールを変更できます。
説明(オプション)の追加: 出力属性の説明を入力します。
図26-28に示すアンピボット変換ページを使用して、各出力属性の式を記述します。
キーとして指定した属性の場合、Warehouse Builderによって一致する行と式が定義されます。Warehouse Builderでは、キー属性に一致する行として最初の行が表示されます。その他の出力属性の場合、一致する行および式を指定します。
一致する行: リスト・ボックスで該当するオプションを選択します。たとえば、年の最初の月として「M1」を定義した属性の場合、リスト・ボックスから「Jan」を選択します。
式: リスト・ボックスで該当する式を選択します。データをアンピボットするために作成したすべての新しい属性には、対応するデータが含まれる同じ入力属性を選択します。たとえば、アンピボット属性M1、M2、M3...M12はすべて、同じ式であるINGRP1.MONTHLY_SALESを共有します。その他のすべての出力属性には、入力属性のリストから対応する属性を選択します。