更新PowerBI嵌入式报告连接字符串不起作用

时间:2018-06-20 11:44:00

标签: powerbi powerbi-embedded powerbi-datasource

因此问题如下:我们有多个租户,多个数据库托管在不同的Azure sql主机上,每个租户都具有不同的工作区。由于租户数量很大,因此为每个租户生成报告然后将其上载到相应的应用程序工作区并不是很可行。因此,我们尝试基于某些配置使整个过程自动化(我们对每个租户都有相同的报告,只是数据源不同)。我们设法将相同的报告上传到相应的应用程序工作区,但是我们无法以编程方式更新ConnectionString。当我们尝试更改数据源时,似乎失败了。上传的文件保留其原始的ConnectionString。此外,还使用DirectQuery设置了报告。

示例代码:

var import = await pbiClient.Imports.PostImportWithFileAsyncInGroup(GroupId, fileStream, importName, nameConflict);//Name conflicts : Abort, Ignore, Overwrite

var datasets = await pbiClient.Datasets.GetDatasetsInGroupAsync(GroupId);
var latestDataset = datasets.Value.FirstOrDefault(x => x.Name == importName);

var reports = await pbiClient.Reports.GetReportsInGroupAsync(GroupId);
var latestReport = reports.Value.FirstOrDefault(x => x.Name == importName);

var connectionDetails = new ConnectionDetails($"Data Source={DbHost} ;Initial Catalog={DbName};Encrypt=True;TrustServerCertificate=True;PersistSecurityInfo=True;User Id={DbPowerBIUser};Password={DbPowerBIUser};MultipleActiveResultSets=true;");
var resp = await pbiClient.Datasets.SetAllDatasetConnectionsInGroupWithHttpMessagesAsync(GroupId, latestDataset.Id, connectionDetails);

1 个答案:

答案 0 :(得分:0)

  1. 您需要对导入状态进行轮询,直到成功完成:https://docs.microsoft.com/en-us/rest/api/power-bi/imports/getimportbyidingroup
  2. 设置新连接时,连接字符串中的用户名和密码将被忽略(您可以根据需要使用以下命令进行设置:https://docs.microsoft.com/en-us/rest/api/power-bi/gateways/updatedatasource
  3. 您的意思似乎是失败了?您是否从api调用中获得异常?还是报告是用旧数据呈现的?