ヘッダーをスキップ
Oracle® Warehouse Builderデータ・モデリング、ETLおよびデータ・クオリティ・ガイド
11gリリース2 (11.2)
B61350-02
  ドキュメント・ライブラリへ移動
ライブラリ
製品リストへ移動
製品
目次へ移動
目次
索引へ移動
索引

前
 
次
 

4 データ変換の概要

データの変換は、抽出、変換およびロード(ETL)ツールの主要な機能の1つです。Oracle Warehouse Builderには、データ変換の様々な方法が用意されています。この章では、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では次の言語のコードを生成できます。

演算子の使用について

マッピングの基本となる設計要素は演算子です。演算子を使用して、データ・フローでソースおよびターゲットを表現します。また、演算子を使用して、ソースからターゲットへのデータの変換方法を定義することもできます。ソースとして選択する演算子は、マッピングの設計方法に影響を与えます。Oracle Warehouse Builderでは、選択された演算子に基づいて、次のいずれかのマッピング生成言語にマッピングが割り当てられます。各コード言語では、マッピングを設計する際、特定のルールに従う必要があります。

演算子のタイプ

マッピングを設計するときは、マッピング・エディタ・パレットから演算子を選択し、キャンバスにドラッグできます。

ここでは、演算子のタイプを紹介し、演算子についてこのマニュアルに記載されている詳細な情報の参照先(章)を示します。

ソース演算子とターゲット演算子

リレーショナル・データベース・オブジェクトおよびフラット・ファイルオブジェクトを表すには、ソース演算子およびターゲット演算子を使用します。

表4-1に、ソース演算子とターゲット演算子のアルファベット順のリストと簡単な説明を示します。これらのオプションの詳細は、第25章「ソース演算子とターゲット演算子」を参照してください。

表4-1 ソース演算子とターゲット演算子

アイコン 演算子名 説明
この画像は定数演算子のアイコンを示しています。

定数

1つの出力グループが作成されます。このグループには、1つ以上の定数属性を指定できます。

この画像は構成演算子のアイコンを示しています。

オブジェクトの構成

オブジェクト・タイプおよびコレクション・タイプを作成します。

この画像はキューブ演算子のアイコンを示しています。

キューブ

定義済のキューブを表します。

この画像はデータ・ジェネレータ演算子のアイコンを示しています。

データ・ジェネレータ

レコード番号、システムの日付、順序の値などの情報を表示します。

この画像はディメンション演算子のアイコンを示しています。

ディメンション

定義済のディメンションを表します。

この画像は拡張演算子のアイコンを示しています。

オブジェクトの拡張

オブジェクト・タイプを構成する個々の属性を取得するために、オブジェクト・タイプを拡張します。

この画像は外部表演算子のアイコンを示しています。

外部表

定義済またはインポート済の外部表を表します。

この画像はフラット・ファイル演算子のアイコンを示しています。

フラット・ファイル

定義済またはインポート済のフラット・ファイルを表します。

この画像はマテリアライズド・ビュー演算子のアイコンを示しています。

マテリアライズド・ビュー

定義済のマテリアライズド・ビューを表します。

この画像はキュー・演算子のアイコンを示しています。

キュー

定義済のアドバンスト・キューを表します。

この画像は順序演算子のアイコンを示しています。

順序

1行ごとに増分する連続番号を生成します。

この画像は表演算子のアイコンを示しています。

定義済またはインポート済の表を表します。

この画像は可変長配列イテレータ演算子のアイコンを示しています。

可変長配列イテレータ

表タイプで値を反復します。

この画像はビュー演算子のアイコンを示しています。

ビュー

定義済またはインポート済のビューを表します。


変換演算子

ソース・データを変換するには、マッピング内のデータ・フロー演算子を使用します。

表4-2に、データ・フロー演算子のアルファベット順のリストと簡単な説明を示します。これらの演算子の詳細は、第26章「データ・フロー演算子」第22章「Name and Address演算子」第23章「照合、マージ、およびデュプリケーション」

表4-2 データ・フロー演算子

アイコン 演算子名 説明
この画像はアグリゲータ演算子のアイコンを示しています。

アグリゲータ

SUMやAVGなどのデータ集計を実行し、集計されたデータを使用して行セットを出力します。

この画像はAnydataキャスト演算子のアイコンを示しています。

Anydataキャスト

Sys.AnyDataタイプのオブジェクトを主タイプまたはユーザー定義タイプに変換します。

この画像はデュプリケータ演算子のアイコンを示しています。

デュプリケータ解除

マッピングで生成されたSELECTコードにDISTINCT句を挿入して、ソース内の重複するデータを削除します。

この画像は式演算子のアイコンを示しています。

この演算子の1つの出力パラメータについて、非プロシージャ・アルゴリズムを定義するSQL式を記述できます。式テキストには、入力パラメータ名、変数名およびライブラリ・ファンクションを組み合せて使用できます。

この画像はフィルタ演算子のアイコンを示しています。

フィルタ

行セットの行を特定の条件に基づいてフィルタリングします。

この画像はジョイナ演算子のアイコンを示しています。

ジョイナ

カーディナリティの異なる複数のソースから取り込んだ複数の行セットを結合し、1つの出力行セットを生成します。

この画像は検索演算子のアイコンを示しています。

検索

表、ビュー、マテリアライズド・ビュー、外部表、キューブ、ディメンションなどの参照オブジェクトからデータを参照します。

この画像はMatch-Merge演算子のアイコンを示しています。

Match-Merge

データ品質に関する演算子で、一致するレコードを識別して単一のレコードにマージします。

この画像はName and Address演算子のアイコンを示しています。

名前とアドレス

Name and Addressソース・データのエラーや不整合を識別して修正します。

この画像はピボット演算子のアイコンを示しています。

ピボット

複数の属性の単一行を複数の行に変換します。複数の行ではなく、複数の属性間に含まれるデータを変換する場合に、この演算子を使用します。

この画像は集合演算演算子のアイコンを示しています。

集合演算

マッピングで、UNION、UNION ALL、INTERSECTおよびMINUSの演算を実行します。

この画像はソーター演算子のアイコンを示しています。

ソーター

属性を昇順または降順にソートします。

この画像はスプリッタ演算子のアイコンを示しています。

スプリッタ演算子

ブール分割条件を使用して、単一の入力行セットを複数の出力行セットに分割します。

この画像は副問合せフィルタ演算子のアイコンを示しています。

副問合せフィルタ

副問合せの結果に基づくフィルタ行。

この画像はテーブル・ファンクション演算子のアイコンを示しています。

テーブル・ファンクション

カスタム・コードを開発して入力行セットを操作し、カーディナリティが同じまたは異なる、物理表のように問合せ可能な出力行セットを戻すことができます。

この画像は変換演算子のアイコンを示しています。

変換

PL/SQLファンクションまたはプロシージャを使用して、行セット内の行の属性値データを変換します。

この画像はアンピボット演算子のアイコンを示しています。

アンピボット

複数の入力行を1つの出力行に変換します。これにより、ソース・データ内の属性ごとにグループ化されているソース行セットからソースを抽出し、そこから単一の行を作成できます。


事前/事後処理演算子

マッピングの実行前または後に処理を実行するには、事前/事後処理演算子を使用します。マッピングに対する値を指定するには、マッピング・パラメータ演算子を使用します。

表4-3に、事前/事後処理演算子とマッピング・パラメータ演算子と簡単な説明を示します。これらの演算子の詳細は、第26章「データ・フロー演算子」を参照してください。

表4-3 事前/事後処理演算子

アイコン 演算子 説明
この画像はマッピング入力パラメータ演算子のアイコンを示しています。

入力パラメータのマッピング

パラメータ値をマッピングに渡します。

この画像はマッピング出力パラメータ演算子のアイコンを示しています。

出力パラメータのマッピング

マッピングの外部に値を渡します。

この画像はマッピング後プロセス演算子のアイコンを示しています。

マッピング後プロセス

マッピングを実行した後に、ファンクションまたはプロシージャをコールします。

この画像はマッピング前プロセス演算子のアイコンを示しています。

マッピング前プロセス

マッピングを実行する前に、ファンクションまたはプロシージャをコールします。


プラッガブル・マッピング演算子

プラッガブル・マッピング演算子は、マッピング演算子の再利用可能なグループで、単一の演算子として機能します。

表4-4 に、プラッガブル・マッピング演算子と簡単な説明を示します。詳細は、第26章「データ・フロー演算子」を参照してください。

表4-4 プラッガブル・マッピング演算子

アイコン 演算子 説明
この画像はプラッガブル・マッピング演算子のアイコンを示しています。

プラッガブル・マッピング

再利用可能なマッピングを表します。

この画像はプラッガブル・マッピング入力シグネチャ演算子のアイコンを示しています。

プラッガブル・マッピング入力シグネチャ

プラッガブル・マッピングにフローする入力属性の組合せです。

この画像はプラッガブル・マッピング出力シグネチャ演算子のアイコンを示しています。

プラッガブル・マッピング出力シグネチャ

プラッガブル・マッピングからフローする出力属性の組合せです。


リアルタイム・データ・ウェアハウス演算子

この演算子ではキューを使用して変更データの取得を実行できます。ソース・オブジェクトで変更を取得して、それをターゲット表に適用するマッピングを作成できます。

表4-5 は、リアルタイム・データ・ウェアハウス演算子を示します。

表4-5 プラッガブル・マッピング演算子

アイコン 演算子 説明
この画像はLCRキャスト演算子のアイコンを示しています。

LCRキャスト

LCR(論理変更レコード)オブジェクトをその構成列に展開します。

この画像はLCRスプリッタ演算子のアイコンを示しています。

LCRスプリッタ

データ・フロー・パスに沿って別の表に変更を加えます。


変換について

変換とは、データの変換を可能にする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カスタム・ライブラリでの変換は、「パブリック変換」ノードの「カスタム」ノードで使用できます。このノードに作成したすべての変換は、ワークスペース内のすべてのプロジェクトで使用できます。パブリックOracleカスタム・ライブラリに変換を作成する方法の詳細は、「カスタム変換の定義」を参照してください。

    パブリックOracleカスタム・ライブラリに定義した変換を配布すると、その変換は、デフォルトのコントロール・センターに関連付けられたロケーションに配布されます。

変換ライブラリへのアクセス

変換はETLプロセスの様々な場所で使用できるため、Oracle Warehouse Builderを使用すると、デザイン・センターの様々な場所から変換ライブラリにアクセスできます。

変換ライブラリには、次の方法でアクセスできます。

  • 式ビルダー

    マッピングを作成するときは、ソース・データを変換する式の作成が必要になります。式ビルダー・インタフェースを使用すると、データの変換に必要な式を作成できます。式には変換を含めることができるため、Oracle Warehouse Builderを使用して、式ビルダーから変換ライブラリにアクセスできます。

    変換ライブラリは、式ビルダーの「変換」タブで使用できます。TRANSFORMLIBSの下にある「プライベート」ノードには、現行のプロジェクトのみで使用できる変換が含まれます。これらの変換は、Oracleモジュールの「変換」ノードの下に作成されます。「パブリック」ノードには、パブリックOracleカスタム・ライブラリのカスタム変換、およびパブリックOracle事前定義済ライブラリの事前定義済変換が含まれます。

  • 変換演算子の追加ダイアログ・ボックス

    マッピング・エディタの変換演算子を使用すると、パブリックOracle事前定義済ライブラリとパブリックOracleカスタム・ライブラリの両方の変換をマッピングに追加できます。この演算子は、マッピングの一部としてデータを変換する場合に使用できます。

  • ファンクション・エディタ、プロシージャ・エディタ、「ファンクションの編集」ダイアログ・ボックスまたは「プロシージャの編集」ダイアログ・ボックス

    これらのエディタの「実装」タブを使用すると、ファンクションまたはプロシージャ本体の一部となるPL/SQLコードを指定できます。PL/SQLコードで変換を使用できます。