Страницы: 1
RSS
DAX. Нахождение среднего значения с помощью вложенной меры
 
Коллеги, привет!
Давно читаю форум, но пришло время выйти из режима ридонли и обратиться к экспертам за советом, так как при решении задачи сломал мозг. Я новичок в DAX, ещё недостаточно уверенно разбираюсь в контекстах, поэтому сильно не пинать.

Есть некоторая статистика колл-центра по датам с детализацией до 15-минутных интервалов. Приложил пример файла. С учетом ограничений форума для примера оставил несколько дней в выгрузке (по два дня на квартал).

Задача следующая:
  1. Необходимо в сводной таблице с помощью меры сгруппировать данные по дням (так как данные по интервалам)
  2. Посчитать среднее по дням по полученным результатам в п.1
  3. Найти по полученным в п.2 результатам среднее значение по дням недели и по кварталам
Я так понимаю, что необходимо использовать одну из агрегатных функций по типу SUMMARIZE или GROUPBY. При этом сделать вложенную меру либо дважды, либо трижды. Попробовал применить SUMMARIZE. Результат по полю "Среднее..." получается следующий (в таблице в строках Quarters-День недели):



Это решает вопрос с выводом необходимой статистики, но для анализа это не очень удобно, так как хочется видеть статистику по датам в хронологическом порядке без группировки по кварталам и дням недели.

Если убрать из строк таблицы кварталы и дни недели, то получается следующий результат:



Выводится среднее значение по всему источнику данных. Применение фильтров ALL, ALLEXCEPT и ALLSELECTED мне не сильно помогло.

В моем представлении должно получится что-то вроде примера ниже:



То есть необходимо найти среднее по дню недели и кварталу. В общем, очень хочу разобраться, выручайте :)

PS. Про изображения не знал. Сейчас скорректирую.
Изменено: liveworkdie - 10.09.2019 23:23:49
 

Главное при работе с DAX не отчаиваться :)

Нашёл способ. Возможно кому-нибудь пригодится.

Задача решается путём вложения SUMMARIZE (1) в SUMMARIZE (2). В наружной (1) виртуальной сводной таблице группируем по дню недели и кварталу, а во внутренней сводной таблице (2) с помощью ALLEXCEPT удаляем фильтр (контекста строки ?) и по полученным сгруппированным данным находим среднее значение.

Код
Среднее кол-во за день по дню недели и квартал:
=AVERAGEX(
   SUMMARIZE(
      'data';
         [Quarter];
         [День недели];
            "Среднее по дню недели и кварталу";
   CALCULATE(
      AVERAGEX(
         SUMMARIZE('data';
               [Date];
                  "ЗвонкиДень";
                     SUM(data[Offered Calls]));
         [ЗвонкиДень]);
      ALLEXCEPT('data';
         data[Quarter];
         data[День недели])));
[Среднее по дню недели и кварталу])

Файл с решением прикрепил к посту.
 
Цитата
liveworkdie написал:
с помощью ALLEXCEPT удаляем фильтр (контекста строки ?)
Таким образом вы удаляете контекст фильтра сводной таблицы накладываемый всеми её измерениями на ячейки сводной таблицы, кроме перечисленных во втором аргументе, в вашем случае data[Quarter] и data[День недели]. Контекст строки объезжается несколько иначе.
Вот горшок пустой, он предмет простой...
Страницы: 1
Наверх