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