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

Based on User login, Need to Change data source connection in pentaho CDE dashboard

我们已经准备好一组仪表板。截至目前,此仪表板仅指向一个数据源。但是我们有要求,比如基于 pentaho 中的用户登录,我们需要检查这个登录用户指向哪个数据库,并基于此我们需要动态更改仪表板连接并从该特定数据库获取 pentaho 仪表板上的结果。

为此我们有一个主数据库。在这个数据库中,我们有一个 table 以及以下列用户名、服务器名称和数据库名称。

现在我们面临的问题是如何根据 pentaho BI 服务器中的用户登录使用此 master table 建立动态连接?

到目前为止,我已经检查了这个 url https://forums.pentaho.com/threads/136669-Dynamic-Datasource/。 但是我不明白这个 "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>

您需要尽早调用它(更改优先级),然后使用结果集为仪表板配置数据源。

这是多租户的 Pentaho 文档,您需要 Sharding 类型。 看起来需要一些代码才能使其以安全的方式工作。

https://help.pentaho.com/Documentation/7.1/0R0/070/Multi-Tenancy