根据用户登录,需要在pentaho CDE仪表板中更改数据源连接
我们已经准备好了一套仪表盘。到目前为止,此仪表板仅指向一个数据源。但是我们有这样的需求,比如基于pentaho中的用户登录,我们需要检查该登录用户指向哪个数据库,并基于此,我们需要动态更改仪表板连接,并从该特定数据库获取pentaho仪表板上的结果 为此,我们有一个主数据库。在这个数据库中,我们有一个表以及以下列Username、Server name和Database name 现在我们面临的问题是,如何使用基于pentaho BI服务器中用户登录的主表进行动态连接 到目前为止,我已经检查了这个网址。根据用户登录,需要在pentaho CDE仪表板中更改数据源连接,pentaho,pentaho-data-integration,pentaho-cde,pentaho-report-designer,Pentaho,Pentaho Data Integration,Pentaho Cde,Pentaho Report Designer,我们已经准备好了一套仪表盘。到目前为止,此仪表板仅指向一个数据源。但是我们有这样的需求,比如基于pentaho中的用户登录,我们需要检查该登录用户指向哪个数据库,并基于此,我们需要动态更改仪表板连接,并从该特定数据库获取pentaho仪表板上的结果 为此,我们有一个主数据库。在这个数据库中,我们有一个表以及以下列Username、Server name和Database name 现在我们面临的问题是,如何使用基于pentaho BI服务器中用户登录的主表进行动态连接 到目前为止,我已经检查了这
但我不知道这个“SelectedDatabase”参数是如何基于用户登录设置的?有人可以帮助解决此问题吗?在CDA连接中,登录的用户可以是${[security:principalName]}。 下面是一个示例CDA定义,它应该检索所需的ServerName和DatabaseName
<DataAccess access="public" connection="datamart" id="master_table" type="sql">
<Name>master_table</Name>
<Cache duration="3600" enabled="true"/>
<Columns/>
<Parameters>
<Parameter access="private" default="${[security:principalName]}" name="PRM_USER" type="String"/>
</Parameters>
<Query>
select ServerName, DatabaseName
from MasterTable
where UserName = ${PRM_USER};
</Query>
</DataAccess>
主表
选择服务器名、数据库名
来自MasterTable
其中UserName=${PRM_USER};
您需要尽早调用此函数(更改优先级),然后使用resultset为仪表板配置数据源
这是多租户的Pentaho文档,您需要分片类型。
看起来需要一些代码才能以安全的方式工作
谢谢您的快速回复。因为我不太熟悉CDA数据源类型。我主要只研究过SQL、Kettle MDX数据源。如果你有任何样本仪表板准备与CDA或任何参考资料,那么请与我分享。提前谢谢。如果你有任何与之相关的链接或示例,请与我分享。所以我可以看一看,得到更多的想法。提前感谢。我这里没有工作示例,也没有要测试的数据库。如果同一服务器上有不同的数据库使用相同的凭据,则可以在SQL查询中使用DatabaseName作为变量。对于不同的服务器和不同的凭据,事情变得更加复杂。我会考虑通过API获取数据,API后面有一个水壶转换。谢谢你的输入。您是否有任何示例pentaho仪表板,其具有CDA数据源连接,用于在仪表板上显示数据?