Pentaho Job - 根据条件执行作业
Pentaho Job - Execute job based on condition
我有一个 pentaho 作业,计划每周 运行 并从一个 table 获取数据并填充到另一个。
现在作业每周执行一次,无论源 table 是否更新。
我想在作业前添加一个条件 运行s 以查看上周是否更新了源并且 运行 仅当源已更新时才进行作业,否则不要 运行 工作。
有很多方法可以做到这一点。假设您的数据库中有一个 table 存储您工作的最后日期 运行,您可以这样做。
创建一个作业并在其中配置一个参数(我调用了我的 RunJob)。创建一个获取最大 运行 日期或行数的转换,然后从之前的 运行 中查找 运行 日期或行数并进行比较。然后它根据比较结果设置作业变量的值。我的看起来像这样。
请注意,转换的最后一步是作业分支的 Set Variables
步。
然后在您的工作中使用 Simple Evaluation
步骤来测试变量。我的看起来像这样:
这里注意,我的transform只在job需要运行的时候设置变量的值,否则就是NULL
另请注意,请务必在执行 table 加载后更新您的最后一个 运行 日期或行数。这就是 SQL
步骤在作业结束时所做的。
如果您在其中使用一些 JavaScript,您可能可以用更少的步骤处理这个问题,但如果可以避免的话,我宁愿不编写脚本。
我有一个 pentaho 作业,计划每周 运行 并从一个 table 获取数据并填充到另一个。
现在作业每周执行一次,无论源 table 是否更新。
我想在作业前添加一个条件 运行s 以查看上周是否更新了源并且 运行 仅当源已更新时才进行作业,否则不要 运行 工作。
有很多方法可以做到这一点。假设您的数据库中有一个 table 存储您工作的最后日期 运行,您可以这样做。
创建一个作业并在其中配置一个参数(我调用了我的 RunJob)。创建一个获取最大 运行 日期或行数的转换,然后从之前的 运行 中查找 运行 日期或行数并进行比较。然后它根据比较结果设置作业变量的值。我的看起来像这样。
请注意,转换的最后一步是作业分支的 Set Variables
步。
然后在您的工作中使用 Simple Evaluation
步骤来测试变量。我的看起来像这样:
这里注意,我的transform只在job需要运行的时候设置变量的值,否则就是NULL
另请注意,请务必在执行 table 加载后更新您的最后一个 运行 日期或行数。这就是 SQL
步骤在作业结束时所做的。
如果您在其中使用一些 JavaScript,您可能可以用更少的步骤处理这个问题,但如果可以避免的话,我宁愿不编写脚本。