根据 pentaho 中的日期插入新记录

Posted

技术标签:

【中文标题】根据 pentaho 中的日期插入新记录【英文标题】:Inserting new records based on the date in pentaho 【发布时间】:2021-02-27 07:29:29 【问题描述】:

我想问一下pentaho是否可以这样做

我昨天 26/02/2021 的数据看起来像这样,START_DATE TAKEN FROM SYSDATE

ID|CODE|NAME|MARKS|START_DATE|END_DATE
1|A01|KUMAR|90|26/02/2021|NULL
2|A02|RAJESH|80|26/02/2021|NULL
3|A03|SINGH|70|26/02/2021|NULL

假设 SINGH 的代码为 A03,他在 27/02/2021 获得了更好的分数(90),所以它看起来像这样

ID|CODE|NAME|MARKS|START_DATE|END_DATE
1|A01|KUMAR|90|26/02/2021|NULL
2|A02|RAJESH|80|26/02/2021|NULL
3|A03|SINGH|70|26/02/2021|27/02/2021
4|A03|SINGH|90|27/02/2021|NULL

由于 SINGH 在其 MARKS 中的值不同,因此 SINGH 的旧记录将满足它的 END_DATE,而具有最新 MARKS 的 SINGH 新记录将在插入记录的当天有 START_DATE,并且他的 END_DATE 仍然为空。所以作业将查看它的值是否有任何差异,然后如果有一些差异,则表示该行具有“更新”值,并且将插入源中的最新值。 我可以在 pentaho 中实现它吗?

My Pentaho Jobs

【问题讨论】:

【参考方案1】:

您可以在 Pentaho 数据集成的一次转换中使用“更新”和“插入/更新”步骤轻松完成此操作。

您可以从Here查看示例

【讨论】:

但是如果值没有改变呢?就像 SINGH 仍然有 MARKS 80,所以它不会插入或更新任何东西。如果 SINGH 仍然具有来自源的相同值,因此源和目标之间没有差异,则记录不会插入或更新任何内容 是的,那些记录不会插入。这一步我已经考虑过了。 顺便说一句,我试过你的,它会给我一个错误,因为如果我更改 SINGH 值,插入的新记录 ID 仍将是 SINGH 旧 ID,即 3。它需要4、插入步骤怎么做?当我在插入新行步骤中删除更新字段时,我得到的只是空值,并且结束日期也没有得到今天的日期。 在我的转换中,我从输入记录中插入了 ID。因此,如果新记录中的 ID=3,则 SINGH 将插入 3,如果 ID=4,则插入 4。它完全取决于您的记录。如果您想在数据库表中自动递增 ID,那么您可以轻松地将 ID 列设置为任何数据库中的自动递增。在这种情况下,从“插入新行”步骤中删除 ID,因为这将由您的数据库自动处理。 好的,这取决于表结构,我尝试在我的工作中使用获取系统信息(我已经提供了上面的链接),系统信息我试图获取新的系统日期end_date 值,但它不起作用,也许你知道为什么?

以上是关于根据 pentaho 中的日期插入新记录的主要内容,如果未能解决你的问题,请参考以下文章

Excel导出工具包pentaho report

Pentaho:将一组动态记录插入数据库

使用 pentaho 数据集成加载事实表

ETL工具kettle基本使用

Pentaho:恢复转型

除了 pentaho 中的插入/更新步骤之外,是不是有任何步骤或逻辑可以保持 SCD 类型 1?