0

PostgreSQL에 'TICKETS'테이블이 있습니다.이 테이블을 채우기 위해 Pentaho를 사용하여 ETL 작업을 수행합니다. 사용자가 변경하고 결과가이 테이블에 반영되는 GUI도 있습니다. 테이블에 필드는 다음과 같습니다Update/Merge/Dimension 조회/업데이트 Pentaho를 사용하여 업데이트

"OID" Char(36) <------ **PRIMARY KEY** 
, "CUSTOMER" VARCHAR(255) 
, "TICKETID" VARCHAR(255) 
, "PRIO_ORIG" CHAR(36) 
, "PRIO_COR" CHAR(36) 
, "CATEGORY" VARCHAR(255) 
, "OPENDATE_ORIG" TIMESTAMP 
, "OPENDATE_COR" TIMESTAMP 
, "TTA_ORIG" TIMESTAMP 
, "TTA_COR" TIMESTAMP 
, "TTA_DUR" DOUBLE PRECISION 
, "MTTA_TARGET" DOUBLE PRECISION 
, "TTA_REL_ORIG" BOOLEAN 
, "TTA_REL_COR" BOOLEAN 
, "TTA_DISCOUNT_COR" DOUBLE PRECISION 
, "TTA_CHARGE_COR" DOUBLE PRECISION 
, "TTR_ORIG" TIMESTAMP 
, "TTR_COR" TIMESTAMP 
, "TTR_DUR" DOUBLE PRECISION 
, "MTTR_TARGET" DOUBLE PRECISION 
, "TTR_REL_ORIG" BOOLEAN 
, "TTR_REL_COR" BOOLEAN 
, "TTR_DISCOUNT_COR" DOUBLE PRECISION 
, "TTR_CHARGE_COR" DOUBLE PRECISION 
, "COMMENT" VARCHAR(500) 
, "USER" CHAR(36) 
, "MODIFY_DATE" TIMESTAMP 
, "CORRECTED" BOOLEAN 
, "OPTIMISTICLOCKFIELD" INTEGER 
, "GCRECORD" INTEGER 
, "ORIGINATOR" Char(36) 

내가 열 TICKETID + ORIGINATOR + 고객에이 같은 경우 테이블을 업데이트 할. 그렇지 않으면 삽입이 수행됩니다.

펜타 호를 사용하여 어떻게해야합니까? Dimension/Lookup 업데이트가 단계가 잘 수행 되었습니까? 아니면 업데이트/삽입 단계만으로 작업이 수행됩니까?

도움을 주시면 감사하겠습니다. 미리 감사드립니다.

+0

TICKETID + ORIGINATOR + CUSTOMERS 열에 고유 색인이 있습니까? 그런 다음'INSERT ... ON CONFLICT DO UPDATE SET column = EXCLUDED.column;'https://www.postgresql.org/docs/9.5/static/sql-insert.html을 사용할 수 있습니다. –

답변

0

Eugene Lisitsky 제안은 좋은 습관입니다. 데이터베이스 제약 조건에 철저히 연결하고 PostgesSQL이 작업을 수행하도록 할 수 있습니다.

PDI 솔루션의 경우 : 테이블이 느리게 변경되는 차원이 아니므로 삽입/업데이트가 필요를 충족시킵니다.

Dimension_update를 사용하려면 버전 열과 valid_form_date/valid_upto_date (PDI의 경우 alter는 원 버튼 조작 임)를 추가하여 Pentaho SCD 형식의 테이블을 변경해야합니다.

그 후에 새 행이 들어 오면 테이블에서 TICKETID + ORIGINATOR + CUSTOMERS가 검색되고 발견되면 valitity_upto = now()가 수신됩니다. 동시에 now()에서 end까지 유효한 테이블에 버전 + 1이 생성됩니다.

(주) 프로는 validity_from과 validity_upto 사이에서 now()를 사용하여 데이터베이스의 상태를 과거와 같이 쉽게 검색 할 수 있다는 것입니다.

(mian)은 GUI (복수형)에 영향을 줄 수있는 테이블을 변경해야한다는 것입니다.