【问题标题】:Rebuild Informatica persistent cache only when data is updated in the table仅在表中更新数据时重建 Informatica 持久缓存
【发布时间】:2016-09-11 02:12:09
【问题描述】:

由于性能问题,我需要在 Informatica 中为大型表构建持久缓存。我的要求是仅在表中有一些更改(数据库是 oracle)时才构建此缓存。在我的情况下,表每周/每月更新数据。

我试图弄清楚informtica 将如何理解表中有一些变化并且它现在需要重建缓存。有什么优雅的方法可以实现这一点吗?

我能想到的一种方法是,每次更新查找表时创建一个包含查找表数据的平面文件。使用平面文件作为查找。 现在,这在我的情况下是可能的,因为查找表是通过 Informatica 加载的。如果它在 informatica 之外得到更新怎么办?

谢谢

【问题讨论】:

    标签: oracle etl informatica informatica-powercenter


    【解决方案1】:

    在此示例中,我在查询中使用源表 emp_location 作为您的示例表。缓存文件也以emp_location*开头。

    在您的主要会话之前,我创建了 2 个虚拟会话。

    1. 创建一个运行表,并在其中保存上次会话运行时间。

       select * 
       from run_history
       where process_name='EMP_DIM'
      
      +--------------+----------------------+
      | PROCESS_NAME |    LAST_READ_TIME    |
      +--------------+----------------------+
      | EMP_DIM      | 15-MAY-2016 12:00:07 |
      +--------------+----------------------+
      

      在主会话的会话前任务中,使用类似这样的内容。

      update run_history 
      set last_read_time = sysdate
      where process_name='EMP_DIM';
      

    现在找到时间,您的表格已更新。如果表没有update time 列,则使用它来获取表的最新更新时间。

    select scn_to_timestamp(max(ora_rowscn)) 
    from emp_location;
    

    现在是第一个虚拟会话,请使用此查询。如果在last_read_time 之后在源表中更新了某些内容,它将返回 1 行。如果没有,则返回 0 行。

    select 1 from dual
    where 
        (select scn_to_timestamp(max(ora_rowscn)) 
          from emp_location)
    >
        (select last_read_time 
           from run_history
           where process_name='EMP_DIM')
    
    1. 在链接任务中,将条件设置为$s_check_last_update.TgtSuccessRows=1

      所以下一个会话只有在真正发生变化时才会运行。在其post_session_task 中运行命令以清除缓存文件。

      Windows:del $PMCacheDir\emp_location* Unix:rm -rf $PMCacheDir\emp_location*

    2. 此链接任务将具有类似的条件。 IIF($s_check_last_update.TgtSuccessRows=1,0,1)

    3. 在主会话中,打开General 选项卡并使用Treat Input links as OR

      现在集成服务将重新创建新的缓存文件,如果它们被删除。

    或者,您可以通过 shell/bash 脚本来实现相同的目的,该脚本将连接到 Oracle 并检查表中是否在上次读取时间后更新了某些内容。如果为真,它应该删除缓存文件。

    【讨论】:

    • 我还没有尝试过,但我认为这会提供所需的输出。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-22
    • 2014-04-06
    相关资源
    最近更新 更多