首页 > 解决方案 > 数据仓库中的增量负载

问题描述

我在 talend 中有两张表( Tparam 和 Customer )。第一个表包含数据库的全局更新日期,表 Customer 包含许多行,每行都有一个名为 的列UPDATE DATE

现在我需要使用这个 talend 作业在数据库中进行增量加载。我应该获取行UPDATE DATE > GLOBAL UPDATE DATE并将它们加载到数据仓库中。

我试图将全局更新日期放在一个变量中并运行一个作业来选择更新日期>全局更新日期的行。

下面是我的工作:在 tjavaFlex 中,我创建了一个包含查询和变量全局更新变量的字符串。查询是:

String Query = "SELECT *  FROM [ProjetBI_DW].[dbo].[W_CLIENT_D] where [UPDATE_DATE]";

在体内:

Query = Query + ">" + row5.UPDATEDATE ;

https://i.stack.imgur.com/uJvaz.png

标签: talenddata-warehouse

解决方案


我认为你不能使用

Query + ">" + row5.UPDATEDATE ;

由于 row5 是您当前的流程,因此无法在 tMSSQLInput_5 组件中使用它。您应该使用全局或上下文变量。

在您的第一个子作业中,您应该将更新日期放入全局变量或上下文变量中。

“tParam”组件中的查询应该只返回一行,“globalUpdateDate”。然后,您可以使用简单的 tJavaRow 而不是 tJavaFlex 代码:

context.myGlobalUpdateDate = input_row.globalUpdateDate

不要忘记在作业中声明您的上下文变量。

然后在 tMSSSQLInput_5 中,将查询与您的上下文变量一起使用。

"SELECT *  FROM [ProjetBI_DW].[dbo].[W_CLIENT_D] where [UPDATE_DATE] > '"+context.myGlobalUpdateDate+"'"

推荐阅读