Как выполнить запрос MDX SQL Analysis Server в C#

Я хочу выполнить запрос анализа SQL на С#. Я успешно подключился к базе данных Analysis, используя следующий код:

Server DM_Server = new Server();
Database AS_Database = new Database();
DM_Server.Connect(//SQL Analysis Server Connection String);
AS_Database = DM_Server.Databases[//Database name];

У меня есть запрос SQL, например

SELECT FLATTENED PredictAssociation()
From
[Mining Structure Name]
NATURAL PREDICTION JOIN
(SELECT (SELECT 1 AS [UserId]) AS [Vm]) AS t 

person Quest    schedule 16.04.2017    source источник


Ответы (1)


Вам необходимо использовать ADOMD.NET, который является пространством имен Microsoft.AnalysisServices.AdomdClient. Он также доступен на Nuget.

AdomdConnection conn = new AdomdConnection(
    "Data Source=localhost;Catalog=YourDatabase");
conn.Open();

string commandText = @"SELECT FLATTENED 
    PredictAssociation()
    From
    [Mining Structure Name]
    NATURAL PREDICTION JOIN
    (SELECT (SELECT 1 AS [UserId]) AS [Vm]) AS t ";
AdomdCommand cmd = new AdomdCommand(commandText, conn);
AdomdDataReader dr = cmd.ExecuteReader();

while (dr.Read())
{
   Console.WriteLine(Convert.ToString(dr[0]));
}

dr.Close();
conn.Close();

В примере кода я позаимствовал DMX-запрос из вопроса. Но любой запрос MDX или DAX также должен работать.

Обновление: ADOMD.NET (Microsoft.AnalysisServices.AdomdClient) для .NET Core — доступен в nuget сейчас. Это официальная поддерживаемая Microsoft библиотека.

person GregGalloway    schedule 27.04.2017
comment
Грег Галлоуэй: Я уже придумал этот ответ. Но в любом случае спасибо - person Quest; 27.04.2017
comment
@BhavnaBeri конечно. Вы можете опубликовать свой собственный ответ в следующий раз, чтобы помочь сообществу. Счастлив, что ты понял это - person GregGalloway; 27.04.2017
comment
Обратите внимание: сейчас ADOMD.NET не работает с .NET Core. - person Isaac Lyman; 13.02.2019
comment
@IsaacLyman Я добавил ссылку на официально поддерживаемую версию для .NET Core. - person GregGalloway; 19.06.2020