Я разрабатываю приложение, которое использует табличную базу данных для отображения некоторых бизнес-данных.
Мне нужно обеспечить базовую фильтрацию значений мер (равно, больше, меньше, чем и т. Д.), И в настоящее время я анализирую правильный способ генерации MDX.
Просматривая некоторую документацию (и другие темы на этом сайте), я обнаружил, что наиболее эффективным подходом будет использование функций FILTER или HAVING для фильтрации нежелательных значений.
К сожалению, все примеры обычно включают меры на одной оси и элемент измерения на другой, но у меня потенциально есть элементы измерения на обеих осях и я не могу найти правильное решение для использования таких функций для фильтрации по мере значение.
Что я уже сделал?
Чтобы было проще объяснить, скажем, мы хотим получить годовые объемы продаж с помощью фильтрации по классам продуктов количество> 1,3 млн.
Попытка использовать функции HAVING или FILTER приводит к получению MDX
SELECT
NON EMPTY {[YearList].[Year].[Year].MEMBERS * [Measures].[Qty]}
HAVING [Measures].[Qty] > 1.3e6 ON COLUMNS,
NON EMPTY {[Classes].[cClass].[cClass].MEMBERS}
HAVING [Measures].[Qty] > 1.3e6 ON ROWS
FROM [Model]
или
SELECT
NON EMPTY FILTER({[YearList].[Year].[Year].MEMBERS * [Measures].[Qty]},
[Measures].[Qty] > 1.3e6) ON COLUMNS,
NON EMPTY FILTER({[Classes].[cClass].[cClass].MEMBERS} ,
[Measures].[Qty] > 1.3e6) ON ROWS
FROM [Model]
Но это, конечно, приводит к неожиданному результату для конечного пользователя, потому что фильтр происходит при агрегировании величин только по измерению на этой оси, которое больше 1,3M

Единственный способ найти то, что мне нужно, - это определить пользовательский элемент с помощью оператора IIF
WITH
MEMBER [Measures].[FilteredQty] AS
IIF ( [Measures].[Qty] > 1.3e6, Measures].[Qty], NULL)
SELECT
NON EMPTY {[YearList].[Year].[Year].MEMBERS * [Measures].[FilteredQty]} ON COLUMNS,
NON EMPTY {[Classes].[cClass].[cClass].MEMBERS} ON ROWS
FROM [Model]
Результат, ожидаемый:

Это лучший подход, или я должен продолжать использовать функции FILTER и HAVING ? Есть ли еще лучший подход, который я все еще скучаю?
Спасибо