ゆっくりまたは予測できないほど変化するディメンションデータは、Slowly Changes Dimensions(SCD)分析でキャプチャされます。データウェアハウス環境では、ディメンションテーブルには、ディメンションデータと呼ばれる各レコードやその他の情報を一意に識別する主キーがあります。
さまざまなSCDタイプのすべての更新方法は、IRICoSortのSortCLプログラムを使用して実行されます。 IRI Voracityには、SortCLプログラムの実行時に使用されるSCDジョブスクリプトの作成を支援するウィザードがあります。ほとんどのSCDタイプは、完全外部結合を使用して、元のデータソースのレコードを、それぞれのキーの同等化に基づいて更新されたソースのレコードと照合します。ただし、タイプ4は、並べ替えを使用して更新を実行します。
タイプ4SCD
タイプ4モデルは、タイプ2のモデルと似ています。違いは、2つのテーブルまたはファイルが維持されることです。1つは現在のコスト用で、もう1つはコストの履歴レコードを保持します。新しい現在のレコードがマスターに追加されると、これらの新しいレコードは通常、同時に履歴に追加されます。
フィールド定義は、更新、履歴、およびマスターファイルまたはテーブルで同じです。更新と履歴のレコードを一緒に並べ替えます。 ProductCodeごとに1つのレコードのみを持つ新しいマスターが作成されます そのレコードが最新のものになります。履歴には、各 ProductCodeのすべてのレコードが含まれます 更新ソースからのものを含みます。
開始マスターテーブルは、タイプ1の例の開始マスターと同じで、次のような値になります。
ProductCode | StartDate | |
---|---|---|
C123 | 125.50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
J245 | 450.50 | 20110430 |
S022 | 98.75 | 20110515 |
すべての更新データの開始日はすべて同じになります。 update.datソースには、次の値のレコードが含まれています。
ProductCode | StartDate | |
---|---|---|
F112 | 2425.00 | 20120701 |
J245 | 550.50 | 20120701 |
M447 | 101.75 | 20120701 |
S022 | 101.75 | 20120701 |
以下の開始履歴ソースは、タイプ2の開始マスターに似ています。したがって、タイプ4はタイプ1とタイプ2の組み合わせであり、マスターはタイプ1マスターと同じであり、履歴はタイプ2マスターと同じです。
ProductCode | StartDate | |
---|---|---|
C123 | 125.50 | 20110228 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
G101 | 21.25 | 20110501 |
J245 | 450.50 | 20110430 |
J245 | 425.25 | 20101001 |
J245 | 385.25 | 20100215 |
S022 | 98.75 | 20110515 |
IRI Workbenchには、ディメンションファイルとテーブルを更新するためのスクリプトの作成を支援するVoracityウィザードがあります。このウィザードは、ナビゲーションバーの[Voracity]ドロップダウンにあります。まず、SCDタイプを選択します。次に、更新の処理に使用されるソースを選択するウィンドウが表示されます。
次の画面では、キーを選択して並べ替えを設定します。 2つのキーがあります: ProductCode 次にStartDate 。 ProductCodeでグループ化しています 、ただし、 StartDateの降順で並べ替える必要もあります。 各ProductCode内 グループ化。これは、各 ProductCodeの最新のレコードをフィルタリングできるようにするためです。 新しいマスターにグループ化します。
StartDateを作成するには 降順で並べ替えるキー、そのキーを選択してから、キーの編集を選択します 。これにより、次の画面が表示されます。
方向のドロップダウン 降順を選択します 。
並べ替えのジョブスクリプトは次のとおりです。
/INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/SCD4/history4.dat /PROCESS=DELIMITED /ALIAS=history4 /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INFILE=C:/IRI/CoSort95/workbench.orig/workspace/SCD/update.dat /PROCESS=DELIMITED /ALIAS=update /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /SORT /KEY=(PRODUCTCODE, TYPE=ASCII) /KEY=(STARTDATE, DESCENDING, TYPE=ASCII) /OUTFILE=history4.dat # This file will contain all the records from both inputs /PROCESS=DELIMITED /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /OUTFILE=master4.dat # Include only one record for each ProductCode /PROCESS=DELIMITED /FIELD=(PRODUCTCODE, TYPE=ASCII, POSITION=1, SEPARATOR=",", FRAME='\"') /FIELD=(COST, TYPE=NUMERIC, POSITION=2, SEPARATOR=",", FRAME='\"') /FIELD=(STARTDATE, TYPE=ASCII, POSITION=3, SEPARATOR=",", FRAME='\"') /INCLUDE WHERE PRODUCTCODE
以下は、SortCLを使用して上記のジョブスクリプトを実行することによって生成された更新されたマスターです。値は、タイプ1の更新で生成されたものと同じです。
ProductCode | StartDate | |
---|---|---|
C123 | 125.50 | 20110228 |
F112 | 2425.00 | 20120701 |
G101 | 19.25 | 20110930 |
J245 | 550.50 | 20120701 |
M447 | 139.25 | 20120701 |
S022 | 101.75 | 20120701 |
履歴ファイルには、以前のすべてのレコードと、更新ファイルの新しいレコードが含まれています。
ProductCode | StartDate | |
---|---|---|
C123 | 125.50 | 20110228 |
F112 | 2425.00 | 20120701 |
F112 | 2365.00 | 20120101 |
G101 | 19.25 | 20110930 |
G101 | 21.25 | 20110501 |
J245 | 550.50 | 20120701 |
J245 | 450.50 | 20110430 |
J245 | 425.25 | 20101001 |
J245 | 385.25 | 20100215 |
M447 | 101.75 | 220120701 |
S022 | 101.75 | 20120701 |
S022 | 98.75 | 20110515 |