データ ウェアハウスでディメンション テーブルの設定が完了したら、いつでもファクト テーブルを設定できます。OLTP データベース内のテーブルにある数値的な測定データをファクト テーブルに設定します。
重要: ファクト テーブルの設定前に、ディメンション テーブルを設定する必要があります。
以下の手順は、Spectrum™ Technology Platformを使用してデータ ウェアハウス内にファクト テーブルを設定する方法を記述したものです。この手順では、ソース データベース内のテーブルからソース データを読み込むデータフローを作成し、ソース テーブルのナチュラル キーをディメンション テーブルのサロゲート キーで置き換え、サロゲート キーを含む更新されたレコードとソース テーブルのファクト データをファクト テーブル内にロードします。
-
Management Console で、データ ソースおよびデータ ウェアハウスへの接続を作成します。
-
Enterprise Designer で、 を選択します。
-
ファクト テーブルに書き込むデータのソースに基づいて、適切なステージをキャンバス上にドラッグします。
- データベースのデータを使用してテーブルを設定するには、[Read from DB] ステージをキャンバス上にドラッグします。
- フラット ファイルのデータを使用してテーブルを設定するには、[Read from File] ステージをキャンバス上にドラッグします。
- 可変形式ファイルのデータを使用してテーブルを設定するには、[Read from Variable Format File] ステージをキャンバス上にドラッグします。
- XML ファイルのデータを使用してテーブルを設定するには、[Read from XML] ステージをキャンバス上にドラッグします。
-
キャンバス上に配置したソース ステージをダブルクリックし、ファクト テーブルに対して設定するデータのソースを指すようにそのステージを設定します。
注: 通常、ファクト テーブルを設定するデータフローでは、ファイルではなく、データベースからデータを読み込みます。これは非常に一般的なシナリオなので、この手順の残り部分の例では、Read from DB を使用します。
-
[Broadcaster] ステージをキャンバス上にドラッグし、ソース ステージをこのステージに接続します。
すると、データフローは次のようになります。
-
データ ウェアハウス内のディメンション テーブルごとに [Query DB] ステージを 1 つキャンバス上にドラッグし、それらのステージを [Broadcaster] ステージに接続します。
例えば、データ ウェアハウス内にディメンション テーブルが 4 つある場合は、4 つの Query DB ステージをキャンバス上にドラッグします。データフローは次のようになります。
Query DB ステージは、データ ソースのナチュラル キーを使用して各ディメンションのサロゲート キーを検索するために使用されます。その後、ファクト テーブル内にロードされる各レコードのナチュラル キーがサロゲート キーで置き換えられます。
ヒント: ステージの名前は、各ステージによるクエリの実行対象テーブルがわかりやすくなるように変更できます。
-
データ ソースのナチュラル キーのそれぞれについてサロゲート キーの検索を行うように各 Query DB ステージを設定します。これを行うには、次の手順を実行します。
-
[接続] フィールドで、データ ウェアハウスへの接続を指定します。
-
[テーブル/ビュー] フィールドで、このステージによってクエリを実行するディメンション テーブルを選択します。
-
[WHERE] フィールドに、適切なデータフロー フィールドの値に基づいてサロゲート キーを検索する WHERE 文を記述します。
例えば、次の例は description
列の値がデータ ソースの product_name
フィールドの値に一致するディメンション テーブル内のレコードを探すことにより、製品のサロゲート キーを検索します。
description=${product_name}
-
[含める] 列で、サロゲート キーを含むデータベース列を選択します。
例えば、製品名のサロゲート キーを検索する Query DB ステージは次のようになります。
この例のクエリは、prod_dimension
テーブル内に、description
列の値がproduct_name
データフロー フィールドの値に一致するレコードを探すことにより、製品キーを検索します。このステージは、product_key
フィールドを返し、このフィールドをデータフローに追加します。これは Include 列のボックスにチェックが入っていることからわかります。
-
[Record Combiner] ステージをキャンバス上にドラッグし、すべての [Query DB] ステージをこのステージに接続します。
すると、データフローは次のようになるはずです。
-
[Write to DB] ステージをキャンバス上にドラッグし、このステージを [Record Combiner] ステージに接続します。
すると、データフローは次のようになるはずです。
-
レコードをファクト テーブルに書き込むように Write to DB ステージを設定します。これを行うには、次の手順を実行します。
-
[接続] フィールドで、データ ウェアハウスへの接続を指定します。
-
[テーブル/ビュー] フィールドで、このステージによってクエリを実行するファクト テーブルを選択します。ファクト テーブルがまだデータ ウェアハウス内にない場合は、[テーブルの作成] をクリックしてデータ ウェアハウスにファクト テーブルを作成します。
-
ファクト テーブルに書き込むフィールドのそれぞれについて、[含める] 列のボックスにチェックを入れます。
-
[実行時] タブでは、デフォルトで [挿入] オプションが書き込みモードに対して選択されています。通常、ファクト テーブルの設定は挿入モードで実行されるので、このオプションは選択されたままにしておいて構いません。
-
データフローを保存して実行します。
ソース データをディメンション テーブルのキーで置換する例
次のレコードを考えます。
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
日付、製品名、および顧客のナチュラル キーがサロゲート キーで置き換えられていることに注意してください。