我使用Pentaho Spoon进行数据集成(又名PDI)。我的内部客户端想要将报告写入excel文件,这很好,但他也希望在工作簿的单独选项卡中看到我使用的查询。有没有办法使用Spoon将查询本身的实际文本 - 而不是结果 - 导出到.xlsx?
换句话说,如果一个查询是
SELECT Muppets,Peanuts,Sprites 来自eighties_shows.childrens_cartoons
然后我想要一个显示
的excel文件SELECT Muppets,Peanuts,Sprites 来自eighties_shows.childrens_cartoons
答案 0 :(得分:0)
您可以使用PDI表输入从变量中获取数据。尝试定义一个变量,该变量将包含所有列名(以及包含表名的另一个变量),并尝试将此变量传递给表输入步骤。例如: 在表输入步骤中定义:
Select ${COLUMN VARIABLE} FROM ${TABLE NAME VARIABLE}
这将执行您的查询。现在,要在Excel中生成查询,请使用"修改的Java脚本"步骤重新创建相同的结构。 JS Code剪辑如下:
LOOP i=1 till getInputRowMeta().size()
var fields =getInputRowMeta().getValueMeta(i) /* This will give you the list of Input Columns along with the datatype e.g. Muppets String(100) */
END LOOP
从fields变量中删除数据类型,并创建一个具有
串联的最终变量var final_query="SELECT" + cleaned fields variable from the above JS + "FROM" + table name;
因此,您生成一个可以在Excel输出中轻松输出的查询。
这是一个有点冗长的过程。但除了使用上述方法生成查询之外,我无法获得任何其他解决方案。希望这个解决方案对你有好处!! :)
答案 1 :(得分:0)
大多数现代数据库都支持动态sql。如果您使用的是SQL Server,请查看sp_executesql。所有这些意味着您的SQL代码存储为字符串并以这种方式执行。
现在在pentaho中使用动态sql ....
设置一个作业,为输出创建excel文件,并且还可以在作业调用或文件系统中传入sql。现在将sql传递给将负责填充excel文件的作业中的转换。将sql写入你想要的任何表格。
希望这有帮助