Код для выполнения запросов DMV к наборам данных Power BI без использования идентификатора клиента и секрета.C#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 Код для выполнения запросов DMV к наборам данных Power BI без использования идентификатора клиента и секрета.

Сообщение Anonymous »

Используя приведенный ниже код для запроса DMV, основного в системных таблицах $SYSTEM.TMSCHEMA_TABLES, у меня нет идентификатора клиента и секрета, вместо этого у меня есть действительный токен доступа Power bi, который имеет доступ для чтения и записи к рабочей области Power BI и набору данных. , как я могу заставить приведенный ниже код работать и удалить зависимость от идентификатора и секрета клиента, я также открыт для эквивалентного решения в pyspark (при условии, что оно работает :))

Код: Выделить всё

using Microsoft.AnalysisServices.AdomdClient;
using Azure.Identity;
using Azure.Core;
using System;
using System.Threading.Tasks;

class Program
{
static async Task Main(string[] args)
{
// Configuration
string xmlaEndpoint = "powerbi://api.powerbi.com/v1.0/myorg/";
string tenantId = "";
string clientId = "";
string clientSecret = "";
string scope = "https://analysis.windows.net/powerbi/api/.default";

try
{
// Step 1: Acquire access token using ClientSecretCredential (Service Principal)
Console.WriteLine("Acquiring access token with ClientSecretCredential...");

var credential = new ClientSecretCredential(tenantId, clientId, clientSecret);
var tokenRequestContext = new TokenRequestContext(new[] { scope });
var accessToken = (await credential.GetTokenAsync(tokenRequestContext)).Token;

Console.WriteLine("Access token acquired successfully.");

// Step 2: Create connection string (without token in connection string)
string connectionString = $"Data Source={xmlaEndpoint};";

// Step 3: Open ADOMD connection
using (AdomdConnection connection = new AdomdConnection(connectionString))
{
// Apply the access token manually using SessionID
connection.SessionID = accessToken;

Console.WriteLine("Opening connection to XMLA endpoint...");
connection.Open();

// Step 4: Execute DAX Query
string query = "SELECT [Name] FROM $SYSTEM.TMSCHEMA_TABLES";

using (AdomdCommand command = new AdomdCommand(query, connection))
{
Console.WriteLine("Executing query...");
using (AdomdDataReader reader = command.ExecuteReader())
{
while (reader.Read())
{
Console.WriteLine(reader[0]);  // Print first column (adjust as needed)
}
}
}

connection.Close();
Console.WriteLine("Connection closed successfully.");
}
}
catch (Exception ex)
{
Console.WriteLine($"Error: {ex.Message}");
}
}
}
Примечание:
Я уже пробовал:

Код: Выделить всё

POST https://api.powerbi.com/v1.0/myorg/datasets/{datasetId}/executeQueries
Это работает только для запросов DAX, в этом случае я хочу запросить системные таблицы, например - $SYSTEM.TMSCHEMA_TABLES

Подробнее здесь: https://stackoverflow.com/questions/793 ... id-and-sec
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Скрипт Python в Power BI (редактор Power Query)
    Гость » » в форуме Python
    0 Ответы
    127 Просмотры
    Последнее сообщение Гость
  • Как заставить OpenID Connect работать с использованием сертификата клиента, а не секрета (PHP)?
    Anonymous » » в форуме Php
    0 Ответы
    44 Просмотры
    Последнее сообщение Anonymous
  • Пользователь, выдающий себя за регистрацию приложения Azure без секрета клиента.
    Anonymous » » в форуме C#
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • GCP Oauth для Android Как создать токен доступа с токеном обновления без секрета клиента
    Anonymous » » в форуме Android
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Утверждение не выполнено: формат `secret` не соответствует ожидаемому форматированию секрета клиента в iOS Swift.
    Anonymous » » в форуме IOS
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous

Вернуться в «C#»