我有一個SSIS ETL包,可將CSV文件加載到具有100列以上記帳數據的登臺表中,我們正在根據此數據創建數據倉庫。從登臺表填充數據倉庫維度的有效方法?
從數據,下面我們可以找出打造我們的「產品」維度所需的列的列超過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 =計算r和product_description = power pc。
登臺表有300萬條記錄,我如何從登臺表填充我的維度,以便稍後在填充事實表時查找它。
尺寸爲1型尺寸,產品ID#1將始終爲「電腦」,「電源電腦」。
以前我一直在使用SELECT DISTINCT「產品ID」,「PRODUCT_NAME」,「PRODUCT_DESCRIPTION」只得到臨時表中不同的值,並加載到尺寸,但我發現這個方法是徵稅填充維度時的資源系統。
是否有更好,更高效(性能明智)的方式來做到這一點? (使用TSQL或SSIS)..
我們正在運行SQL 2008 SP3 ..計劃很快升級到SQL 2012。
你是否每次加載整個維度?據推測,你可以忽略已經存在的產品?如果是這樣,你可以添加一個'IsLoaded'標誌或者類似於你的登臺表並且將這些產品從你的查詢中完全排除。即使是「WHERE NOT EXISTS」檢查維度也可能有幫助。但目前尚不清楚您是如何從暫存表加載維度的。如果你能提供更多細節,可以有人提供幫助。 – Pondlife 2013-03-14 14:20:03