2011-11-23 36 views
6

我在SSIS中執行一些ETL以構建一些維度數據集。其中之一是日期。當爲維度生成一組日期時,我可以使用查找日期維度中的已有內容的方式進行查找,並重定向任何失敗的方法,這些方法被假定爲新日期,然後添加到表格中。從SSIS中加載的數據集中篩選出重複項

問題是我得到的數據集本身可能包含重複的日期。插入到維度表時,這會導致使用唯一日期鍵的錯誤。所以我正在尋找一種在SSIS管道中加載的數據集中篩選的方法。

我可以在初始加載日期時使用DISTINCT,但在這種情況下的日期是DATETIME。我需要稍後使用數據轉換轉換才能通過採用日期組件將其轉換爲DATE。我正在尋找獨特的日子,在DATETIME上不同的日子不會給我這樣的。

我無法像以前那樣使用SSIS查找,因爲這需要指向數據庫的連接管理器。

我可以告訴OLE DB目的地不使用批量插入忽略任何錯誤。然而,這假設唯一的錯誤將是重複的日期。

我是SSIS的新手,一直沒能找到一個轉換工具,可以讓我比較集合中的其他行。

+0

您是否有權訪問強制執行鍵?如果是這樣,您可以啓用選項'IGNORE_DUP_KEY',該選項將放棄重複的插入,而不會產生錯誤。 – JNK

+1

當您存儲日期時間時,是將時間分量置零或強制爲一個公共值?給定'2011-10-10 00:00:00.000'和'2011-10-10 12:12:12.012'這個過程應該只發送一個2011-10-10行。選擇哪一個是否重要?我們可以放棄時間組件嗎? – billinkc

回答

7

您可以使用排序轉換並選擇刪除重複項,也可以使用聚合轉換並僅使用分組依據(它或多或少像DISTINCT)。請注意,這些操作是異步的,這意味着所有行都必須在繼續之前輸入此任務,而不是同步任務只是吃飯,並在進入時將其排出緩衝區。