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

时间:2017-02-01 17:45:36

标签: pentaho kettle pdi

我需要将SQL SELECT基于日期参数的作业中的几个转换,并且我有问题使其工作。

计划是:在以下条件下对begin_date和end_date进行参数化:如果它是任何月份的第1天,参数将成为上个月的第一天和最后一天;如果没有,它是当月的第一天,直到昨天。

我已经做过的事情:基于Modified Java Script Value步骤创建了两个参数,并将它们传递给Set Variables,这些都在第一个转换中。

在第二次到最后一次转换时,我需要在SELECT中使用这些参数。

我尝试过但没有工作:

1)使用Get Variables获取两者(它们出现在下拉列表中,从中获取它们),创建表输入的跃点并将SQL代码中的日期更改为$ {fst}和$ { LST}。尝试使用和不使用检查'在脚本中替换变量?'

2)不使用Get Variables,而是在transform属性的Parameters选项卡中写入它们。还尝试使用和不使用check'替换脚本中的变量?'

3)检查'将以前的结果复制到参数?'和'现在执行每个输入?'在第二个转换的作业条目详细信息的“高级”选项卡中。如果它在执行时标记成功,但不执行以下转换。

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

编辑:一些带解释的屏幕

1)my first transformation which is to set variables

2)my second transformation which i try to get and use the variables

3)我试图做的查询(查看BETWEEN $ {fst}和$ {lst}部分)

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;

1 个答案:

答案 0 :(得分:2)

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

从我的一个水壶变换中看这个截图(类似于你想要实现的)。 变量" timenow"来自之前的js修改步骤,与您的相同。

如果您打算使用多个参数,请记住将从下方框中按照顺序绑定"参数:" (也在屏幕截图中显示)

Execute SQL script STEP