2017-09-20 6 views
0

날짜 범위의 행을 해당 날짜 범위 내의 모든 요일에 대해 여러 행으로 분할해야하는 시나리오가 있습니다. 누구든지 인포매티카 파워 센터에서이 시나리오에서 타겟 (첨부 된대로)을 얻는 방법을 알고 있습니까?시작 날짜와 종료 날짜가있는 범위 내에서 날짜 범위 분할

SOURCE

code  start date   end date 
ADMISSION 01/01/2017 02:05:11 01/01/2017 04:20:53 
TRANSFER 01/01/2017 04:20:54 01/03/2017 18:30:48 
DISCHARGE 01/03/2017 18:30:49 01/03/2017 20:18:11 

TARGET

code  start date   end date 
ADMISSION 01/01/2017 02:05:11 01/01/2017 04:20:53 
TRANSFER 01/01/2017 04:20:54 01/01/2017 11:59:59 
TRANSFER 01/02/2017 00:00:00 01/02/2017 11:59:59 
TRANSFER 01/03/2017 00:00:00 01/03/2017 18:30:48 
DISCHARGE 01/03/2017 18:30:49 01/03/2017 20:18:11 

사전에 감사합니다!

+0

답장을 보내 주셔서 감사합니다. 새 날짜 열을 만들고 시작 날짜와 끝 날짜의 각 날짜에 대한 행을 추가하는 소스 한정자에 SQL을 추가했습니다. 모든 새로운 행에는 시작 및 종료 날짜 시간이 실제 시작 및 종료 시간으로 표시되므로 새 날짜 열과 비교하여 날짜를 조정하고 시작 날짜가 00:00:00과 연결되는 표현식을 새로운 날짜 및 23과 같지 않게 추가했습니다. : 59 : 여기에 새로운 날짜 – Subas

+0

같지 않은 종료 날짜 59은 SQ 쿼리입니다 : TMP DT에서 ( 선택 캐스트로 TMP (DT)와 ('20141001' 조합) 날짜 시간 등 모든 선택 DT + 1 = 캐스트 (A.start_date로서 날짜) 및 캐스트 (날짜로 dt) <= 캐스트 (A.end_date a 날짜) 옵션 (최대 재귀 0) – Subas

답변

0

가장 쉬운 방법은 날짜 기록의 날짜가 시작 날짜보다 크거나 같고 끝수 이하인 덕분에 각 레코드 (소스 한정자에서 SQL 결합)에 가입하는 날짜 테이블을 만드는 것입니다 날짜의 날. 나중에 맵핑에서 여분의 로직을 추가하여 시작 시간 필드에서 시작 시간을 선택하십시오. 그렇지 않은 경우 datetablestarttime과 동일하고 종료 시간도 동일합니다.

0

자바 변환으로 시도하십시오! 시작 날짜와 종료 날짜의 차이점을 찾으십시오. Java 변환에서 rowgen을 사용하여 새 레코드를 작성하십시오. 희망 사항입니다.

0

PowerCenter에서 행 곱하기에 대한 기본 지원이 없습니다. 따라서 해결 방법이 필요합니다. 날짜 차이를 계산하고이를 사용하여 행을 곱하십시오. 옵션은 다음과 같습니다

  • 사용하는 Java 변환은 [1,2,2,3,3,3, ...] 같은 데이터 더미 테이블을 만들고 사용할 여분의 행 (here's an example)
  • 를 생성하는 날짜 차이에 가입하십시오. 행 수가 빠르게 커지고 큰 수에는 권장되지 않음을 염두에 두십시오.
  • 주어진 입력에 대해 적절한 행 수를 반환하는 활성, 캐시되지 않은 조회를 생성하십시오. * 당신은 myNumber 열 유형의 BIGINT과 함께 사용해, myNumbers 테이블을 생성하고 X 1의 순서로 한 번 채울 가정

*, 당신은을 사용할 수있는 각 처리 된 행에 대해 행이 필요한 번호를 가져 오기 위해 SQL 쿼리 재 지정을 사용하여 조회 재 지정을위한 다음 조회 : SELECT 1 FROM myNumbers WHERE myNumber = ?in_lookup_port_name?. 조건으로 1의 값을 가진 더미 포트를 사용하십시오.