【问题标题】:How can I write an IIF() function in informatica如何在 informatica 中编写 IIF() 函数
【发布时间】:2020-07-17 00:55:53
【问题描述】:

如何在 Informatica 中为附加的示例数据编写 IFF 函数。我有一个由不同列组成的目标表。我目前有不同的表达方式。 IIF(LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1)))='',NULL,LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1))))

IIF(LTRIM(RTRIM(SUBSTR(DETAIL_INFO,2,4)))='',NULL,LTRIM(RTRIM(SUBSTR(DETAIL_INFO,2,4))))

上面的第一个表达式从下面的第一行中提取 H 并将其分配给 A 列,还有另一个表达式函数将 P 分配给另一列 B,它继续直到到达第一行的最后一个字符并分配它到 P 列。 上面的第二个 IFF 函数读取 1 并将其分配给列 W,然后具有不同位置的类似表达式将 P 分配给某个列 X,另一个将 009046678402 分配给 Y 列,然后另一个将 40 分配给 Z。 我想要实现的是,在第二行读取和分配值之后,如果之后的下一行再次以“D”开头,它仍然应该读取它。但是我当前的 IFF 函数,只有在有行交替时才会读取 生命值... D1... 如果有附件中所示的场景,我希望在哪里 生命值... D1... D2... D3... 它仍应读取并赋值enter image description here D1...、D2...、D3...

HP2519263013900HWA8365C DEFORD DONITA 1245327121 1184950479 2012516 0 201909202019092016 0 D1 P00904667840240

【问题讨论】:

  • 不能先用Python、C#之类的脚本来处理数据吗?它会让生活更轻松。

标签: informatica informatica-powercenter informatica-cloud informatica-powerexchange


【解决方案1】:

我通过为每个字段创建变量端口并将我的 TRIM 中的 null 替换为它们各自的变量端口来解决该问题,如下所示 IIF(LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1)))='',v_ID, LTRIM(RTRIM(SUBSTR(HEADER_INFO,1,1)))), IIF(LTRIM(RTRIM(SUBSTR(HEADER_INFO,2,4)))='',v_LST_Name,LTRIM(RTRIM(SUBSTR(HEADER_INFO,2,4))))

【讨论】:

    猜你喜欢
    • 2018-10-02
    • 1970-01-01
    • 1970-01-01
    • 2021-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-08
    • 2020-01-08
    相关资源
    最近更新 更多