我的情况是,具有日期范围的行必须在该日期范围内的所有日期分成多行。有没有人知道如何在Informatica powercenter中获取目标(如附件)?
消息来源
code start date end date
ADMISSION 01/01/2017 02:05:11 01/01/2017 04:20:53
TRANSFER 01/01/2017 04:20:54 01/03/2017 18:30:48
DISCHARGE 01/03/2017 18:30:49 01/03/2017 20:18:11
TARGET
code start date end date
ADMISSION 01/01/2017 02:05:11 01/01/2017 04:20:53
TRANSFER 01/01/2017 04:20:54 01/01/2017 11:59:59
TRANSFER 01/02/2017 00:00:00 01/02/2017 11:59:59
TRANSFER 01/03/2017 00:00:00 01/03/2017 18:30:48
DISCHARGE 01/03/2017 18:30:49 01/03/2017 20:18:11
提前谢谢!
答案 0 :(得分:0)
请尝试使用java转换! 找出开始和结束日期之间的差异, 在java转换中使用rowgen创建新记录。 希望这能回答你的问题。
答案 1 :(得分:0)
最简单的方法是,由于日期记录的日期大于或等于开始日期的日期并且小于或等于结束日期,您可以在每个记录(源限定符中的sql连接)中加入日期表。天。然后在映射中添加额外的逻辑以从starttime字段中选择开始时间wben日期是相同的,否则从datetablestarttime开始,并且类似于结束时间
答案 2 :(得分:0)
PowerCenter中没有对行乘法的原生支持。因此需要一种解决方法。计算日期差异并使用它来乘以行。选项包括:
*假设您使用myNumber列类型bigint创建myNumbers表并使用从1到X的序列填充一次,您可以使用以下查询进行查找覆盖:SELECT 1 FROM myNumbers WHERE myNumber = ?in_lookup_port_name?
。使用值为1的虚拟端口作为条件。