sql >> データベース >  >> RDS >> Database

ゆっくりと変化する寸法(SCD)の概要

    ディメンションは、情報のコレクションを分類する構造であり、その情報に関する質問に対する有意義な回答が得られるようにします。データ管理およびデータウェアハウスのディメンションには、比較的静的なデータが含まれています。ただし、このディメンションデータは、時間の経過とともに予測できない間隔でゆっくりと変化する可能性があります。これらのタイプのディメンションデータは、Slowly Changes Dimensions(SCD)と呼ばれます。

    データウェアハウス環境では、ディメンションテーブルには、ディメンションデータと呼ばれる各レコードやその他の情報を一意に識別する主キーがあります。主キーは、このキーを使用してファクトテーブルにリンクします。したがって、現在のデータと履歴データを更新および処理するためのモデルを用意することが重要です。タイプによって知られている認識されたモデルがあります:

    • タイプ1–このモデルでは、古い現在の値を新しい現在の値で上書きします。履歴は保持されません。
    • タイプ2–現在の記録と履歴の記録は、同じファイルまたはテーブルに保持および維持されます。
    • タイプ3–現在のデータと履歴データは同じレコードに保持されます。ユーザーは、レコードに保持する履歴の量を決定します。
    • タイプ4–このモデルでは、現在のデータは2つの異なるテーブルに保持されます。 1つは現在のデータ用で、もう1つはすべての履歴データを含みます。
    • タイプ6–このモデルは、タイプ1、タイプ2、およびタイプ3のハイブリッドです。

    さまざまなSCDモデルのすべての更新方法は、IRICoSortまたはIRIVoracityのSortCLプログラムを使用して実行できます。 Voracityは、これらのプログラムを自動的に構築するための単一のエンドツーエンドのジョブ作成ウィザードも提供するようになりました。下記参照。ほとんどのタイプは、完全外部結合を使用して、マスターデータソースのレコードを更新ソースのレコードと照合します。これは、それぞれの一意のキーを同等にすることに基づいています。一致するレコードは、マスターで更新する必要があります。一致するものがない更新ソースのレコードをマスターに追加する必要があります。

    さまざまなSCDタイプに関する私の記事には、ファイル内のソースデータまたは入力データが示され、マスターファイルの更新に使用されるSortCLスクリプトが示されています。テーブルは、これらのスクリプトのソースになることもできます。

    各例では、不規則な間隔で変化する製品コストを維持するディメンションソースを更新する手順について説明します。キーフィールドまたは列はProductCodeです。すべてのソースマスターファイルには、次のデータが含まれます。

    master1.datソースには次のものが含まれます:

    コスト
    ProductCode StartDate
    C123 125.50 20110228
    F112 2365.00 20120101
    G101 19.25 20110930
    J245 450.50 20110430
    S022 98.75 20110515

    更新データはすべて同じ開始日を持ちます。更新ソースには次のデータが含まれています:

    コスト
    ProductCode StartDate
    F112 2425.00 20120701
    J245 550.50 20120701
    M447 101.75 20120701
    S022 101.75 20120701

    SCDレポートについては、こちらのIRIWebサイトでも説明されています。 SCDに固有の次の記事を参照してください:タイプ1、タイプ2、タイプ3、タイプ4、およびタイプ6。

    新しいSCDグラフィカルウィザード

    Voracityユーザーは、専用のジョブ作成ウィザードを使用して、Eclipse上に構築されたIRI Workbench GUIでSCDタイプ1、2、3、4、および6についてレポートできるようになりました。ウィザードは、並べ替え、式の評価、集計、新しい書式設定、暗号化などの統合もサポートしています。

    ジョブを設定し、ウィザードでSCDタイプを選択した後、マスタデータと更新情報を指定します。その後、ターゲットのマッピングを指定し、一致したソースフィールドに沿ってフィールドを配置し、必要に応じてコンボボックスを使用して、現在および過去のフィールドセットを操作します。 [ソースの結合]ページで指定された情報を結合すると、適切なスクリプトが作成され、図表化、実行、変更、または共有できるようになります。

    上記のタイプに関連する記事は、Voracityの新しいSCDウィザードがこれらのジョブを自動作成する方法を反映するように更新されます。


    1. MySQLでGroupBy句を使用して行をグループ化する

    2. SQL ServerのSYSDATETIME()とGETDATE():違いは何ですか?

    3. mysqldumpのベストプラクティス:パート2 –移行ガイド

    4. MySQL Select Top N Rows