根据用户登录,需要在pentaho CDE仪表板中更改数据源连接

根据用户登录,需要在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服务器中用户登录的主表进行动态连接 到目前为止,我已经检查了这

我们已经准备好了一套仪表盘。到目前为止,此仪表板仅指向一个数据源。但是我们有这样的需求,比如基于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数据源连接,用于在仪表板上显示数据?