Ответ 1
Помимо попытки перенаправить источник данных путем изменения строки подключения, вы можете добиться того же, разрешив самому отчету переключать его источник данных. Для этого используйте параметры подключения в отчете. Для этого откройте Power Query Editor
, нажав Edit Queries
и в Manage Parameters
определите два новых текстовых параметра, назовите их ServerName
и DatabaseName
:
Установите их текущие значения, чтобы они указывали на один из ваших источников данных, например, SQLSERVER2016
и "AdventureWorks2016 . Then right click your query in the report and open
Расширенный редактор". Найдите имя сервера и имя базы данных в коде M:
и замените их параметрами, определенными выше, поэтому код M будет выглядеть так:
Теперь вы можете закрыть и применить изменения, и ваш отчет должен работать как прежде. Но теперь, когда вы хотите изменить источник данных, сделайте это с помощью Edit Parameters
:
и измените имя сервера и/или базы данных так, чтобы оно указывало на другой источник данных, который вы хотите использовать для своего отчета:
После изменения значений параметров Power BI Desktop попросит вас применить изменения и перезагрузить данные из нового источника данных. Чтобы изменить значения параметров (т.е. источника данных) отчета, опубликованного в Power BI Service, перейдите в настройки набора данных и введите имя нового сервера и/или базы данных:
Если сервер локальный, проверьте также Gateway connection
, чтобы убедиться, что он правильно настроен для использования правильного шлюза. Вы также можете проверить доступные шлюзы в Manage gateways
:
После изменения источника данных обновите ваш набор данных, чтобы получить данные из нового источника данных. С помощью учетной записи Power BI Pro вы можете делать это 8 раз в сутки, а если набор данных находится в выделенной емкости, этот предел увеличивается до 48 раз в сутки.
Чтобы сделать это программно, используйте Update Parameters
/Update Parameters In Group
и Refresh Dataset
/Refresh Dataset In Group
вызовы API REST или если я изменю ваш код, примерно так:
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. Вообще я рекомендую определять такие параметры соединения во всех отчетах.