2010-08-13 47 views
1

我正在嘗試使用Pentaho數據集成/ Pan來創建類型2(SCD)表。「尺寸查找/更新」:類型2 SCD的date_from值?

後,我跑了通過DimensionLookup我的數據步驟的第一時間,我得到了一個2型表看起來像:

PKID version date_from    date_to    MyPK Field1 Field2 ... 
150 1  1900-01-01 00:00:00 2199-12-31 23:59:59 1  "X"  "Y"  ... 

到目前爲止好。再後來我得到了新的數據,更新了我原來的表給它,並運行它通過相同的DimensionLookup一步,所有的修改記錄看起來像:

PKID version date_from    date_to    MyPK Field1 Field2 ... 
150 1  1900-01-01 00:00:00 2010-06-24 03:45:00 1  "X"  "Y"  ... 
151 2  2010-06-24 03:45:00 2199-12-31 23:59:59 1  "X2" "YYY" ... 

這看起來不錯,太。但對於自上次加入到我的數據集的記錄,它們會添加date_from ='1900-01-01 00:00:00'。 (後來想起來,我的初始加載使用date_from ='1900-01-01 00:00:00'也有點奇怪。)

我讓它使用默認開始日期,它聲稱是系統當前的日期時間,儘管我也嘗試過「start_trans」(「開始變換日期」),除了使用9小時前的時間戳(在1899-12-31)之外,它做了同樣的事情。

我看不出如何在所有新記錄中使用1900,這是有道理的:你不能分辨什麼時候添加,因爲它看起來像每一個新記錄自開始時就已經存在。我甚至在Kimball的書中查找了類型2,雖然它不是超顯式的,但它似乎表明新插入的值應該從它們開始有效的日期開始。

這是PDI中的錯誤嗎?有沒有解決方法?我只是用它錯了嗎?我誤解了2型的整個觀點嗎?

謝謝!

+0

在Pentaho壺中使用維度查找/更新步驟:http://www.joyofdata.de/blog/handling-scd-type-2-using-dimension-lookup-update-step-in-pentaho-kettle/ – Raffael 2014-06-03 08:40:00

回答

1

您希望在當前系統時間內向變換中添加新的字段或變量。

有幾種方法可以做到,所以我只是建議一個。 在作業的開始部分添加一個名爲set_current_time的新變換。此轉換將獲得當前系統時間(您可以使用步驟Table Input從數據庫中獲取它)。然後使用Set Variable將當前時間設置爲可在整個作業中使用的變量。

從這裏,通過查找和公式/腳本的組合,可以很容易地找到是否需要使用變量或以前可用的日期作爲date_from字段。