0

有人可以告诉我什么是滚动总和以及如何在 Informatica 中实现它吗?

我的要求如下:(由客户提供)

ETI_DUR : SUM(当 AGENT_EXPNCD_DIM.EXCEPTION_CD='SYS/BLDG 问题 ETI' THEN IEX_AGENT_DEXPN.SCD_DURATION ELSE 0 END 时的情况)

ETI_30_DAY : ROLLING SUM (CASE WHEN (SYSDATE-IEX_AGENT_DEXPN.ROW_DT)<=30 AND AGENT_EXPNCD_DIM.EXCEPTION_CD = 'SYS/BLDG ISSUES ETI' THEN IEX_AGENT_DEXPN.SCD_DURATION ELSE 0 END)

eti_30_day_ovrg: eTi_dur> 0的情况,然后在0到600之间滚动(eti_dur_30_day持续29天)和600和滚动(eTi_dur_30_day持续29天)过去 29 天)> 600 然后 ETI_DUR ELSE 0 END ELSE 0 END

我已经在 Informatica 中实现如下。

表达式转换:

o_ETI_DUR-- IIF(UPPER(EXCEPTION_CD_AGENT_EXPNDIM)='SYS/BLDG ISSUES ETI',SCD_DURATION,0)

o_ETI_29_DAY-- IIF(DATE_DIFF(TRUNC(SYSDATE),trunc(SCHD_DATE),'DD') <=29 AND UPPER(EXCEPTION_CD_AGENT_EXPNDIM) = 'SYS/BLDG ISSUES ETI' ,SCD_DURATION,0)

o_ETI_30_DAY -- IIF(DATE_DIFF(TRUNC(SYSDATE),trunc(SCHD_DATE),'DD') <=30 AND UPPER(EXCEPTION_CD_AGENT_EXPNDIM) = 'SYS/BLDG ISSUES ETI' ,SCD_DURATION,0)

聚合器转换:

o_ETI_30_DAY_OVRG: IIF(sum(i_ETI_DUR) > 0, IIF((sum(i_ETI_29_DAY)>=0 and sum(i_ETI_29_DAY)<=600) and (sum(i_ETI_29_DAY)+sum(i_ETI_DUR)) > 600, sum(i_ETI_30_DAY) - 600,IIF(总和(i_ETI_29_DAY)>600,总和(i_ETI_DUR),0)),0)

但不工作。请尽快帮助。

非常感谢....!

4

3 回答 3

2

滚动总和只是固定时间段内某个金额的总和。例如,您可以每天计算过去 30 天的费用总和。

我猜你可以使用聚合器来计算 ETI_DUR、ETI_30_DAY 和 ETI_29_DAY。之后,您可以在表达式中实现 ETI_30_DAY_OVRG 的逻辑。请注意,您不能在聚合器中编写这样的 IIF 表达式。输出端口必须使用聚合函数。

于 2013-09-03T18:24:50.107 回答
2

这是一个滚动求和示例:

count, rolling_sum
1,1
2,3
5,8
1,9
1,10

基本上它是前面列出的值的总和。要在 Informatica 中实现它,请使用“局部变量”(表达式转换中的变量端口),如下所示:

输入端口:count
变量端口:v_sum_count = v_sum_count + count
输出端口:rolling_sum = v_sum_count

于 2013-11-08T11:59:30.833 回答
1

我们在表达式转换中的数值函数中定义了一个移动和函数:

MOVINGSUM(n as numeric, i as integer, [where as expression]).

请检查它是否有帮助。

于 2013-12-02T05:37:27.833 回答