0

我使用 Pentaho Spoon 进行数据集成(又名 PDI)。我的内部客户希望将报告写入 excel 文件,这很好,但他也希望查看我在工作簿的单独选项卡中使用的查询。有没有办法使用 Spoon 将查询本身的实际文本(而不是结果)导出到 .xlsx?

换句话说,如果一个查询是

从八十年代_shows.childrens_cartoons 中选择布偶、花生、精灵

然后我想要一个显示

从八十年代_shows.childrens_cartoons 中选择布偶、花生、精灵

4

2 回答 2

0

您可以使用 PDI 表输入从变量中获取数据。尝试定义一个变量来保存所有列名(以及另一个包含表名的变量)并尝试将此变量传递给表输入步骤。例如:在表格输入步骤中定义:

Select ${COLUMN VARIABLE} FROM ${TABLE NAME VARIABLE}

这将执行您的查询。现在要在您的 excel 中生成查询,请使用“修改后的 Java 脚本”步骤重新创建相同的结构。JS代码片段如下:

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

从您的字段变量中删除数据类型并创建一个具有串联的最终变量

var final_query="SELECT" + cleaned fields variable from the above JS + "FROM" + table name;

因此,您可以生成一个查询,您可以轻松地将其输出到您的 excel 输出中。

这是一个稍微漫长的过程。但除了使用上述方法生成查询外,我无法获得任何其他解决方案。希望这个解决方案对你有好处!:)

于 2014-11-07T09:22:06.170 回答
0

大多数现代数据库都支持动态 sql。如果您使用的是 SQL Server,请查看 sp_executesql。这意味着您的 SQL 代码被存储为字符串并以这种方式执行。

现在在 pentaho 中使用动态 sql....

设置一个作业,该作业创建用于输出的 excel 文件,并且还获取通过作业调用或从文件系统传入的 sql。现在将 sql 传递给将负责填充 excel 文件的作业中的转换。将 sql 写入您想要的任何工作表。

希望这可以帮助

于 2014-11-13T20:10:43.190 回答