Как получить данные из запроса MDX в C #? - PullRequest
4 голосов
/ 10 января 2012

Я пытаюсь получить данные из запроса MDX с помощью библиотеки Adomdclient.Я использовал этот пример http://www.yaldex.com/sql_server/progsqlsvr-CHP-20-SECT-6.html.

MDX-запрос:

SELECT {[Measures].[Cantidad Vta],[Measures].[Monto Vta],[Measures].[ExistenciaHistorica],[Measures].[Valor Inventario historico]} DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON COLUMNS , NON EMPTY Hierarchize({DrilldownLevel({[DIM SUBMARCA].[Código].[All]})}) DIMENSION PROPERTIES PARENT_UNIQUE_NAME ON ROWS FROM (SELECT ({[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Bodega],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Cadena],[DIM TIENDA].[JERARQUIA TIENDA].[Región].&[Outlet]}) ON COLUMNS FROM [JUGUETRONHQ]) WHERE ([DIM FECHA VENTA].[JERARQUIA FECHA VENTA].[Time].&[2012-01-01T00:00:00],[DIM FECHA EXISTENCIA].[JERARQUIA FECHA EXISTENCIA].[All]) CELL PROPERTIES VALUE

Как и в других пространствах имен, таких как SqlClient, используйте соединение, команду и средство чтения данных:

using Microsoft.AnalysisServices.AdomdClient;

...

using (AdomdConnection con = new AdomdConnection(connection_string))
{
  con.Open();

  using (AdomdCommand command = new AdomdCommand(query, con)) 
  {
    using (AdomdDataReader reader = command.ExecuteReader()) 
    {
      while (reader.Read())
      {
        for (int i = 0; i < reader.FieldCount; i++)
          Console.Write(reader[i] + (i == reader.FieldCount - 1 ? "" : ", "));
          Console.WriteLine("");

      }
    }
  }
}

Однако этот фрагмент правильно показывает только 4 из 5 столбцов:

[DIM SUBMARCA].[Código].[All], , , 3, 825

Это должно быть:

115200081, , , 3, 825

Возможно, нужен приведение, но я не знаю, как это сделать.

Ответы [ 3 ]

1 голос
/ 10 января 2012

Это похоже на проблему с запросом MDX, а не с извлечением данных.Это не правильно ограничивает размерность [DIM SUBMARCA]. [Código].

0 голосов
/ 20 сентября 2017

Извлечение данных из запроса MDX

добавлена ​​ссылка на Microsoft.AnalysisServices.AdomdClient.dll
AdomdConnection шаги

AdomdConnection con = new AdomdConnection("connectionstring"); // connect DB con.Open(); AdomdCommand cmd = new AdomdCommand("MDX query", con); //query

AdomdDataReader reader = cmd.ExecuteReader(); //Execute query

    while (reader.Read())   // read
        {
            Data dt = new Data();  // custom class
            dt.Gender = reader[0].ToString();

            dt.Eid = reader[1].ToString();
            dt.salary = reader[2].ToString();
            data.Add(dt);
        }
0 голосов
/ 11 января 2012

Ваш запрос имеет 1 [ВСЕ] измерение уровня и 4 меры:

[DIM SUBMARCA].[Código].[All], 
[Measures].[Cantidad Vta],
[Measures].[Monto Vta],
[Measures].[ExistenciaHistorica],
[Measures].[Valor Inventario historico]

Это возвращает 1 столбец [ВСЕ] и 4 значения:

[DIM SUBMARCA]. [Código]. [All],,, 3, 825

115200081 является ключевым значением?Вы можете получить это значение, используя "DIMENSION PROPERTIES MEMBER_HEY".

...