【问题标题】:Informatica: Write data into multiple files based on State nameInformatica:根据状态名称将数据写入多个文件
【发布时间】:2018-10-09 19:18:54
【问题描述】:

我有一个表,其中有一列名为 State。我的要求是从表中读取数据并根据州名将其写入多个文件。我使用 Informatica PowerCenter 作为 ETL 工具

【问题讨论】:

    标签: informatica informatica-powercenter


    【解决方案1】:

    如下创建映射:

    Source --> SQ (sort data state name)--> Expression --> Transaction Control --> Target
    

    表达式:创建一个变量端口来存储之前的状态值和一个输出端口标志。

    flag = IIF(state = var_state,0,1)
    var_state = state
    

    在事务控制转换中,当 Flag = 1 时使用 TC_COMMIT_BEFORE

    将文件名端口添加到目标并将状态名称映射为文件名。

    【讨论】:

    • 我也试过了,效果很好。但是,当我将时间戳添加到文件名 (ie filename = statename||'_'||SYSDATE) 时,我得到了一些州的多个文件。该表有几百万条记录,目标文件有大小限制吗?
    • 这可能是因为您使用的是 SYSDATE。它将给出记录处理的确切时间,因此文件名可能会更改。请使用 SESSSTARTTIME 和时间。如果您使用 SESSSTARTTIME,则所有记录都应具有相同的时间戳
    【解决方案2】:

    您也可以使用 post shell 命令执行此操作:

    Output file --> Name of output file of Informatica.
    $2 --> assume 2nd field is the statement. Replace it as per your file
    
        awk -F\| '{print>$2}' outputfile
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 2019-05-10
      • 1970-01-01
      相关资源
      最近更新 更多