2

我们如何在 Informatica 中使用 Lead 和 Lag 函数?

Name  |   No.
------------
X     |  100
Y     |  200
Z     |  300

我必须将其转换为:

Name  |    No. |    Lead(No.) 
-----------------------------
X     |   100  |    200
Y     |   200  |    300
Z     |   300  |    100


Name  |    No.  |   Lag(No.)    
----------------------------
X     |   100   |   0
Y     |   200   |   100
Z     |   300   |   200

我使用的逻辑是:

经验转换

Name (input & Output Port)
No. (input)
O_No.(VAR)=IIF(Prv_no IS NULL,0,No.)
Prv_no.(VAR)=No.

这是为了滞后函数。

4

3 回答 3

1

从来没有这样做过,但我会使用评估顺序。在 EXP 转换中,输入端口在变量端口之前评估,而变量端口又在输出端口之前评估。此外,该行一次读取一个。

如果您发送到 EXP TRAN 排序数据,您可以模拟 lag() 函数。对于 Lead(),您应该反转排序。

于 2013-06-13T10:46:35.223 回答
0

多种方式——

  1. 您可以使用RANK转换,检查 No..Set Top/Bottom as Top 和Number of Ranks as 1 以获得领先值的 rank (R) 选项。**将Top/Bottom设置为 Bottom 和Number of Ranks as 1获得滞后值。然后在表达式转换中使用这些值,我们可以实现超前/滞后功能。

    2.在source qualifier中使用sql查询,选择MAX()MIN()得到各自的lead和lag值。

于 2013-07-01T10:00:29.003 回答
0

您可以使用 Informatica 表达式来实现领先和滞后。为每一行输入 2 个输出端口,一个用于超前计算,一个用于滞后计算。使用映射参数为运行配置领先和滞后变量。表达式后将端口连接到两个不同的目标。

于 2014-08-13T08:33:56.857 回答