#mdx #mondrian
#многомерные выражения #мондриан
Вопрос:
У меня есть таблица фактов с измерением даты с уровнями Year
, Quarter
, Month
, Day
, Hour
, двумя мерами [Measure].[kind sum]
[Measure].[kind avg]
и сводная таблица для каждого уровня дат. Например, у меня есть период в несколько лет, и мне нужно получить среднее количество дней. В этом случае запрос будет выглядеть следующим образом
WITH
MEMBER [Measures].[Pc in avg by day] AS AVG({[Some dimension].Children * Descendants([Date].[2013] : [Date].[2016], [Date].[Day])}, [Measures].[Pc in sum])
SELECT {[Measures].[Pc in avg by day]} ON COLUMNS
FROM [Some cube]
Существует метод, как оптимизировать запрос. Мне нужно хранить такие значения, как [Pc in avg by day]
, [Pc in avg by month]
, [Pc in avg by quarter]
В сводной таблице для уровня года и т. Д. Я думаю сделать это в кубе, но в этом случае эти меры будут работать только с aggregate table. Я думаю, что это неправильный путь.
Ответ №1:
Я не совсем понимаю ваш вопрос. Я думаю, вы хотите получить [ПК в среднем по месяцам], [ПК в среднем по кварталам] так же, как [ПК в среднем по дням]. Если это так, добавление их в качестве мер в куб может быть неправильным способом.
Как вы сказали, у вас есть сводная таблица для дня с мерой [ПК в сумме], вы можете добавить разные сводные таблицы для месяца, квартала и года и изменить запрос, как показано ниже, если вам нужно [ПК в среднем по месяцам]
WITH
MEMBER [Measures].[Pc in avg by month] AS AVG({[Some dimension].Children * Descendants([Date].[2013] : [Date].[2016], [Date].[Month])}, [Measures].[Pc in sum])
SELECT {[Measures].[Pc in avg by month]} ON COLUMNS
FROM [Some cube]
Мондриан должен быть достаточно умен, чтобы выбрать правильную сводную таблицу для выполнения запроса. В этом случае ежемесячный агрегат
Комментарии:
1. Я попробую этот вариант и расскажу о результате.
2. Он будет использовать только агрегат для измерения суммы.
3. Я думаю, что в определении схемы куба вы должны указать метод агрегирования (sum, avg и т. Д.). Это может быть причиной. Если вам нужны как сумма, так и среднее значение, вам, возможно, придется добавить еще одну меру для count и, возможно, вычислить меру для avg с помощью sum / count. Но я не уверен в этой опции.