ファクト テーブルの設定

データ ウェアハウスでディメンション テーブルの設定が完了したら、いつでもファクト テーブルを設定できます。OLTP データベース内のテーブルにある数値的な測定データをファクト テーブルに設定します。

重要: ファクト テーブルの設定前に、ディメンション テーブルを設定する必要があります。

以下の手順は、Spectrum™ Technology Platformを使用してデータ ウェアハウス内にファクト テーブルを設定する方法を記述したものです。この手順では、ソース データベース内のテーブルからソース データを読み込むデータフローを作成し、ソース テーブルのナチュラル キーをディメンション テーブルのサロゲート キーで置き換え、サロゲート キーを含む更新されたレコードとソース テーブルのファクト データをファクト テーブル内にロードします。

  1. Management Console で、データ ソースおよびデータ ウェアハウスへの接続を作成します。
  2. Enterprise Designer で、[ファイル] > [新規作成] > [データフロー] > [ジョブ] を選択します。
  3. ファクト テーブルに書き込むデータのソースに基づいて、適切なステージをキャンバス上にドラッグします。
    • データベースのデータを使用してテーブルを設定するには、[Read from DB] ステージをキャンバス上にドラッグします。
    • フラット ファイルのデータを使用してテーブルを設定するには、[Read from File] ステージをキャンバス上にドラッグします。
    • 可変形式ファイルのデータを使用してテーブルを設定するには、[Read from Variable Format File] ステージをキャンバス上にドラッグします。
    • XML ファイルのデータを使用してテーブルを設定するには、[Read from XML] ステージをキャンバス上にドラッグします。
  4. キャンバス上に配置したソース ステージをダブルクリックし、ファクト テーブルに対して設定するデータのソースを指すようにそのステージを設定します。
    • 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を参照してください。
    注: 通常、ファクト テーブルを設定するデータフローでは、ファイルではなく、データベースからデータを読み込みます。これは非常に一般的なシナリオなので、この手順の残り部分の例では、Read from DB を使用します。
  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. [実行時] タブでは、デフォルトで [挿入] オプションが書き込みモードに対して選択されています。通常、ファクト テーブルの設定は挿入モードで実行されるので、このオプションは選択されたままにしておいて構いません。
  11. データフローを保存して実行します。

ソース データをディメンション テーブルのキーで置換する例

次のレコードを考えます。

March 28 2013,Parsley Garlic Pasta,Mile High Gourmet Market,78.35

この例では、日付フィールドの後に、製品名 (Parsley Garlic Pasta)、顧客 (Mile High Gourmet Market)、数量 (78.25) が続いています。データ ウェアハウスには、日付、製品名、および顧客の各ディメンション テーブルがあります。そのため、レコード内のナチュラル キーは各ディメンション テーブルのサロゲート キーで置き換える必要があります。これを実現するために、データフローは 3 つの Query DB ステージを持つことになります。それぞれ、日付、製品名、および顧客のサロゲート キーを検索するステージです。

各 Query DB には、サロゲート キーを検索する WHERE文があります。

これらの検索の結果、ファクト テーブルへの書き込みが行われたときのレコードは次のようになります。

711,1,15,78.35

日付、製品名、および顧客のナチュラル キーがサロゲート キーで置き換えられていることに注意してください。