#c# #powerbi #xmla #adomd.net
Вопрос:
Я совершенно новичок в xmla и пытаюсь использовать версию Microsoft.AnalysisServices.SdomdClient.NetCore.retail.amd64
19.22.0.1 для подключения к набору данных в рабочей области Powerbi premium. Я извлек строку подключения из файла excel, созданного с помощью analyze in excel
опции, но попытка ее использования приводит к следующему AdomdConnectionException
. Обновление строки подключения на основе руководства по документации приводит к тому же результату. Электронная таблица Excel работает нормально, что, как я полагаю, означает, что параметры конечных точек xmla установлены соответствующим образом. Я могу получить доступ к набору данных и связанным отчетам с помощью app.powerbi.com которые предполагают, что у меня есть необходимые разрешения.
var tenantId = "<AAD Tenant Guid>";
var credential = new DefaultAzureCredential(new DefaultAzureCredentialOptions
{
VisualStudioTenantId = tenantId,
VisualStudioCodeTenantId = tenantId,
SharedTokenCacheTenantId = tenantId,
InteractiveBrowserTenantId = tenantId,
});
var token = await credential.GetTokenAsync(new TokenRequestContext(scopes: new[] { "https://analysis.windows.net/powerbi/api" }));
// https://docs.microsoft.com/en-us/analysis-services/instances/connection-string-properties-analysis-services?view=asallproducts-allversions
var connectionString = @$"Provider=MSOLAP.8;Integrated Security=ClaimsToken;Persist Security Info=True;Initial Catalog=<DataSet Name>;Data Source=powerbi://api.powerbi.com/v1.0/myorg/<workspace>;MDX Compatibility=1;Safety Options=2;MDX Missing Member Mode=Error;Password={token.Token}";
Исключение 1 — неправильная схема в URL-адресе
Майкрософт.Услуги по анализу.АдомдКлиент.Исключение AdomdConnectionException: Удаленный сервер вернул ошибку: (401) Несанкционированный. —> Исключение System.Net.WebException: Удаленный сервер вернул ошибку: (401) Несанкционированный. в System.Net.HttpWebRequest.GetResponse() в Microsoft.Услуги по анализу.АдомдКлиент.В качестве меры предосторожности.PutHttpJsonData[TRequest,TResult](Uri uri, заголовки словаря 2, объект запроса запроса, время ожидания Int32)
в Microsoft.Услуги по анализу.АдомдКлиент.В качестве меры предосторожности.ResolvePowerBICluster(Uri discoverUrl, токен строки, TimeLeft TimeLeft, тип AsInstanceType asInstanceType) — Конец трассировки внутреннего стека исключений — в Microsoft.Услуги по анализу.АдомдКлиент.В качестве меры предосторожности.Исключение ThrowConnectionException(исключение WebException ex, тип AsInstanceType asInstanceType) в Microsoft.Услуги по анализу.АдомдКлиент.В качестве меры предосторожности.ResolvePowerBICluster(Uri discoverUrl, токен строки, TimeLeft TimeLeft, тип AsInstanceType asInstanceType) в Microsoft.Услуги по анализу.АдомдКлиент.ConnectionInfo.ValidateAndSetPbiDatasourceAndLocation() в корпорации Майкрософт.Услуги по анализу.АдомдКлиент.Информация о соединении.HandleAsAzureconnections() в Microsoft.Услуги по анализу.АдомдКлиент.ConnectionInfo.ValidateAndCompleteConnectionConfiguration() в корпорации Майкрософт.Услуги по анализу.АдомдКлиент.ConnectionInfo.SetConnectionString(строка cs) в корпорации Майкрософт.Услуги по анализу.АдомдКлиент.ConnectionInfo..ctor(Строка строки подключения) в Microsoft.Услуги по анализу.АдомдКлиент.Подключение ADOMD.XmlaClientProvider.Майкрософт.Услуги по анализу.АдомдКлиент.Подключение ADOMD.IXmlaClientProviderEx.set_ConnectionString(строковое значение) в Microsoft.Услуги по анализу.АдомдКлиент.AdomdConnection.set_ConnectionString(строковое значение) в Microsoft.Услуги по анализу.АдомдКлиент.AdomdConnection..ctor(Строка соединительной строки)
Update #1
A couple of tweaks to get further.
- the connection string I got from excel used the schema
azurebi
instead ofpowerbi
- shifted the token scope to
https://analysis.windows.net/powebi/api
This allows the AdomdConnection
to be instantiated but now when attempting to Open()
the connection it throws exception #2 below.
Exception 2
Microsoft.AnalysisServices.AdomdClient.AdomdConnectionException: The
remote server returned an error: (401) Unauthorized.Технические данные: RootActivityId: 025c6866-1776-48e0-a43f-677cdde76a20 Дата (UTC): 7/8/2021 11:36:14 ВЕЧЕРА —> Исключение System.Net.WebException: Удаленный сервер вернул ошибку: (401) Несанкционированный. в System.Net.HttpWebRequest.GetResponse()
в Microsoft.Услуги по анализу.AdomdClient.HttpRequestResponseExtensions.GetResponseWithErrorHandling(HttpWebRequest HttpWebRequest, логическое значение isPbiPremium) в Microsoft.Услуги по анализу.АдомдКлиент.HttpStream.WaitForAndUpdateHttpResponseContainingXmlaPayload() в Microsoft.Услуги по анализу.АдомдКлиент.HttpStream.GetResponseStream () — — — Конец трассировки внутреннего стека исключений — в Microsoft.Услуги по анализу.АдомдКлиент.В качестве меры предосторожности.Исключение ThrowConnectionException(исключение WebException ex, тип AsInstanceType asInstanceType) в Microsoft.Услуги по анализу.АдомдКлиент.HttpStream.GetResponseStream() в Microsoft.Услуги по анализу.АдомдКлиент.HttpStream.GetResponseDataType() в Microsoft.Услуги по анализу.АдомдКлиент.Сжатый поток.GetResponseDataType() в Microsoft.Услуги по анализу.AdomdClient.XmlaClient.EndRequest(логический useBinaryXml) в Microsoft.Услуги по анализу.AdomdClient.XmlaClient.EndRequest() в Microsoft.Услуги по анализу.AdomdClient.xmlклиент.Создает сеанс(свойства ListDictionary, логическая совместимость sendNamespaceCompatibility, sessionToken строки)
в корпорации Майкрософт.Услуги по анализу.AdomdClient.xmlclient.Создает сеанс(свойства ListDictionary, логическая совместимость имен отправок) в Microsoft.Услуги по анализу.АдомдКлиент.Подключение ADOMD.XmlaClientProvider.Майкрософт.Услуги по анализу.АдомдКлиент.Подключение ADOMD.IXmlaClientProviderEx.Создает сеанс(логическая совместимость имен отправок) в Microsoft.Услуги по анализу.АдомдКлиент.Подключение ADOMD.ConnectToXMLA(логическое значение CreateSession, логическое значение isHTTP) в Microsoft.Услуги по анализу.АдомдКлиент.Подключение ADOMD.Открыть()