2010-08-13 6 views
1

저는 타입 -2 (SCD) 테이블을 만들기 위해 펜타 호 데이터 통합 ​​/ 팬을 사용하려고합니다. 너무 좋아 지금까지"차원 조회/업데이트": type-2 SCD date_from value?

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를 통해 내 데이터가 처음 단계 실행 후

, 나는처럼 보이는 유형 2 표를 얻었다. 그런 후에 나는, 새로운 데이터를 가지고 거기에 내 원래의 테이블을 업데이트하고, 같은 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"("Start date of transformation")도 시도 했었지만, 이전의 999 시간 (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

답변

1

현재 시스템 시간으로 새 필드 또는 변수를 변환에 추가하려고합니다.

여러 가지 방법이 있으므로 권장할만한 방법이 있습니다. 작업 시작 부분에 set_current_time이라는 새 변환을 추가하십시오. 이 변환은 현재 시스템 시간을 가져옵니다 (Table Input 단계를 사용하여 데이터베이스에서 가져올 수 있음). 그런 다음 Set Variable을 사용하여 현재 시간을 작업 전체에서 사용할 수있는 변수로 설정합니다.

여기에서 조회 및 수식/스크립트 조합을 사용하여 변수 또는 이전에 사용 가능한 날짜를 date_from 필드로 사용해야하는 경우 쉽게 찾을 수 있습니다.