ファクト テーブルの更新

この手順は、ソース データベースまたはソース ファイルからデータを読み込んでそのデータを使用してデータ ウェアハウス内のファクト テーブルを更新するデータフローの作成方法を記述したものです。

  1. Enterprise Designer で、[ファイル] > [新規作成] > [データフロー] > [ジョブ] を選択します。
  2. ファクト テーブルに書き込むデータのソースに基づいて、適切なステージをキャンバス上にドラッグします。
    • データベースのデータを使用してテーブルを設定するには、[Read from DB] ステージをキャンバス上にドラッグします。
    • フラット ファイルのデータを使用してテーブルを設定するには、[Read from File] ステージをキャンバス上にドラッグします。
    • 可変形式ファイルのデータを使用してテーブルを設定するには、[Read from Variable Format File] ステージをキャンバス上にドラッグします。
    • XML ファイルのデータを使用してテーブルを設定するには、[Read from XML] ステージをキャンバス上にドラッグします。
    注: データベースではなくファイルからデータを読み込む場合は、ファクト テーブルに追加する新しいレコードのみがそのファイルに含まれていて、ファクト テーブルに既に存在するレコードは含まれていないことを確認します。データベースからデータを読み込む場合は、レコードをフィルタリングするためのクエリをこの手順の後のステップで定義することになります。
  3. キャンバス上に配置したソース ステージをダブルクリックし、ファクト テーブルに対して設定するデータのソースを指すようにそのステージを設定します。
    • Read from DB の設定については、Read From DBを参照してください。
    • Read from File の設定については、Read From Fileを参照してください。
    • Read from Variable Format File の設定については、Read from Variable Format Fileを参照してください。
    • Read from XML の設定については、Read From XMLを参照してください。
  4. データベースからデータを読み込む場合は、新しいレコードのみがファクト テーブルに追加されるように、レコードをフィルタリングします。この操作は、ファクト テーブルの最後の更新以降に変更されたレコードのみを読み込むための SQL SELECT ステートメントを定義することで実行できます。
  5. [Broadcaster] ステージをキャンバス上にドラッグし、ソース ステージをこのステージに接続します。

    すると、データフローは次のようになります。

  6. データ ウェアハウス内のディメンション テーブルごとに [Query DB] ステージを 1 つキャンバス上にドラッグし、それらのステージを [Broadcaster] ステージに接続します。

    例えば、データ ウェアハウス内にディメンション テーブルが 4 つある場合は、4 つの Query DB ステージをキャンバス上にドラッグします。データフローは次のようになります。

    Query DB ステージは、データ ソースのナチュラル キーを使用して各ディメンションのサロゲート キーを検索するために使用されます。その後、ファクト テーブル内にロードされる各レコードのナチュラル キーがサロゲート キーで置き換えられます。

    ヒント: ステージの名前は、各ステージによるクエリの実行対象テーブルがわかりやすくなるように変更できます。
  7. データ ソースのナチュラル キーのそれぞれについてサロゲート キーの検索を行うように各 Query DB ステージを設定します。これを行うには、次の手順を実行します。
    1. [接続] フィールドで、データ ウェアハウスへの接続を指定します。
    2. [テーブル/ビュー] フィールドで、このステージによってクエリを実行するディメンション テーブルを選択します。
    3. [WHERE] フィールドに、適切なデータフロー フィールドの値に基づいてサロゲート キーを検索する WHERE 文を記述します。

      例えば、次の例は description列の値がデータ ソースの product_name フィールドの値に一致するディメンション テーブル内のレコードを探すことにより、製品のサロゲート キーを検索します。

      description=${product_name}
    4. [含める] 列で、サロゲート キーを含むデータベース列を選択します。

    例えば、製品名のサロゲート キーを検索する Query DB ステージは次のようになります。

    この例のクエリは、prod_dimensionテーブル内に、description 列の値がproduct_name データフロー フィールドの値に一致するレコードを探すことにより、製品キーを検索します。このステージは、product_keyフィールドを返し、このフィールドをデータフローに追加します。これは Include 列のボックスにチェックが入っていることからわかります。

  8. [Record Combiner] ステージをキャンバス上にドラッグし、すべての [Query DB] ステージをこのステージに接続します。

    すると、データフローは次のようになるはずです。



  9. [Write to DB] ステージをキャンバス上にドラッグし、このステージを [Record Combiner] ステージに接続します。

    すると、データフローは次のようになるはずです。

  10. レコードをファクト テーブルに書き込むように Write to DB ステージを設定します。これを行うには、次の手順を実行します。
    1. [接続] フィールドで、データ ウェアハウスへの接続を指定します。
    2. [テーブル/ビュー] フィールドで、このステージによってクエリを実行するファクト テーブルを選択します。ファクト テーブルがまだデータ ウェアハウス内にない場合は、[テーブルの作成] をクリックしてデータ ウェアハウスにファクト テーブルを作成します。
    3. ファクト テーブルに書き込むフィールドのそれぞれについて、[含める] 列のボックスにチェックを入れます。
    4. [実行時] タブでは、デフォルトで [挿入] オプションが書き込みモードに対して選択されています。通常、ファクト テーブルの設定は挿入モードで実行されるので、このオプションは選択されたままにしておいて構いません。