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

Posted

技术标签:

【中文标题】使用 pentaho 数据集成加载事实表【英文标题】:loading fact table using pentaho data integation 【发布时间】:2013-09-18 17:52:38 【问题描述】:

我正在使用 pentaho DI 将数据插入事实表。事情是我从中填充事实表的表,其中包含 10000 条记录并且经常更改。使用数据库查找和插入更新我能够正确加载我的事实表一次。但是当新记录被添加到我的源表中(比如说它变成 15000)并且我再次将记录插入到事实表中时,这 15000 条记录再次添加到我的事实表中。我想要的是添加事实表中不存在的新 5000 条记录。请建议我需要执行哪些转换才能实现这一目标。

【问题讨论】:

【参考方案1】:

尝试使用 upsertion 代替插入(如果行存在则更新,如果不插入)

【讨论】:

【参考方案2】:

你可以使用一些数据库功能。

在 SQL Server 2008 中,有一个 merge sql 可以解决这种类型的问题。

SQL Server 2008 中的示例如下:

MERGE Production.UnitMeasure AS target USING (SELECT @UnitMeasureCode, @Name) AS source (UnitMeasureCode, Name) ON (target.UnitMeasureCode = source.UnitMeasureCode) WHEN MATCHED THEN UPDATE SET Name = source.Name WHEN NOT MATCHED THEN INSERT (UnitMeasureCode, Name) VALUES (source.UnitMeasureCode, source.Name) OUTPUT deleted., $action, inserted. INTO #MyTempTable;

【讨论】:

以上是关于使用 pentaho 数据集成加载事实表的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 cassandra 与 pentaho 数据集成器的连接

使用 pentaho 数据集成的 SQL 标识列插入

Pentaho 数据集成 Google BigQuery Loader 异常

Pentaho 数据集成转换,从 csv 文件加载字段(Java API)

Pentaho 数据集成 (PDI):将布尔值从源插入到目标

将 Pentaho Reporting Web 前端与自定义 Java/JSF 应用程序集成