2014-10-29 62 views
0

使用SCD任務嚮導,我無法設置UpdateChangingAttributeHistory屬性,它的默認值爲false。我可以使用高級編輯器將其設置爲true,但這不會更新生成的流,因此行爲也沒有改變。如果不重新運行嚮導(將UpdateChangingAttributeHistory設置爲false),我需要做什麼才能觸發SSIS重新生成流程?SSIS 2012 - 設置緩慢變化維度UpdateChangingAttributeHistory爲真

我的目標是有一個類型2 scd,當發生更改時更新事實表。

+0

在Slowly Changing Dimension屬性窗口中,你沒有'UpdateChangingAttributeHistory'屬性?什麼阻止你將它從假變爲真。可能是我不明白你的問題。 – 2014-10-29 10:10:38

+0

的確我能做到!但這似乎並沒有改變ssis的行爲。我可能會誤解此屬性的功能,但在啓用此功能後運行它後,我無法看到事實表的更改。 – 2014-10-29 10:14:25

+1

我總是在SSIS SCD任務中掙扎。最近,我認爲SCD在性能方面表現最差。現在我們使用一組LookUp任務,OLEDB任務來實現SCD功能。只是增加,而不是你的問題的答案。 – 2014-10-29 10:16:44

回答

1

我無法解釋爲什麼UpdateChangingAttributeHistory複選框在嚮導中灰顯 - 這聽起來很糟糕。但我可以告訴你它做了什麼。如果這是假的,在默認情況下,它會改變OLE DB命令的WHERE子句中的「更改屬性更新輸出」到這樣的事情:

... WHERE [SomeKeyColumn] = ? AND [SCD_EndDate] IS NULL 

如果你不使用的日期,這將是什麼如[CurrentRowFlag] ='Y'

如果將該屬性設置爲true,則會刪除WHERE子句的該部分,以便更新包含Type 1更改的所有行,即當前和歷史。就是這樣。這就是爲什麼如果您不重新生成組件,該標誌不起作用,因爲OLE DB命令沒有改變。

因此,您可以在更改屬性更新輸出中手動進行更改,但如果將來重新生成SCD組件,那些更改可能會丟失。
正如評論中指出的那樣,值得考慮使用其他組件創建此功能以提高性能和可維護性,尤其是如果它開始時很有趣。

+0

聽起來對我來說很合理!我想我誤解了結果會是什麼:) – 2014-10-29 15:05:52