0

ローリング サムとは何か、Informatica でそれを実装する方法を誰か教えてもらえますか?

私の要件は次のとおりです:(クライアントから提供)

ETI_DUR : SUM(CASE WHEN AGENT_EXPNCD_DIM.EXCEPTION_CD='SYS/BLDG ISSUES 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とRollingsum(過去29日間のETI_DUR_30_DAY) + ETI_DUR> 600 THEN ROLLINSUM(ETI_DUR_30_DAY(ETI_DUR_30_DAY for Last30_ when Rollingum(eTi_30_))の間のlollingum(ati_dur_30_day)の場合はケースです。過去 29 日間) > 600 THEN 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 に答える