gpt4 book ai didi

c# - 无法使用 API 更改 Power BI 连接字符串

转载 作者:行者123 更新时间:2023-12-02 03:09:24 26 4
gpt4 key购买 nike

我正在尝试使用其 API (Microsoft.IdentityModel.Clients.ActiveDirectory) 更改 Power BI 连接字符串。使用此 API,我可以将 .pbix 文件发布到我的 PBI 帐户。但在尝试更新数据集连接字符串时出现 Bad Request 错误。这是我的代码。

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

var restUrlImportPbix = POWER_BI_SERVICE_ROOT_URL + $"datasets/{dataset.id}/Default.SetAllConnections";

var postData = new { connectionString = _powerBISettings.DataConnectionString };
var response = client.PostAsync(restUrlImportPbix, new StringContent(JsonConvert.SerializeObject(postData), Encoding.UTF8, "application/json")).Result;

我还在博客中发现SetAllConnections 仅适用于直接查询连接。请大家帮忙。

最佳答案

除了尝试通过更改连接字符串来重定向数据源之外,您还可以通过允许报表本身切换其数据源来实现相同的目的。为此,请使用 connection specific parameters报告中。为此,请通过单击编辑查询打开Power Query Editor,并在管理参数中定义两个新的文本参数,将它们命名为ServerName 数据库名称:

enter image description here

enter image description here

将其当前值设置为指向您的数据源之一,例如SQLSERVER2016 和 'AdventureWorks2016。然后右键单击报告中的查询并打开高级编辑器`。在M代码中找到服务器名称和数据库名称:

enter image description here

并将它们替换为上面定义的参数,因此 M 代码将如下所示:

enter image description here

现在您可以关闭并应用更改,并且您的报告应该像以前一样工作。但现在当您想要更改数据源时,请使用编辑参数来完成:

enter image description here

并更改服务器和/或数据库名称以指向您要用于报告的其他数据源:

enter image description here

更改参数值后,Power BI Desktop 将要求您应用更改并从新数据源重新加载数据。要更改在 Power BI 服务中发布的报表的参数值(即数据源),请转到数据集的设置并输入新的服务器和/或数据库名称:

enter image description here

如果服务器位于本地,还请检查网关连接,以确保其配置正确以使用正确的网关。您可能还想在管理网关中检查可用网关:

enter image description here

更改数据源后,刷新数据集以从新数据源获取数据。使用 Power BI Pro 帐户,您可以每 24 小时执行 8 次,而如果数据集位于专用容量中,则此限制将提高到每 24 小时 48 次。

要以编程方式执行此操作,请使用 Update Parameters/Update Parameters In GroupRefresh Dataset/Refresh Dataset In Group REST API 调用,或者如果我修改您的代码,如下所示:

var client = new HttpClient();
client.DefaultRequestHeaders.Add("Accept", "application/json");
client.DefaultRequestHeaders.Add("Authorization", "Bearer " + accessToken);

var restUrlUpdateParameters = POWER_BI_SERVICE_ROOT_URL + $"datasets/{dataset.id}/Default.UpdateParameters";
var postData = new { updateDetails = new[] { new { name = "ServerName", newValue = "NEWSERVER" }, new { name = "DatabaseName", newValue = "Another_AdventureWorks2016" } } };
var responseUpdate = client.PostAsync(restUrlUpdateParameters, new StringContent(JsonConvert.SerializeObject(postData), Encoding.UTF8, "application/json")).Result;

var restUrlRefreshDataset = POWER_BI_SERVICE_ROOT_URL + $"datasets/{dataset.id}/refreshes";
var responseRefresh = client.PostAsync(restUrlRefreshDataset, null).Result;

这是使您的报告“可切换”的简单方法,例如用于将一份报告从 DEV 或 QA 切换到 PROD 环境,或者作为灾难恢复计划的一部分,自动将某个工作组中的所有报告切换到另一台 DR 服务器。一般来说,我建议在所有报告中定义此类连接特定参数。

关于c# - 无法使用 API 更改 Power BI 连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57904162/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com