从 DB2 数据库的两个表中提取数据并加载到临时表中

Posted

技术标签:

【中文标题】从 DB2 数据库的两个表中提取数据并加载到临时表中【英文标题】:Extract data from two tables of DB2 database and load into a temporary table 【发布时间】:2012-02-19 07:10:26 【问题描述】:

我正在创建一个 informatica 工作流,它可以从 DB2 数据库的两个表中提取数据并加载到一个临时表中。假设两个源表名称是 Account (Parent) 和 Activities (Child)。他们有 1:M 的关系。意味着一个帐户可以有许多活动(Account.PK = Activities.FK)。活动表有两列 - 第一个“类型”,其值可以是“已支付”、“将支付”或“未支付”。第二列是“Created_Date”日期时间数据类型,无论何时创建新的活动记录、日期和时间会在这个领域得到印记。现在,在临时表中加载数据的条件是 - “对于帐户记录,它将第一次检查活动表中今天的付费活动(类型 = 付费)。如果它找到多个付费活动,那么它将选择最新创建的“意味着,它应该为一个帐户选择今天的最新付费活动(Sysdate),如果它不存在,那么它只会选择今天最新的支付活动。请帮助我了解如何在 Informatica 工作流程中实现此逻辑以及我应该使用哪些转换以及如何使用?非常感谢。请帮忙。

【问题讨论】:

【参考方案1】:

在 SQL 上执行此操作的最佳方法是在 ETL 上实现业务逻辑,这并不好。但是,如果您坚持,它可以通过多种方式创建。例如:

使用 SQL 覆盖 您可以为带有覆盖 SQL(以及列)的活动表创建 3 个查找转换,并为条件创建一个表达式转换。

    查找多个“付费”活动帐户 查找以查找每个帐户的最后“付费”活动 查找以查找每个帐户的最后一次“支付”活动 根据 1-3 个查找结果返回正确活动键的表达式

如果没有 SQL 覆盖,您需要使用过滤器、聚合器、连接器转换重新创建类似的逻辑。

【讨论】:

以上是关于从 DB2 数据库的两个表中提取数据并加载到临时表中的主要内容,如果未能解决你的问题,请参考以下文章

TSQL 将数据库 BLOB 提取到临时表中

将 JSON 文本插入 DB2 表

DB2 和 SQL-如何在特定字段中返回最大值,以便每行只显示一条记录;从多个表中提取数据

具有不同表结构的两个 DB2 表中的数据值之间的差异

从两个 DB2 表 UNION ALL 中提取数据

创建临时表并使用存储过程将数据加载到其中