使用Pentaho

时间:2017-10-12 05:21:40

标签: postgresql etl kettle pentaho-spoon pentaho-data-integration

PostgreSQL中有一个表'TICKETS'。我使用Pentaho执行ETL作业来填充此表。 还有一个GUI,用户在其上进行更改,结果反映在此表中。 表中的字段是:

"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 + CUSTOMERS相同时更新表。否则,将执行插入。

我应该如何使用Pentaho?步骤维度/查找更新是否正常,或者仅更新/插入步骤是否可以正常工作?

非常感谢任何帮助。提前谢谢。

1 个答案:

答案 0 :(得分:0)

Eugene Lisitsky建议是一种很好的做法:你可能会在数据库约束中硬连接它,让PostgesSQL完成这项工作。

对于PDI解决方案:您的表格看起来不像是在缓慢变化的尺寸,因此插入/更新可以满足您的需求。

如果要使用Dimension_update,则需要更改Pentaho SCD格式的表:添加版本列和valid_form_date / valid_upto_date(使用PDI,alter是一键操作)。

之后,当有新行进入时,会在表格中搜索TICKETID + ORIGINATOR + CUSTOMERS,如果找到,则会收到valitity_upto = now()。同时,在表中创建版本+ 1,从now()到结束时间有效。

(主要)专业人员是你可以检索数据库的状态,就像它在过去的任何日期一样,只需要在validity_from和validity_upto之间的now()。

(mian)con是你必须改变可能对GUI有多重影响的表(复数)。