Медианы и срезы в DAX

У меня возникла проблема, и я надеюсь, что более опытные программисты DAX смогут мне помочь. Я пытался разработать информационную панель в Excel 2013 / PowerPivot / PowerView, и одна из графиков, которые я хотел бы отобразить, - это линейная диаграмма средней производительности по часам дня. Затем я хотел бы отфильтровать набор данных с помощью моих показателей производительности на основе отдельного столбца и связать его со срезом. Медианы следует рассчитывать относительно отфильтрованного набора данных. Для расчета медианы я пытаюсь адаптировать формулу, предложенную здесь Марко Руссо (http://sqlblog.com/blogs/marco_russo/archive/2010/07/20/median-calculation-in-dax.aspx).

Чтобы проиллюстрировать проблему, предположим, что у меня есть две таблицы - main_table и other_table. Main_table содержит 4 столбца: RowID, hour_of_day, performance_metric и category. Other_table содержит два столбца: hour_of_day и median_column. Моя цель - найти формулу для median_column, которая бы показывала среднюю метрику производительности по часам дня, но при этом могла быть разделена по категориям. Формула, которую я пытался использовать для определения медиан, была

=CALCULATE(
    MINX(
        FILTER(
            VALUES(main_table[performance_metric]), 
            CALCULATE(
                COUNTA(main_table[performance_metric]), 
                main_table[performance_metric] <= EARLIER(main_table[performance_metric])) 
                    > COUNTA(main_table[performance_metric]/2),
        main_table[performance_metric]), 
    FILTER(
        main_table, 
        main_table[hour_of_day] = EARLIER(other_table[hour_of_day])))

Или без форматирования:

=CALCULATE(MINX(FILTER(VALUES(main_table[performance_metric]), CALCULATE(COUNTA(main_table[performance_metric]), main_table[performance_metric] <= EARLIER(main_table[performance_metric])) > COUNTA(main_table[performance_metric]/2), main_table[performance_metric]), FILTER(main_table, main_table[hour_of_day] = EARLIER(other_table[hour_of_day])))

Однако, когда я создаю срез на основе категории в main_table, на мою диаграмму срез не влияет. Насколько я понимаю, если поместить main_table вместо ALL (main_table) в качестве первого аргумента в последнем вызове FILTER, мои средние вычисления будут зависеть от срезов и фильтров, применяемых к главная_таблица. Я упустил здесь что-то очевидное?


person user3014568    schedule 21.11.2013    source источник


Ответы (1)


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

Здесь дан более подробный ответ (http://www.mrexcel.com/forum/powerpivot-questions/741071-medians-context-issues-dax.html#post3641780)

person user3014568    schedule 02.12.2013