MDX, CellSet содержит метаданные? - PullRequest
0 голосов
/ 27 декабря 2011

Итак, у меня есть следующий запрос MDX, который выполняется с примером куба AdventureWorks.

SELECT NON EMPTY ([Date].[Fiscal Semester of Year].[Fiscal Semester of Year],{[Measures].[Internet Order Count], [Measures].[Average Unit Price]}) ON 0,
NON EMPTY([Product].[Status].[Status] ,[Customer].[Country].[Country]) ON 1
FROM [Adventure Works]

Это дает результат, который выглядит примерно так:

      H1     H2    H1    H2
     X1 X2  X1 X2 X1 X2 X1 X2
A A1
A A2
A A3
B A1       numbers
B A2
B A3

CellSet имеет различные биты метаданных, но, насколько я могу судить, ни одна из них не описывает эту структуру. Похоже, в него не входят полезные вещи, такие как имена мер или имена измерений и т. Д.

Есть какие-нибудь подсказки? Если я выполню вышеуказанный запрос в Management Studio, он отформатирует его для меня. Это потому, что он хорошо разбирает свой MDX или потому, что получает доступ к некоторым метаданным, которые я еще не нашел?

Кроме того, я могу запросить куб через соединение и таким образом получить много информации, связанной с кубом, но мне нужен способ связать это с результатом моего запроса.

Скорее всего, у меня будет CellSet, но не исходный MDX, который его сгенерировал.

Спасибо

1 Ответ

1 голос
/ 28 декабря 2011

Попробуйте что-то вроде этого:

CellSet cs = cmd.ExecuteCellSet();
Axis columns = cs.Axes[0];
TupleCollection columnTuples = columns.Set.Tuples;
for (int i = 0; i < columnTuples.Count; i++)
{
    string caption = columnTuples[i].Members[0].Caption;
}
Axis rows = cs.Axes[1];
TupleCollection rowTuples = rows.Set.Tuples;
foreach (Position rowPos in rows.Positions)
{
    string caption = rowTuples[rowNum].Members[0].Caption;
}
...