我有一个Pentaho-Kettle转换,它从两个单独的csv文件加载数据,然后应用'唯一行(hashset)'转换。
我可以根据“唯一行”步骤的输出执行SQL脚本吗?我想运行像
这样的东西select field1, sum(field2) as MyCalc
from InputTable
group by field1
having sum(field2) > 100
其中InputTable不是SQL数据库中的表,但是唯一行的输出步骤。
这甚至可能吗?
我应该将'unique rows'的结果输出到数据库中的临时表吗?关键是我希望由没有数据库写入权限的人来运行;我可能会给他们写临时表的权限,但这就是它。
谢谢!
PS是的,我知道对于像上面那样平庸的事情,我可以使用'分组'步骤,但我想到的是比这更复杂的东西,据我所知,无法真正实现预定义的步骤。答案 0 :(得分:0)
继续@Rishu的回答以修改它: 这是完全 PDI所在的应用程序类型。
考虑以下一个作业的范围和两个子转换。
/* the following may look like a very invalid SQL query,
but that's how PDI would replace the variables with their values */
select
${SQLSubstitutes.Field1},
${SQLSubstitutes.Field2} as MyCalc
from
InputTable
group by
${SQLSubstitutes.Field1}
having
sum(${SQLSubstitutes.Field2}) > 100
我希望这有点帮助。
答案 1 :(得分:-1)
如果我没错,我认为你不能用csv文件中的值替换表名。我试过用SQL查询复制你的需求(db:PostgreSQL):
select field1, max(field2) from (select 1,2 as field1, 2,3 as field2) a
group by a.field1
假设field1和field2的值来自csv文件。它没有取得理想的结果。
我认为您可以尝试的一种解决方案是将这些csv数据插入表中然后运行查询。
希望有所帮助:)