2013-03-05 2 views
4

브랜드와 행에 행 열 변환 (그리고 초보자는 SO 포스터는 너무 조심해!)펜타 새로운 펜타 주전자/PDI

내가에서 RDBMS에서 들어오는 데이터를 변환하는 데 주전자/PDI을 사용하고 싶습니다

이 (예를 들어)이 행

 
Question1 Question2 Question3 Question4 
1/1/13  123.00  Test 1  Test 1.1 
1/2/13  124.00  Test 2  Test 1.2 
1/3/13  125.00  Test 3  Test 1.3 
1/4/13  126.00  Test 4  Test 1.4 
1/5/13  127.00  Test 5  Test 1.5 

:

 
QuestionName AnswerDate AnswerNumber AnswerString 
Question1 1/1/13  
Question1 1/2/13  
Question1 1/3/13  
Question1 1/4/13  
Question1 1/5/13  
Question2    123.00 
Question2    124.00 
Question2    125.00 
Question2    126.00 
Question2    127.00 
Question3        Test 1 
Question3        Test 2 
Question3        Test 3 
Question3        Test 4 
Question3        Test 5 
Question4        Test 1.1 
Question4        Test 1.2 
Question4        Test 1.3 
Question4        Test 1.4 
Question4        Test 1.5 

같이 희망 상기 반사

가능한 각위한 "답변 <FieldDataType> '항목이 있어야 원본 테이블의 데이터 형식 PDI로 가능합니까? 그렇다면 누군가 포인터를 제공 할 수 있습니까? Row Normaliser 단계를 사용하여 테이블을 피벗하고 새 필드를 할당하려고 시도했지만 꽤 올바르게하지 않습니다 (또는 버그 [PDI 4.4]).

+0

검사에게 샘플을 작동합니다. 그것은 작동하지만, 내가 그것을 사용해야 할 때마다, 나는 그것이 직관적 인 구성이 아닌 어떤 이유 때문에 샘플을 점검해야한다! – Codek

+0

PDI에서 자바 스크립트 노드를 사용하는 것이 편안합니까? – KLDavenport

+0

Kevin D, 둘 다 맞습니다. JS 단계에서 유형별로 필터링하고 유형을 기반으로 필드를 추가 할 수 있다고 생각하십니까? 예를 들어 주시면 감사하겠습니다. 나는 JS를 사용하는 것에 반대하지 않지만, 더 "네이티브 (native)"한 방법이 있는지 확실하지 않았다. – jriggins

답변

0

스크립팅 단계를 사용하여 입력 행의 각 열에 대한 열과 값을 포함하는 출력 행을 작성하여이 작업을 수행했습니다. 거기에서 Regex Evaluation 단계로 갔고 여러 캡처 그룹을 사용하여 값 유형을 스트림의 추가 열로 매핑했습니다. Row Normaliser를 사용하여 잠시 혼란 스러웠지만, 내가 원했던대로 정확하게 할 수는 없었습니다. 스크립팅 단계를 사용하면 성능 손실이 거의 없습니다.

0

사용하는 자바 스크립트 단계 :

trans_Status = SKIP_TRANSFORMATION; 
var row1 = createRowCopy(4); 
var row2 = createRowCopy(4); 
var row3 = createRowCopy(4); 
var row4 = createRowCopy(4); 
row1[0] = 'Question1'; 
row2[1] = 'Question2'; 
row3[2] = 'Question3'; 
row4[3] = 'Question4'; 
row1[1] = Question1; 
row2[2] = Question2; 
row3[3] = Question3; 
row4[3] = Question4; 
putRow(row1); 
putRow(row2); 
putRow(row3); 
putRow(row4); 

필드를 추가 잊지 마세요;

+0

하지만 당신이 뭔가 이상한 행동을한다고 생각합니다. – kamapcuc

0

행 정규화 기는 사용자가 비선형 성을 지정하는 순서에 매우 민감합니다.

나는 다음과 같은 규칙을 스파 스 매트릭스 입력을했고 발견 :
  1. 유형 값

    같은과 같이 그룹화해야
  2. 새로운 필드 열은 각 유형의 그룹에 대한 동일한 순서로해야합니다 예에서 당신이

    지정된 주어진 경우
  3. 유형 그룹은 가장 인구가 처음

따라서 마지막으로 적어도 인구로 구성되어야한다 6,

Fieldname Type new field 
Question1 date AnswerDate 
Question2 number AnswerNumber 
Question3 string AnswerString 
Question4 string AnswerString 

는 해당 단계에 대한보다 나은

Fieldname Type new field 
Question1 date AnswerDate 
Question3 string AnswerString 
Question2 number AnswerNumber 
Question4 string AnswerString 
관련 문제