使用 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 数据集成 Google BigQuery Loader 异常
Pentaho 数据集成转换,从 csv 文件加载字段(Java API)