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

Posted

技术标签:

【中文标题】如何将条件日期参数传递给表输入步骤?【英文标题】:How to pass conditioned date parameters to Table input step? 【发布时间】:2017-02-01 17:45:36 【问题描述】:

我需要将我的 SQL SELECT 建立在基于日期参数的作业中的多个转换中,但我在使其工作时遇到了问题。

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

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

在倒数第二个转换中,我需要在 SELECT 中使用这些参数。

我尝试过但没有成功:

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

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

3) 检查“将以前的结果复制到参数?”和“现在执行每个输入?”在第二个转换的 Job entry details 的 Advanced 选项卡中。如果它在执行时标记成功,但不执行以下转换。

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

编辑:一些带有解释的屏幕

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 AND $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;

【问题讨论】:

在more than one place 中提出同样的问题总是一个好主意。 【参考方案1】:

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

查看我的一个水壶转换的屏幕截图(类似于您想要实现的目标)。 变量“timenow”来自之前的 js 修改步骤,和你的一样。

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

【讨论】:

谢谢你的回答,让我问一个问题:你是直接从修改到你的 SQL 脚本的 JS 做一个跳跃,它会获取变量,还是你把变量放在第一个转换中用在别人身上? 是的,上一步是 js 修改的脚本步骤,点击获取字段并选择您的参数(按顺序)供您的查询使用 所以你必须用 BETWEEN 替换这个:“BETWEEN $fst AND $lst”?和? 再次感谢您,我编辑了帖子以可能对问题进行更多澄清,而且,除了我的偏好是只设置一次变量(因为到最后会有更多变量)项目)如果我找不到任何解决方案,我将使用你的

以上是关于如何将条件日期参数传递给表输入步骤?的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将参数传递给 Flutter/Dart 中的 Widget?

如何将关键字对作为参数传递给函数中的模块?

将 Access 表日期值作为参数传递给 SQL Server 存储过程

VBA 将日期参数传递给 SQL Server 存储过程

如何将参数传递给SQL(Excel)中的查询

如何将用户输入参数传递给我的云函数?