スター スキーマ、ファクト/デミンション テーブル、データをすばやくレポートするための select ステートメントについてよく読んだことがありますが、スター スキーマへのデータ入力の問題は私にはよそよそしいように思えます。スタースキーマデータベースにデータを「理論的に」入力するにはどうすればよいですか? ファクト テーブルを維持しながら。巨大なストアド プロシージャ内の一連の INSERT INTO ステートメントで、20 個のパラメーターが唯一のオプション (およびファクト テーブルにデータを入力する方法) です。どうもありがとう。
2 に答える
最初に寸法から始めます -- 1 つずつ。ECCD (Extract、Clean、Conform、Deliver) アプローチを使用します。
各ディメンションには、ディメンション行が表す「オブジェクト」を一意に識別する BusinessKey があることを確認してください (個人のメールなど)。
ディメンションが読み込まれたら、キー検索パイプラインを準備します。一般に、各ディメンション テーブルごとに、キー参照テーブル (BusinessKey、PrimaryKey) を用意できます。一部の設計者は、ディメンション テーブルを直接ルックアップすることを選択しますが、多くの場合、キー ルックアップはメモリに簡単にキャッシュできるため、ファクトの読み込みが高速になります。
ファクト データにも ECCD を使用します。ECC の部分はステージング領域で発生します。必要に応じて、ECC の各ステップに対して (ヘルパー) テーブルまたはフラット ファイルを選択できます。
ファクト テーブルを配信するときに、ファクト行の各 BusinessKey を、キー ルックアップ テーブルから取得した対応する PrimaryKey に置き換えます。すべての BusinessKey が対応する PrimaryKey に置き換えられたら、その行をファクト テーブルに挿入します。
時間を無駄にしないでください。ETL ツールを使用してください。Pentaho Kettle (コミュニティ エディション) は無料でダウンロードできます。これには、これを達成するために必要なものがすべて含まれています。
通常、通常のフォームと同じ方法でスター スキーマにデータを挿入することはありません。つまり、単一のトランザクション内ですべての適切なテーブルを挿入/更新するストアド プロシージャを使用します。スター スキーマは通常、読み取り専用の非正規化されたデータ モデルであることに注意してください。これは (まれに) トランザクション的に処理され、通常、既にフラットに非正規化されているデータから読み込まれます。通常、スターごとに 1 つのフラット ファイルです。
Damir が指摘しているように、通常はすべてのディメンションを読み込み (ゆっくりと変化するものなどを処理)、次にファクトを読み込み、適切な現在のディメンションに結合してディメンション ID を見つけます (ビジネス キーを使用)。