Я столкнулся с некоторым запутанным поведением в Analysis Services 2005 (и 2008 R2) и был бы признателен, если бы кто-то мог объяснить, почему это происходит. Ради этого вопроса я воспроизвел поведение куба Adventure Works.
Учитывая этот MDX:
SELECT [Customer].[Education].[(All)].ALLMEMBERS ON COLUMNS,
Order(DrillDownLevel({[Customer].[Customer Geography].[All Customers]}),
([Measures].[Internet Order Count]),
ASC) ON ROWS
FROM (SELECT {[Customer].[Education].&[Partial High School]} ON COLUMNS FROM [Adventure Works])
WHERE [Measures].[Internet Order Count];
Запрос оценивается с помощью упорядоченного набора в строках:
Все клиенты: 2, 136
Германия: 269
Франция: 298
Канада: 304
Великобритания: 311
Соединенные Штаты: 457
Австралия: 497
Однако, если я включу All Member (или участника по умолчанию) для Education в кортеж, используемый в заявлении о порядке:
SELECT [Customer].[Education].[(All)].ALLMEMBERS ON COLUMNS,
Order(DrillDownLevel({[Customer].[Customer Geography].[All Customers]}),
([Measures].[Internet Order Count], [Customer].[Education].[All Customers]),
ASC) ON ROWS
FROM (SELECT {[Customer].[Education].&[Partial High School]} ON COLUMNS FROM [Adventure Works])
WHERE [Measures].[Internet Order Count];
Затем набор возвращается в существенно ином порядке:
Все клиенты: 2, 136
Франция: 298
Германия: 269
Великобритания: 311
Канада: 304
Австралия: 497
Соединенные Штаты: 459
Обратите внимание, что Франция и Германия вышли из строя по отношению друг к другу. То же самое с Канадой / Великобританией и с США / Австралией. Из того, что я могу сказать, это порядок, основанный на агрегации, до того, как подсуб оценивается.
Почему включение этого члена (который должен быть явно указан в кортеже в первом примере?) Приводит к тому, что оценка оператора порядка выходит за пределы визуальных итогов субкуба? Функции Filter, TopCount и т. Д. Имеют одинаковое поведение.
Приветствие.