【问题标题】:Informatica: comparing the date field between two tablesInformatica:比较两个表之间的日期字段
【发布时间】:2016-04-12 11:02:15
【问题描述】:

我是 informatica 软件的新手。现在我有两张桌子,比如AAABBB 桌子。

AAA: last_post_date

BBB: Trx_No, Field1, Field2, trx_date

我想将BBB 表移动到目标表,目标表的 trx_date 必须大于 last_post_date。我不能使用连接器转换,因为它没有 >、= 和

请帮忙。

谢谢!

【问题讨论】:

  • AAA 只有 1 行包含 last_post_date 还是每次运行有多行?
  • 是的。它只有一排。 AAA 仅包含 Id 和 last_post_date 字段

标签: informatica


【解决方案1】:

我假设 AAA 只有 1 行包含 last_post_date。如果两个表都在同一个数据库中,您可以使用源限定符覆盖

select Trx_No, Field1, Field2, trx_date from BBB where trx_date > last_post_date

但是如果两个表都在不同的数据库中和/或您无法在它们之间创建数据库链接,请使用以下解决方案。

  • 在两个源的源限定符之后,使用Expression 转换。
  • 在两个表达式转换中添加一个输出端口,例如 o_Dummy 并将值硬编码为 1(对于两个转换)
  • 使用 Joiner 并使用 normal join。加入条件为o_Dummy = o_Dummy1
  • 之后使用filer 过滤trx_date > last_post_date 所在的记录。

这将是您的流程。

SQ_AAA -> Expression -> Joiner -> Filter -> Target
SQ_BBB -> Expression -^

【讨论】:

    【解决方案2】:

    使用源限定符从BBB 读取数据,然后查找AAA 和带有条件trx_date>last_post_date 的过滤器。

    理想情况下,您会使用从表达式变量端口引用的未连接查找,例如v_LastPostDate = IIF(ISNULL(v_LastPostDate), LKP.LoopkupToAAA, v_LastPostDate) - 这将确保您只执行一次查找。并不是说使用单一值很重要,但我想我会分享一些好的做法:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-11-06
      • 2012-05-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-02
      • 2013-08-09
      • 1970-01-01
      相关资源
      最近更新 更多