我有这样的查询:
SELECT count(distinct ID) FROM TBLC WHERE date BETWEEN ? AND ?;
我正在使用Pentaho Spoon。我正在使用'执行SQL脚本'/语句。我看到的选项是每行的Execute,作为单个语句和变量替换执行。
如果我需要更改查询或需要执行其他步骤,请回复。
修改
我使用Pentaho Spoon将数据从Infobright数据库(table1,table2)传输到Infobright数据库(table3)。
查询类似于:
SELECT table1.column1, table2.column2
FROM table1 JOIN table2 ON table1.id=table2.id
WHERE table2.date BETWEEN '2012-12-01' AND '2012-12-30'
我想要一种方法,这样我每次运行转换时都不必手动指定日期范围。我想自动化日期范围。
提前致谢。
答案 0 :(得分:2)
根据您所描述的内容,我相信您可以通过使用生成行步骤将行注入包含所需日期的流来完成您想要的任务,然后为流中的每个日期行生成所需的查询从源表中获取所需的所有行。
答案 1 :(得分:0)
您可以将execute用作单个语句和变量替换,因为它们最适合您的用例。
将参数StartDate和EndDate添加到转换中,并在查询中使用它们,如下所示。在Execute SQL Script步骤中启用“变量分配”。
SELECT table1.column1, table2.column2
FROM table1 JOIN table2 ON table1.id=table2.id
WHERE table2.date BETWEEN **$StartDate** AND **$EndDate**
执行转换时StartDate和EndDate的值。
答案 2 :(得分:-1)
我猜日期是在数据库中的表或文件中 你能做的是: 创建一个将这些参数传递给steam并设置变量的作业。 在下一个工作中,您可以使用{date_from} {date to}
将它们用作查询的变量这样每次运行作业时都会占用数据库内部的内容 你当然需要更新date_from和date_to