etl - 更改数据捕获多个表以进行增量加载 - ETL

标签 etl data-warehouse informatica informatica-powercenter cdc

我正在构建一个从 informatica cdc 获取数据的暂存区。现在,例如,假设我正在复制两个表以进行增量加载。每次加载后,我必须从暂存表中删除已处理的数据。我连接这两个表来填充我的目标维度。问题是在特定负载中,变化只能发生在一个源上,而不能发生在另一个源上。

示例:

Employee
---------
ID   NAME   
1    PETER  

EmployeeSal
------------
EMPID  SAL

1      2000

如果在第一次加载中复制了上述内容,我将连接两个表并加载它们,这很好。

现在假设 Peter 的工资从 2000 更新到 3000。由于我在每次加载后删除了临时表,因此当前加载的内容如下。

Employee
---------
ID   NAME   

EmployeeSal
-----------
EMPID  SAL

1     3000

这是我的问题,我必须填充 TYPE2 维度的整行。

  1. 我必须连接回源才能获取员工表的其他属性(这只是一个蹩脚的例子,实际上可能有 10 个表和数十万个更改)。是否建议回溯源?

  2. 我可以将目标表加入到此组合中并填充缺少的属性。
    是否建议这样做,因为如果特定的临时表的维度记录没有更改,我必须执行大量 case 语句、空处理等。我的问题是,在 ETL 转换中连接目标表是否常见?

最佳答案

回到源系统,首先就失去了创建暂存区的目的。通常不建议这样做。

然而,查询目标表来获取以前的信息是很常见的。但确实你必须做很多检查。

另一种选择是在您的暂存区域保留 1 型 scd。在暂存中维护插入和更新时间戳,您可以使用它在加载维度时仅获取更改的记录。

关于etl - 更改数据捕获多个表以进行增量加载 - ETL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29113181/

相关文章:

mysql - 大型数据集,不同数据库之间的数据比较不兼容

SQL/SSIS DataWareHouse 事实表加载,最佳实践?

database - 如何构建基于实体属性值数据库的数据仓库?

sql-server - Informatica 支持 Microsoft Azure SQL 数据仓库

informatica - 我需要有关 Informatica 的信息

oracle - 如何在 OWB11gR2(Oracle Warehouse Builder) 中应用补丁

database - 从关系数据库访问 Redis

sql-server - SSIS Foreach 循环容器不循环遍历 Excel 文件

sql-server-2008-r2 - SSAS - 时间维度增加的时间结构

informatica - 在表达式中设置映射变量并在源过滤器中使用它