【问题标题】:Split date range into each day within the range with start and end date将日期范围拆分为具有开始日期和结束日期的范围内的每一天
【发布时间】:2017-09-20 21:53:37
【问题描述】:

我有一个场景,必须将具有日期范围的行拆分为该日期范围内的所有日期的多行。有谁知道如何在 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

目标

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

提前谢谢你!

【问题讨论】:

  • 谢谢大家的回答!我在源限定符中添加了一个 SQL,它将创建一个新的日期列并为开始日期和结束日期内的每个日期添加一行。由于所有新行都将开始和结束日期时间作为实际开始和结束时间,我添加了一个表达式来调整与新日期列比较的日期,并与 00:00:00 连接以表示开始日期不等于新日期和 23 :59:59 结束日期不等于新日期
  • 这里是 SQ 查询:with tmp(dt) as (select cast('20141001' as datetime) union all select dt+ 1 from tmp where dt= cast(A.start_date as date) and cast(dt as date)

标签: java sql etl transformation informatica


【解决方案1】:

最简单的方法是拥有一个日期表,您可以通过日期记录的日期大于或等于开始日期的日期且小于或等于结束日期的日期来针对每条记录加入日期表(sql join in source qualifier)天。然后稍后在映射中添加额外的逻辑,以从 starttime 字段中选择开始时间,否则日期与 datetablestarttime 相同,结束时间相似

【讨论】:

    【解决方案2】:

    请尝试java转换! 找出开始日期和结束日期之间的差异, 在 java 转换中使用 rowgen 创建新记录。 希望这能回答您的问题。

    【讨论】:

      【解决方案3】:

      PowerCenter 中没有对行乘法的本机支持。因此需要一种解决方法。计算日期差异并使用它来乘以行。选项有:

      • 使用 Java 转换生成额外的行 (here's an example)
      • 使用 [1,2,2,3,3,3,...] 之类的数据创建一个虚拟表,并使用它来连接日期差异。请记住,行数增长很快,不建议用于大量行数
      • 创建活动的、非缓存的查找,它将为给定的输入返回适当数量的行。使用 SQL 查询覆盖为每个已处理的行获取所需的行数*

      *假设您使用 myNumber 列类型 bigint 创建一个 myNumbers 表并使用从 1 到 X 的序列填充一次,您可以使用以下查询进行查找覆盖:SELECT 1 FROM myNumbers WHERE myNumber = ?in_lookup_port_name?。使用值为 1 的虚拟端口作为条件。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2013-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-07-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多