Обновление учетных данных для источников данных в режиме импорта в Power BI через API - PullRequest
0 голосов
/ 24 апреля 2018

Я использую PowerBI API для загрузки некоторых файлов pbix.Большинство из этих файлов используют режим импорта для SQL.

Когда я использую API остальных для загрузки файлов, учетные данные не обновляются на веб-сайте.Я знаю, что учетные данные не живут в реальном файле.Я также знаю, что есть API для исправления этих учетных данных с помощью API, но я не смог заставить его работать в режиме импорта.Кажется, работает только с DirectQuery .

Я также пытался Установить все соединения , что задокументировано для работы только с соединениями с прямым запросом, используя этот формат:

Data Source=xxxx.mydb.net; Initial Catalog=dbname;User ID=xxx;Password=xxxx;

Моя проблема сейчас заключается в том, что способ питанияBI управляет кэшированными учетными данными, что затрудняет определение того, какие учетные данные используются.Происходит какое-то волшебство, когда обновление одного файла иногда приводит к тому, что другие файлы, использующие те же учетные данные, также могут обновляться.

Это ошибка, которую я получаю для всех файлов, загруженных через API.

Ошибка источника данныхПланированное обновление было отключено из-за того, что хотя бы один источник данных не предоставил учетные данные.Пожалуйста, предоставьте учетные данные для всех источников данных, а затем включите запланированное обновление.

Кластер This-is-not-relevant.net
Идентификатор активности00000000-0000-0000-0000-000000000000
Запрос ID00000000-0000-0000-0000-000000000000
Время2020-09-99 99: 54: 11Z

Спасибо,
Chéyo

1 Ответ

0 голосов
/ 08 мая 2018

Это решение с использованием PowerBI Csharp SDK. Убедитесь, что полезная нагрузка JSON имеет свойство scaped.

var request = new UpdateDatasourceRequest
{
    CredentialDetails = new CredentialDetails
    {
        Credentials = $"{{\"credentialData\":[{{\"name\":\"username\",\"value\":{JsonConvert.SerializeObject(credential.Username)}}},{{\"name\":\"password\",\"value\":{JsonConvert.SerializeObject(credential.Password)}}}]}}",
        CredentialType = "Basic",
        EncryptedConnection = "Encrypted",
        EncryptionAlgorithm = "None",
        PrivacyLevel = "None"
    }
};

await PowerBI.Client().Gateways.UpdateDatasourceAsync(gatewayId: datasource.GatewayId, datasource.DatasourceId, updateDatasourceRequest: request);
...