Pentaho 如何将条件日期参数传递到表输入步骤?

Pentaho 如何将条件日期参数传递到表输入步骤?,pentaho,kettle,pdi,Pentaho,Kettle,Pdi,我需要在一个作业中的几个转换中根据日期参数进行SQL选择,但我在使其工作时遇到了问题 计划是:在以下条件下参数化开始日期和结束日期:如果是任何月份的第一天,参数将成为最后一个月的第一天和最后一天;如果不是,则是本月的第一天,直到昨天 我已经做了:基于修改后的Java脚本值步骤创建了两个参数,并将它们传递给Set变量,所有这些都在第一次转换中完成 在第二个到最后一个变换中,我需要在选择中使用这些参数 我尝试过但没有成功的: 1) 使用Get变量来获取这两个变量(它们出现在下拉列表中,从下拉列表中获

我需要在一个作业中的几个转换中根据日期参数进行SQL选择,但我在使其工作时遇到了问题

计划是:在以下条件下参数化开始日期和结束日期:如果是任何月份的第一天,参数将成为最后一个月的第一天和最后一天;如果不是,则是本月的第一天,直到昨天

我已经做了:基于修改后的Java脚本值步骤创建了两个参数,并将它们传递给Set变量,所有这些都在第一次转换中完成

在第二个到最后一个变换中,我需要在选择中使用这些参数

我尝试过但没有成功的:

1) 使用Get变量来获取这两个变量(它们出现在下拉列表中,从下拉列表中获取它们),创建到表输入的跃点,并将SQL代码中的日期更改为${fst}和${lst}。尝试了是否选中“替换脚本中的变量?”

2) 不使用Get变量,而是将它们写入转换属性的参数选项卡中。还尝试了是否选中“替换脚本中的变量?”

3) 在第二次转换的作业输入详细信息的高级选项卡中,选中“将以前的结果复制到参数”和“立即为每个输入执行”。在这种情况下,它在执行时标记success,但不执行以下转换

我猜我可能遗漏了一些简单的东西,但无法通过搜索得到答案

编辑:一些带有说明的屏幕

(一)

(二)

3) 我正在尝试执行的查询(查看${fst}和${lst}之间的部分)

尝试使用占位符(?)替换变量

请看我的一个水壶转换的屏幕截图(与您试图实现的类似)。 变量“timenow”来自前面的js修改步骤,与您的步骤相同

如果要使用多个参数,请记住,将按照“参数:”下拉框中的外观顺序绑定(也显示在屏幕截图中)


谢谢您的回答,让我问一件事:您是直接从修改后的JS跳到SQL脚本,然后它获取变量,还是将变量放在第一个转换中,以便在其他脚本中使用?是的,前面的步骤是修改后的JS脚本步骤,单击获取字段并选择参数(按顺序)要供查询使用,您必须将“BETWEEN${fst}和${lst}”替换为BETWEEN?还有?再次感谢你,我编辑了这篇文章,也许是为了进一步澄清这个问题,此外,我更喜欢只设置一次变量(因为在项目结束时会有更多的变量),如果我找不到任何解决方案,我会用你的方法来解决同样的问题。
WITH cte AS (
SELECT MAX(data_atendimento) AS data_atendimento, MAX(a.id_customer) AS id_customer, MAX(id_atendimento) AS id_atendimento, MAX(operador) AS operador
FROM tb_atendimento a INNER JOIN tb_param_atd p ON a.id_atendimento = p.id_atd
WHERE id_especializacao = 26 
    AND h_data -> 'CPC_OI' IS NULL 
    AND data_atendimento BETWEEN ${FST} AND ${LST} --DATE_TRUNC('month', CURRENT_DATE) AND CURRENT_DATE + INTERVAL '1 DAY' 
GROUP BY CAST(a.id_customer AS VARCHAR) || CAST(data_atendimento AS VARCHAR))
SELECT *, CASE WHEN MAX(data_atendimento) OVER (PARTITION BY id_customer) = data_atendimento THEN true ELSE false END AS ultimo_atendimento FROM cte;