我是使用Talend的新手。我想在我的ETL中使用增量加载。我从Mysql数据源中提取并加载到Postgresql数据库中。Mysql数据源有created_at和updated_at时间戳,我想用它们来提取新数据或更新数据。我以前已经在使用SSIS的Sql Server中实现了这一点。我不确定如何使用Talend来实现。有人使用Talend实现过带时间戳的增量加载吗?提前谢谢。
发布于 2017-11-01 19:34:14
因为你有日期文件来识别三角洲,所以这将很容易。有两个文件,一个是当前日期(作业流开始时)。另一个文件上次运行日期的低位日期为19000101。在第一次加载运行作业并从上次运行日期文件中读取日期时,将此作为where子句,以检查源数据时间戳col>run日期并运行作业。接下来,将当前日期文件值移动到下一次运行日期文件。在增量运行中,再次执行相同的过程。因此,您将获得增量记录。
发布于 2015-12-01 15:02:45
首先,我们将创建一个日志表,列有Job_id、Job_name、start_time、end_time、status。每当作业运行一次时,都需要在作业结束时更新此表。
在下面给出表输入条件,如下所示
请参见下图或
check below image for job flow
发布于 2018-11-02 23:15:15
有几个选择--这个答案不是特定于时间戳的,但仍然是有帮助的。
B.比较中包含所有关键字段,其余字段使用散列。
C.对键组合使用一个哈希,对其余字段使用另一个哈希。
如果使用tAddCDCRow,则对组合键使用一个组件,对其余字段使用另一个组件。当然,如果只对密钥进行散列,则只需要一个组件。如果使用自定义Java函数,请根据需要调用一次或两次。
散列Java函数:
// data = Text for which to generate hash value. Will be a combination of one or
more fields. Recommend padding strings with spaces to accurately combine. Can use |
or similar dividers. Convert integers and other non-text to strings, as necessary.
public static String getMD5(String data)
{
java.security.MessageDigest digest; // Message digest of type, MD5.
byte[] hash; // Byte array containing passed text converted to hash value.
// Create a message digest with the specified algorithm name -- MD5.
digest = java.security.MessageDigest.getInstance("MD5");
// Convert passed text to hash value -- as a byte array.
hash = digest.digest(data.getBytes("UTF-8"));
// Return the hash value converted to a string.
return javax.xml.bind.DatatypeConverter.printHexBinary(hash);
}下面是另一个代码示例的链接:https://community.talend.com/t5/Design-and-Development/sha1-hash-key/td-p/109750。
散列比较:使用散列(可能还有其他)字段比较新旧信息。对关键字段(或相关散列)和非关键字段的散列使用完全的外部联接。当在新端而不是旧端发现null时,就需要插入。当在旧的一端发现空值,但在新端没有发现空值时,需要删除(或者根据您的需要直接忽略)。当没有出现null时,执行更新。
https://stackoverflow.com/questions/33940075
复制相似问题