从Informatica中的日期导出时间戳

时间:2019-02-12 20:18:31

标签: informatica-powercenter

我必须导出时间戳记值并将其附加到现有日期字段中,然后将其填充到目标输出文件中。对于每个id字段和col3,这应该是唯一的。

我的输入

id行col1 col2 col3(mmddyyyy) 1 1 abc 123 01012018 1 2 cba 432 01012018 1 3 xyz 463 01012018 2 1条图321 02012018 2 2 abc 422 02012018 3 1特氟酸001 10052018 4 1小时963 03202018

对于以上给定的样本数据,目标输出字段应填充时间戳。对于每次运行的时间,小时(HH)值应从09 AM开始。

预期输出:

目标输出字段格式-MMDDYYYYHHMMSSmmm 哪里 MMDDYYY-col3

HH(小时)-应始终从09开始 MM(分钟)-起始值00和最大值60(达到60时将小时增加1,并将其重置为“ 00”)

SS(秒)-起始值00和最大值60(当达到60时将Minute减1,并将其重置为'00')

mmm(毫秒)-起始值000和最大值999(达到999时将秒数递增1,并将其重置为“ 000”)

如果需要我的问题,请告诉我。

创建了三个不同的变量,并为每个unque id&col3将其递增1。但是以某种方式,当MM或SS或mmm达到其最大限制时,我无法将其重置为00。需要进行经验转换

到目前为止我所做的,

v_MILLISECONDS =>

IIF(count_Id =1,v_MILLISECONDS=000,
IIF((ID != V_ID_PREV) AND (col3 != V_col3_PREV)  AND (v_MILLISECONDS < 999), 
v_MILLISECONDS=v_MILLISECONDS+1, v_MILLISECONDS)
)

v_SECONDS =>

IIF(count_Id=1,v_SECONDS=00,DECODE(TRUE
,v_MILLISECONDS<999, v_SECONDS
,v_MILLISECONDS=999, v_SECONDS=v_SECONDS+1
,v_MILLISECONDS>998, v_SECONDS=00
,v_SECONDS)
)

v_MINUTES =>

IIF(count_Id =1,v_MINUTES=00,DECODE(TRUE
,v_SECONDS<60, v_MINUTES
,v_SECONDS=60, v_MINUTES=v_MINUTES+1
,v_SECONDS>60, v_MINUTES=00
,v_MINUTES)
)

v_HOUR =>

IIF(count_Id =1,v_HOUR=00,DECODE(TRUE
,v_MINUTES<60, v_HOUR
,v_MINUTES=60, v_HOUR=v_HOUR+1
,v_MINUTES>60, v_HOUR=09
,v_HOUR)
)

预期输出:

目标输出字段格式-MMDDYYYYHHMMSSmmm 哪里 MMDDYYY-col3

HH(小时)-应始终从09开始 MM(分钟)-起始值00和最大值60(达到60时将小时增加1,并将其重置为“ 00”)

SS(秒)-起始值00和最大值60(当达到60时将Minute减1,并将其重置为'00')

mmm(毫秒)-起始值000和最大值999(达到999时将秒数递增1,并将其重置为“ 000”)

0 个答案:

没有答案