Как составить сводные таблицы по уровням дат

У меня есть таблица фактов с датой измерения с уровнями 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] в таблице агрегирования для уровня года и т. д. Я думаю, что это меры в кубе, но в этом случае эти меры будут работать только с таблицей агрегирования. Я думаю, что это не правильный путь.

1 ответ

Я не совсем понимаю ваш вопрос. Я думаю, что вы хотите получить [ПК в среднем по месяцам], [ПК в среднем по кварталам] так же, как [ПК в среднем по дням]. В этом случае добавление их в качестве мер к кубу может быть неправильным способом.

Поскольку вы сказали, что у вас есть сводная таблица для дня с мерой [Pc в сумме], вы можете добавить различные сводные таблицы для месяца, квартала и года и изменить запрос, как показано ниже, если вам нужно [Pc in avg by month]

    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]

Мондриан должен быть достаточно умен, чтобы выбрать правильную таблицу агрегатов для выполнения запроса. В этом случае ежемесячный агрегат

Другие вопросы по тегам