MDX: подсчитать количество членов, выбранных в фильтре - PullRequest
0 голосов
/ 11 января 2019

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

Измерение не имеет элемента All.

Так что это моя попытка

with member [Measures].[Count1] as count(existing(([MyDimension].[MyDimensionHierarchy].members)))

select  [Measures].[Count1] on 0
from [MyCube] --  gives me 1 

и этот даст мне 2, что правильно:

with member [Measures].[Count1] as count(existing(([MyDimension].[MyDimensionHierarchy].members)))

select  [Measures].[Count1] on 0
from [MyCube]
where ({[MyDimension].[MyDimensionHierarchy].[Member1], [MyDimension].[MyDimensionHierarchy].[Member2]})

Но, проблема в том, что когда я создаю вычисляемый элемент с формулой выше, перетащив Count1 в сводную таблицу Excel, перетащив MyDimension в качестве фильтра, и когда я делаю множественный выбор измерения участники, я хочу, чтобы число динамически изменялось при изменении количества выбранных членов.

Но Count1 всегда остается равным 1.

1 Ответ

0 голосов
/ 14 января 2019

Тем временем я нашел ответ:

Запрос, который я написал в этом вопросе, на самом деле не является запросом, который сводная таблица Excel отправляет кубу. Сводная таблица Excel создает запрос следующим образом:

SELECT  FROM (SELECT ({[MyDimension].[MyDimensionHierarchy].[Member1],[MyDimension].[MyDimensionHierarchy].[Member2]}) ON COLUMNS  
FROM [MyCube]) 
WHERE ([Measures].[Count1]) 

Способ сделать это - использовать динамический набор, содержащий отфильтрованные элементы:

create dynamic set [SelectedMembers] as existing( [MyDimension].[MyDimensionHierarchy].members )

А потом:

create member Measures.SelectedMembersCount as count([SelectedMembers])

Таким образом, этот набор динамически изменяется, так как в фильтре выбираются разные члены, а SelectedMembersCount динамически изменяется.

...