具有不同 sql 查询的 Informatica PC 重启工作流

Informatica PC restart workflow with different sql query

我正在使用 Informatica PC。 我的工作流程有 sql 查询。 此查询类似于“select t1、t2、t3 来自 table,其中 t1 在日期‘2020-01-01’和日期‘2020-01-31’之间” 我需要下载 2020 年到 2022 年之间的所有数据。但我不能在查询中写入它,因为我将从 Teradata 获得 ABORT SESSION。 我想写smth,它将自动重新启动不同日期的工作流程。 从第一次开始 01.2020,第二次开始 02.2020,第三次开始 03.2020 等等。 我该如何解决这个问题?

这是一个很长的解决方案,可以通过两种方式实现。仅使用 shell 脚本会给你很大的灵活性。

首先用两个映射参数参数化你的映射。在 SQL 中使用它们,如下所示。

select t1, t2, t3 from table where t1 between date '$$START_DT' and date '$$END_DT'

想法是在每个 运行 时更改它们。

  1. 仅使用 shell 脚本 - 它很灵活,因为您可以使用此方法处理任意数量的 运行。您需要使用一些 CMD 任务调用此 shell 脚本。
  • 创建一个包含这样数据的主文件
2020-01-01,2020-01-31
2020-02-01,2020-02-29
2020-03-01,2020-03-31
  • 使用以上条目创建三个 informatica 参数文件。第一个文件(file1)应该是这样的
[folder.workflow.session_name]
$$START_DT=2020-01-01
$$END_DT=2020-01-31
  • 在 pmcmd 中使用文件 (file1) 启动 informatica 工作流。请添加 --wait 以便它等待完成。

  • 循环上述步骤,直到完成主文件的所有条目。

  1. 仅使用 informatica 方法 - 此方法不如上述灵活,仅适用于您的问题。
  • 创建一个 shell 使用上述主文件创建三个参数文件的脚本。
  • 使用以上三个参数文件创建三个会话或三个工作集。您需要小心使用正确的参数进行正确的会话。
  • 您可以一个接一个或并行地附加这些 sessions/worklets。