我正在构建一个从 informatica cdc 获取数据的暂存区。现在,例如,假设我正在复制两个表以进行增量加载。每次加载后,我必须从暂存表中删除已处理的数据。我连接这两个表来填充我的目标维度。问题是在特定负载中,变化只能发生在一个源上,而不能发生在另一个源上。
示例:
Employee
---------
ID NAME
1 PETER
EmployeeSal
------------
EMPID SAL
1 2000
如果在第一次加载中复制了上述内容,我将连接两个表并加载它们,这很好。
现在假设 Peter 的工资从 2000 更新到 3000。由于我在每次加载后删除了临时表,因此当前加载的内容如下。
Employee
---------
ID NAME
EmployeeSal
-----------
EMPID SAL
1 3000
这是我的问题,我必须填充 TYPE2 维度的整行。
我必须连接回源才能获取员工表的其他属性(这只是一个蹩脚的例子,实际上可能有 10 个表和数十万个更改)。是否建议回溯源?
我可以将目标表加入到此组合中并填充缺少的属性。
是否建议这样做,因为如果特定的临时表的维度记录没有更改,我必须执行大量 case 语句、空处理等。我的问题是,在 ETL 转换中连接目标表是否常见?
最佳答案
回到源系统,首先就失去了创建暂存区的目的。通常不建议这样做。
然而,查询目标表来获取以前的信息是很常见的。但确实你必须做很多检查。
另一种选择是在您的暂存区域保留 1 型 scd。在暂存中维护插入和更新时间戳,您可以使用它在加载维度时仅获取更改的记录。
关于etl - 更改数据捕获多个表以进行增量加载 - ETL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29113181/