データの変換は、抽出、変換およびロード(ETL)ツールの主要な機能の1つです。Oracle Warehouse Builderには、データ変換の様々な方法が用意されています。この章では、Oracle Warehouse Builderでのデータ変換の概要について説明します。
この章の内容は次のとおりです。
ソース・データをインポートしてターゲットを定義した後で、ソース・データをターゲットに必要な出力に変換する方法を検討します。Oracle Warehouse Builderでは、マッピング・エディタでマッピングを設計し、データの変換方法を指定します。マッピングはOracle Warehouse Builderのエンティティで、ソースからデータを抽出して変換し、1つ以上のターゲットにロードする一連の操作が記述されています。
マッピングを設計する際の基本単位は演算子です。マッピングで実行する各操作を演算子で記述します。操作には、データの抽出、データのロード、およびデータの変換(集計、結合、検索の実行など)が含まれます。操作の順序を指定するには、マッピングにデータ・フロー接続を接続します。
マッピングでデータ変換を指定するには、事前作成済の多くの変換演算子から演算子を選択するか、新しい変換演算子を設計します。事前作成済の変換演算子を使用する場合、フィルタ処理、結合、ソートなど、よく実行する操作を実行できます。Oracle Warehouse Builderには、データのマージ、クレンジング、プロファイリングなどの複雑な操作のための事前作成済の演算子も用意されています。事前作成済の変換演算子の中に要件を満たす演算子がない場合、新しい演算子を設計できます。PL/SQLファンクション、プロシージャ、パッケージ・ファンクションおよびパッケージ・プロシージャのOracleデータベース・ライブラリに基づいて新しい変換演算子を作成できます。
抽出およびロードの操作は、数多くのソースおよびターゲットの演算子によって表されます。たとえば、表演算子は表を表し、フラット・ファイル演算子はフラット・ファイルを表します。その演算子が抽出とロードのどちらの操作を示すかは、マッピングにおいてその演算子を他の演算子とどのように結合するかによって決まります。
重要な点は、マッピング内の演算子とそれが表すオブジェクトの相違です。演算子とオブジェクトは、2つをバインドするまでは別個のエンティティです。たとえば、表演算子をマッピングに追加すると、その演算子をリポジトリの特定の表にバインドできます。演算子を表にバインドすると、2つの定義の変更を同期化できます。表演算子がターゲットを表している場合、マッピング内の演算子を変更すると、これらの変更をリポジトリ内の表に反映できます。演算子がメタデータ定義の変更元であるソースを表している場合、デザイン・センターに表を再インポートすると、マッピング・エディタで表演算子に対する変更を伝播できます。
マッピングとはデータをソースから抽出し、変換してターゲットにロードする一連の操作を表します。これによりデータ・フローおよびデータで実行される操作がビジュアル表示されます。マッピングをWarehouse Builderで設計する場合は、マッピング・エディタ・インタフェースを使用します。または、『Oracle Warehouse Builder APIおよびスクリプト・リファレンス』の説明に従って、Oracle Warehouse Builderのスクリプト・インタフェースであるOMB*Plusを使用してマッピングを作成および定義することもできます。
マッピングで定義したETLロジックに基づいて、Oracle Warehouse Builderにより設計の実装に必要なコードが生成されます。Oracle Warehouse Builderでは次の言語のコードを生成できます。
PL/SQLマッピングについては、「PL/SQLマッピング」を参照してください。
SQL*Loaderマッピングについては、「SQL*Loaderマッピング」を参照してください。
SAP ABAPマッピングについては、「SAP ABAPマッピング」を参照してください。
コード・テンプレート・マッピングについては「コード・テンプレート・マッピング」を参照してください。
マッピングの基本となる設計要素は演算子です。演算子を使用して、データ・フローでソースおよびターゲットを表現します。また、演算子を使用して、ソースからターゲットへのデータの変換方法を定義することもできます。ソースとして選択する演算子は、マッピングの設計方法に影響を与えます。Oracle Warehouse Builderでは、選択された演算子に基づいて、次のいずれかのマッピング生成言語にマッピングが割り当てられます。各コード言語では、マッピングを設計する際、特定のルールに従う必要があります。
SQL
コード・テンプレートを含むマッピングについては、SQLコードが生成されます。
PL/SQL
フラット・ファイル演算子がソースまたはSAP/R3ソースとして指定されていないすべてのマッピングでは、Oracle Warehouse BuilderによりPL/SQLコードが生成されます。PL/SQLマッピングの設計上の考慮事項は、指定するオペレーティング・モード(行ベースまたはセット・ベース)によって異なります。詳細は、第10章「パフォーマンスおよび拡張ETL概念の理解」を参照してください。
SQL*Loader
フラット・ファイル演算子をソースとして定義すると、Oracle Warehouse BuilderによりSQL*Loaderコードが生成されます。SQL*Loaderマッピングを正しく設計するには、「フラット・ファイル・ソース演算子」に記載されているガイドラインに従ってください。
ABAP
SAP/R3ソースを定義すると、Oracle Warehouse BuilderによりABAPコードが生成されます。SAPソースに対するマッピングの設計上の考慮事項は、「SAP抽出マッピングの作成」を参照してください。
マッピングを設計するときは、マッピング・エディタ・パレットから演算子を選択し、キャンバスにドラッグできます。
ここでは、演算子のタイプを紹介し、演算子についてこのマニュアルに記載されている詳細な情報の参照先(章)を示します。
ソースおよびターゲット演算子: これらの演算子は、Oracle Databaseオブジェクト、フラット・ファイル、リモート・ソースまたはリモート・ターゲット、およびOracle以外のソースおよびターゲットを表します。
リモートおよびOracle以外のソースおよびターゲット演算子: これらの演算子の使用には特別な要件があります。「リモートおよびOracle以外のソースおよびターゲット演算子の使用」を参照してください。
変換演算子: これらの演算子はデータを変換します。
事前/事後処理演算子: マッピングを実行する前または後にファンクションまたはプロシージャをコールします。
プラッガブル・マッピング演算子: これらは他のマッピングで演算子として機能するマッピングです。
リアルタイム・データ・ウェアハウス演算子: これらの演算子は、リアルタイムおよびバッチのマッピングの作成に使用されます。
リレーショナル・データベース・オブジェクトおよびフラット・ファイルオブジェクトを表すには、ソース演算子およびターゲット演算子を使用します。
表4-1に、ソース演算子とターゲット演算子のアルファベット順のリストと簡単な説明を示します。これらのオプションの詳細は、第25章「ソース演算子とターゲット演算子」を参照してください。
表4-1 ソース演算子とターゲット演算子
アイコン | 演算子名 | 説明 |
---|---|---|
定数 |
1つの出力グループが作成されます。このグループには、1つ以上の定数属性を指定できます。 |
|
オブジェクトの構成 |
オブジェクト・タイプおよびコレクション・タイプを作成します。 |
|
キューブ |
定義済のキューブを表します。 |
|
データ・ジェネレータ |
レコード番号、システムの日付、順序の値などの情報を表示します。 |
|
ディメンション |
定義済のディメンションを表します。 |
|
オブジェクトの拡張 |
オブジェクト・タイプを構成する個々の属性を取得するために、オブジェクト・タイプを拡張します。 |
|
外部表 |
定義済またはインポート済の外部表を表します。 |
|
フラット・ファイル |
定義済またはインポート済のフラット・ファイルを表します。 |
|
マテリアライズド・ビュー |
定義済のマテリアライズド・ビューを表します。 |
|
キュー |
定義済のアドバンスト・キューを表します。 |
|
順序 |
1行ごとに増分する連続番号を生成します。 |
|
表 |
定義済またはインポート済の表を表します。 |
|
可変長配列イテレータ |
表タイプで値を反復します。 |
|
ビュー |
定義済またはインポート済のビューを表します。 |
ソース・データを変換するには、マッピング内のデータ・フロー演算子を使用します。
表4-2に、データ・フロー演算子のアルファベット順のリストと簡単な説明を示します。これらの演算子の詳細は、第26章「データ・フロー演算子」、第22章「Name and Address演算子」、第23章「照合、マージ、およびデュプリケーション」
表4-2 データ・フロー演算子
アイコン | 演算子名 | 説明 |
---|---|---|
アグリゲータ |
SUMやAVGなどのデータ集計を実行し、集計されたデータを使用して行セットを出力します。 |
|
Anydataキャスト |
Sys.AnyDataタイプのオブジェクトを主タイプまたはユーザー定義タイプに変換します。 |
|
デュプリケータ解除 |
マッピングで生成されたSELECTコードにDISTINCT句を挿入して、ソース内の重複するデータを削除します。 |
|
式 |
この演算子の1つの出力パラメータについて、非プロシージャ・アルゴリズムを定義するSQL式を記述できます。式テキストには、入力パラメータ名、変数名およびライブラリ・ファンクションを組み合せて使用できます。 |
|
フィルタ |
行セットの行を特定の条件に基づいてフィルタリングします。 |
|
ジョイナ |
カーディナリティの異なる複数のソースから取り込んだ複数の行セットを結合し、1つの出力行セットを生成します。 |
|
検索 |
表、ビュー、マテリアライズド・ビュー、外部表、キューブ、ディメンションなどの参照オブジェクトからデータを参照します。 |
|
Match-Merge |
データ品質に関する演算子で、一致するレコードを識別して単一のレコードにマージします。 |
|
名前とアドレス |
Name and Addressソース・データのエラーや不整合を識別して修正します。 |
|
ピボット |
複数の属性の単一行を複数の行に変換します。複数の行ではなく、複数の属性間に含まれるデータを変換する場合に、この演算子を使用します。 |
|
集合演算 |
マッピングで、UNION、UNION ALL、INTERSECTおよびMINUSの演算を実行します。 |
|
ソーター |
属性を昇順または降順にソートします。 |
|
スプリッタ演算子 |
ブール分割条件を使用して、単一の入力行セットを複数の出力行セットに分割します。 |
|
副問合せフィルタ |
副問合せの結果に基づくフィルタ行。 |
|
テーブル・ファンクション |
カスタム・コードを開発して入力行セットを操作し、カーディナリティが同じまたは異なる、物理表のように問合せ可能な出力行セットを戻すことができます。 |
|
変換 |
PL/SQLファンクションまたはプロシージャを使用して、行セット内の行の属性値データを変換します。 |
|
アンピボット |
複数の入力行を1つの出力行に変換します。これにより、ソース・データ内の属性ごとにグループ化されているソース行セットからソースを抽出し、そこから単一の行を作成できます。 |
マッピングの実行前または後に処理を実行するには、事前/事後処理演算子を使用します。マッピングに対する値を指定するには、マッピング・パラメータ演算子を使用します。
表4-3に、事前/事後処理演算子とマッピング・パラメータ演算子と簡単な説明を示します。これらの演算子の詳細は、第26章「データ・フロー演算子」を参照してください。
プラッガブル・マッピング演算子は、マッピング演算子の再利用可能なグループで、単一の演算子として機能します。
表4-4 に、プラッガブル・マッピング演算子と簡単な説明を示します。詳細は、第26章「データ・フロー演算子」を参照してください。
この演算子ではキューを使用して変更データの取得を実行できます。ソース・オブジェクトで変更を取得して、それをターゲット表に適用するマッピングを作成できます。
表4-5 は、リアルタイム・データ・ウェアハウス演算子を示します。
変換とは、データの変換を可能にするPL/SQLファンクション、プロシージャ、パッケージおよびタイプです。変換は、ETLプロセスを定義するマッピングとプロセス・フローを設計する場合に使用します。変換は、Oracle Warehouse Builderワークスペースに格納され、定義したプロジェクトで使用できます。変換パッケージの配布はパッケージ・レベルで行われますが、実行は変換レベルです。
Oracle Warehouse Builderでの変換は、次のように分類できます。
Oracle Warehouse Builderには、標準的な変換操作を実行できる一連の事前定義済変換が用意されています。事前定義済変換は、組込みおよびシードされたファンクションとプロシージャで構成されているパブリックのOracle事前定義済ライブラリに含まれています。データの変換には、これらの事前定義済変換を直接使用できます。
事前定義済変換は、次のカテゴリに編成されています。
管理
文字
コントロール・センター
変換
日付
数値
OLAP
その他
SYS
空間
ストリーム
XML
各カテゴリに属する変換の詳細は、第28章「Oracle Warehouse Builder変換リファレンス」を参照してください。
カスタム変換はユーザーが作成する変換です。カスタム変換では、定義の一部に事前定義済変換を使用できます。
カスタム変換には、次のカテゴリが含まれます。
ファンクション: ファンクション・カテゴリにはスタンドアロン・ファンクションが含まれます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはプロジェクト・ナビゲータにあるすべてのOracleモジュール、DB2モジュールおよびSQL Serverモジュールの「変換」ノードに自動的に作成されます。
ファンクションはユーザーが定義するか、データベースからインポートできます。ファンクション変換の入力パラメータは0からnで、結果値が生成されます。
プロシージャ: プロシージャ・カテゴリには変換に使用されたあらゆるスタンドアロン・プロシージャが含まれます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはグローバル・ナビゲータにあるすべてのOracleモジュールの「変換」ノードに自動的に作成されます。
プロシージャはユーザーが定義するか、データベースからインポートできます。プロシージャ変換の入力パラメータは0からnで、0からnの出力パラメータが生成されます。
テーブル・ファンクション: テーブル・ファンクション・カテゴリには変換に使用されたあらゆるスタンドアロン・テーブル・ファンクションが含まれます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはプロジェクト・ナビゲータにあるすべてのOracleモジュールの「変換」ノードに自動的に作成されます。
テーブル・ファンクション・カテゴリは、パッケージにもリストされます。ここで作成されたすべてのテーブル・ファンクションは、パッケージに属します。
パッケージ: パッケージ・カテゴリにはパッケージが含まれており、パッケージはファンクション、プロシージャ、テーブル・ファンクションおよびPL/SQLタイプを含みます。このカテゴリは、グローバル・ナビゲータにある「パブリック変換」ノードの「カスタム」ノードで使用可能です。また、これはグローバル・ナビゲータにあるすべてのOracleモジュールの「変換」ノードに自動的に作成されます。
PL/SQLパッケージは、Oracle Warehouse Builderで作成するか、Oracle Warehouse Builderにインポートすることができます。パッケージ本体は変更可能です。ファンクションまたはプロシージャのシグネチャとなるパッケージ・ヘッダーは変更できません。ただし、Oracle Warehouse Builderからインポートされたパッケージについては、パッケージ・ヘッダーを変更できます。使用手順は「変更のインポート」を参照してください。
PL/SQLタイプ: PL/SQLタイプ・カテゴリには、あらゆるスタンドアロンのPL/SQLタイプが含まれています。たとえば、PL/SQLレコード・タイプ、REFカーソル・タイプ、ネストした表のタイプなどです。PL/SQLタイプ・カテゴリはプロジェクト・ナビゲータにある「変換」ノードの「パッケージ」ノードで定義した各パッケージに自動的に作成されます。これは、グローバル・ナビゲータで定義したすべてのパッケージでも使用できます。グローバル・ナビゲータで、「パブリック変換」ノード、「Oracle」ノード、「カスタム」ノード、「パッケージ」ノードの順に開き、パッケージにPL/SQLタイプを定義します。
手順の詳細は、「カスタム変換の定義」を参照してください。
変換ライブラリは、再利用可能な一連の変換で構成されています。リポジトリを作成するたびに、Oracle Warehouse Builderでは、該当するリポジトリに対する変換操作を含む変換ライブラリが作成されます。このライブラリには、標準的でパブリックのOracle事前定義済ライブラリ、およびプロジェクト内で定義された各Oracleモジュールの追加ライブラリが含まれます。
変換ライブラリは、デザイン・センターにあるグローバル・ナビゲータの「パブリック変換」ノードの下にあります。
変換ライブラリは、次のように分類できます。
事前定義済ファンクションの集合で、このライブラリからパブリックなOracleカスタム・ライブラリのプロシージャを定義できます。パブリックOracle事前定義済ライブラリはグローバル・ナビゲータに含まれます。「パブリック変換」ノードの下の「事前定義済」ノードを開きます。事前定義済変換の各カテゴリは、個別のノードとして表されます。カテゴリのノードを開いて、そのカテゴリの事前定義済変換を表示します。たとえば、「文字」ノードを開いて、Oracleライブラリに格納されている事前定義済の文字変換を表示します。
ユーザーが作成した再利用可能な変換の集合です。これらの変換は、ワークスペース内に定義されたファンクション、プロシージャおよびパッケージとして分類されます。
パブリックOracleカスタム・ライブラリでの変換は、「パブリック変換」ノードの「カスタム」ノードで使用できます。このノードに作成したすべての変換は、ワークスペース内のすべてのプロジェクトで使用できます。パブリックOracleカスタム・ライブラリに変換を作成する方法の詳細は、「カスタム変換の定義」を参照してください。
パブリックOracleカスタム・ライブラリに定義した変換を配布すると、その変換は、デフォルトのコントロール・センターに関連付けられたロケーションに配布されます。
変換はETLプロセスの様々な場所で使用できるため、Oracle Warehouse Builderを使用すると、デザイン・センターの様々な場所から変換ライブラリにアクセスできます。
変換ライブラリには、次の方法でアクセスできます。
式ビルダー
マッピングを作成するときは、ソース・データを変換する式の作成が必要になります。式ビルダー・インタフェースを使用すると、データの変換に必要な式を作成できます。式には変換を含めることができるため、Oracle Warehouse Builderを使用して、式ビルダーから変換ライブラリにアクセスできます。
変換ライブラリは、式ビルダーの「変換」タブで使用できます。TRANSFORMLIBSの下にある「プライベート」ノードには、現行のプロジェクトのみで使用できる変換が含まれます。これらの変換は、Oracleモジュールの「変換」ノードの下に作成されます。「パブリック」ノードには、パブリックOracleカスタム・ライブラリのカスタム変換、およびパブリックOracle事前定義済ライブラリの事前定義済変換が含まれます。
変換演算子の追加ダイアログ・ボックス
マッピング・エディタの変換演算子を使用すると、パブリックOracle事前定義済ライブラリとパブリックOracleカスタム・ライブラリの両方の変換をマッピングに追加できます。この演算子は、マッピングの一部としてデータを変換する場合に使用できます。
ファンクション・エディタ、プロシージャ・エディタ、「ファンクションの編集」ダイアログ・ボックスまたは「プロシージャの編集」ダイアログ・ボックス
これらのエディタの「実装」タブを使用すると、ファンクションまたはプロシージャ本体の一部となるPL/SQLコードを指定できます。PL/SQLコードで変換を使用できます。