会計データの 100 列以上を含むステージング テーブルに CSV ファイルを読み込む SSIS ETL パッケージがあり、このデータからデータ ウェアハウスを作成しています。
100 列以上のデータから、「製品」ディメンションを作成するために必要な列を以下で特定できます...
サンプルデータ..
product_id,product_name,product_description
'1','computer','power pc'
'2','case','atx case'
'1','computer','power pc'
'3','cpu'intel'
'3','cpu'intel'
だから、私がしたことは、DIM.PRODUCTテーブルを作成したことです...
CREATE TABLE DIM.OFFICE (
"product_key" int IDENTITY (1,1) NOT NULL, -- Surrogate Key
"product_id" varchar(150) NOT NULL, -- Business Key
"product_name" varchar(150) NOT NULL,
"product_Description" varchar(150) NOT NULL,
)
サンプル データの「製品 ID」が製品を一意に識別することがわかっているため、#1 の製品 ID は常に product_name = computer、product_description = power pc になります。
ステージング テーブルには 300 万件のレコードがあります。後でファクト テーブルに入力するときに参照できるように、ステージング テーブルからディメンションを入力するにはどうすればよいですか。
ディメンションはタイプ 1 ディメンションであり、製品 ID #1 は常に「コンピューター」、「パワー PC」になります。
以前は SELECT DISTINCT "product id","product_name","product_description" を使用して、ステージング テーブルから個別の値のみを取得し、それをディメンションにロードしていましたが、この方法はリソースのシステムに負担をかけていることがわかりましたディメンションを入力するとき。
これを行うためのより良い、より効率的な(パフォーマンスに関する)方法はありますか?(TSQL または SSIS を使用)。
SQL 2008 SP3 を実行しています。近日中に SQL 2012 にアップグレードする予定です。