talend - 数据仓库中的增量负载
问题描述
我在 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 ;
解决方案
我认为你不能使用
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+"'"
推荐阅读
- javascript - 为什么控制台不能定义id?
- c# - 在 WCF 中,服务器尚未访问客户端的公钥,客户端尚未访问服务器的公钥 - 仍然是 Web 方法操作成功。为什么?
- excel - 低于 50 的值多久出现一次?
- java - 带有 AM/PM 到日期的字符串
- java - 如何在java中获取两个对象的ArrayList的差异
- azure - 无法删除 HDinsight 活动创建的数据湖存储上的文件
- android - FCM 从服务器向特定设备发送通知,无需修改客户端代码
- python - 从列表中有效地删除元素
- reactjs - Internet Explorer 无法编译外部反应组件:对象作为 React 子项无效
- html - 来自 API 的背景图片