主题:如何在多个环境中部署带有子报表的 Pentaho 报表

Posted

技术标签:

【中文标题】主题:如何在多个环境中部署带有子报表的 Pentaho 报表【英文标题】:Thread: How to deploy a Pentaho report with subreports across multiple environments 【发布时间】:2011-02-16 19:19:31 【问题描述】:

我正在尝试创建可以在不同环境(测试、生产)和/或不同数据库中部署的报告,而无需更改 prpt 文件。

所以,我创建了一些 jndis,并将 jndi 名称作为参数传递给 xaction,该 xaction 依次执行查询并将结果传递给 prpt。效果很好。

直到我开始使用子报表。

我认为没有办法将结果集传递给主报表的每一行的子报表。

看来如果你使用子报表,你必须在子报表中定义连接和查询。

我错了吗?有没有人试过这个?使用子报表部署多租户报表并将连接或 jndi 作为参数传递的“正确”方式是什么? (如果有其他方法,我愿意放弃使用 jndi)

谢谢!

更新:在 biserver 3.7 和 3.8 link987654321@中有一个与此相关的错误

【问题讨论】:

【参考方案1】:

不,可以在父报表中定义连接。只需确保在子报表本身的查询名称设置中指定它即可。

【讨论】:

Codek,对不起。我自己没有解释。我的意思是,如果您使用 XAction 来避免在 prpt 中指定连接(这是我的意图,因为我同时针对 5 个以上数据库使用报告),您仍然必须在子报告中指定连接. 不,你不知道。只需将 xaction 中的多个数据集传递给报表,并将它们作为“外部”数据集引用,然后将它们传递给子报表。我已经这样做了,而且效果很好。在 pentaho 论坛中提问可能是值得的 - 这是一个更好的地方来回答 Pentaho 的问题。 谢谢,Codek,我就是这么做的,但没有人回答。我在报告中引用了两个数据集,但似乎子报告准备语句没有执行(如果我将它作为常规数据集传递,它可以执行)。你有样品吗? 这是一个影响 3.7 和 3.8 的 bug link 噢!哦,看起来有很多活动,希望很快就会修复。很方便知道..【参考方案2】:

XAction 在报告引擎有机会实际使用它们之前预先计算所有数据集。外部数据集是预先计算的,没有关于您的子报表的任何信息,因此它将失败(除非您使用一些丑陋的技巧将计算的查询名称用作预先计算的表模型的查找键)。

您为什么不像其他人一样使用 JNDI? JDNI 旨在将连接信息抽象为一个逻辑名称。连接是在报表之外定义的,报表只引用名称。

阅读我名为“Dont hardcode host names, use JDNI”的博文了解更多信息(这可能描述了您问题的核心;))。

【讨论】:

以上是关于主题:如何在多个环境中部署带有子报表的 Pentaho 报表的主要内容,如果未能解决你的问题,请参考以下文章

当子报表在多个页面上呈现时,如何在每个页面上显示主报表的列标题

部署报表和子报表后,s-s-rS 无法呈现子报表

Xmind如何删除一个带有很多子主题的子主题,并且不删除后面带的子主题?

如何使用 Jenkins 部署多个 SpringBoot 环境?

Excel导出工具包pentaho report

如何将 Crystal 报表连接到多个数据库?