2015-02-05 3 views
1

나는 log_table에 상태, 지역, 지구, timestamp의 열이pentaho 데이터 통합을 사용하여 고유 한 레코드를 얻는 방법

인 서버가 있습니다.

ID  state  region  district  timestamp 
--  -----  ------  --------  --------- 
1  GJ  RE056  DI137  2014-02-05 09:00:00.257 
2  CA  RE027  DI154  2014-02-04 14:00:00.183 
3  GJ  RE056  DI137  2014-12-09 16:00:00.257 

나는, MySQL은 만 매일 업데이트 기록을 SQL 서버에서 데이터를로드하는 동안 MySQL의 새로운 테이블에 삽입해서는 안 독특한 기록과 기존 데이터와 MySQL의 다른 테이블이 레코드를로드하려는해야 중복 레코드없이 새 테이블에로드하십시오. 이 문제에서 pentaho 데이터 통합을 사용하는 방법을 알려주십시오.

+0

질문이 명확하지 않습니다. 달성하고자하는 것을 보여 주거나 시도한 것을 보여주기 위해 몇 가지 샘플 데이터를 넣으십시오. – Rishu

+0

datetime 열이 없습니까? 기록이 매일 갱신된다는 것을 어떻게 확인할 수 있습니까? 이것에 대해 더 자세히 설명해주십시오. 나는 당신을 도울 수있다 –

+0

@ Marlon Abeykoon u r 답장을 보내 주셔서 감사합니다. 제가 언급 한 컬럼 타임 스탬프입니다. 데이터 타입은 datetime입니다. – SRI

답변

0

timestamp 열은 원본 데이터베이스 (SQL Server)의 last_updated_timestamp 행의 약자라고 가정합니다. 당신의 목표는 매일 변환을 실행하는 것입니다 그리고 당신은 소스 데이터베이스 만 new or updated 기록 (MySQL의) 데이터베이스를 대상으로로드 할 수있을 것으로 기대하는 경우

, 당신은 목표 데이터베이스로 timestamp를 저장해야합니다 (예 : 테이블 log_target) 및 변환 단계 수 :

  • 표 입력 (대상 DB가) : 테이블 log_target에서 MAX timestamp를 가져옵니다.
    • SELECT COALESCE(MAX(timestamp), '1970-01-01 00:00:00') AS max FROM log_target
  • 표 입력 (소스 DB는) log_table
    • 단계 설정에서 업데이트 된 데이터를 선택 : 데이터를 삽입 공정 (전 단계로부터의 데이터를 얻기 위해); 스크립트에서 변수를 대체 하시겠습니까? log_target 테이블 스토어 출력 데이터 :
    • SELECT * FROM log_table WHERE (timestamp > ?)
  • 프로세스 데이터
  • 표 출력 또는 삽입/업데이트 (대상 DB) (참). timestamp 값을 저장하는 것을 잊지 마십시오.
+0

답장을 보내 주셔서 감사합니다. 답장을 보내 주신 데 대해 감사드립니다. 타임 스탬프를 대상 데이터베이스에 저장하고 있습니다. 그것은 timestamp 컬럼을 TIMESTAMP NULL DEFAULT ON UPDATE CURRENT_TIMESTAMP로 유지해야 함을 의미합니다. – SRI

+0

아니요, timestamp 값 (target db)은 소스 db의'timestamp' 값과 일치해야합니다. 예 : 어제 당신의 예제에서 3 개의 레코드를 대상 db ('ID, state, region, district, timestamp')에로드했습니다. 최대'timestamp '는 이제 "2014-12-09 16 : 00 : 00.257"이며 목표 db에 있습니다. 지금 당신의 변환/작업이 실행됩니다. 목표 db에서 MAX'timestamp'를 얻고 "2014-12-09 16 : 00 : 00.257"이라고 봅니다. 원본 데이터베이스에서 'timestamp value> target.max' ("2014-12-09 16 : 00 : 00.257")의 모든 행을로드하여 대상 db에 저장합니다. – mzy

+0

@ 안녕하세요 mzy 감사합니다. 어제 사이에 작업 중입니다. [2014-04-06 16:45:00 TO 2015-01-19 07:41:43]의 최대 [2,113,723] 행까지 소스에서 데이터를로드했습니다. 서버 문제가있는 중간 연결이 데이터로드를 중지했습니다.다시 내가로드하려고 할 때 'PRIMARY'키에 대한 중복 항목 '2327745'와 같은 오류가 발생했습니다. 여기에 2015-01-19 07:41:45에서 현재 날짜까지 데이터로드를 시작하고 싶습니다. 내가 따라야 할 프로세스는 무엇입니까? – SRI