Power pivot — сравнение с тем же днем недели

#excel #powerpivot

#excel #powerpivot

Вопрос:

 ╔═══════╦═════╦═══════╦════════╦═══════╦════════╗
║ Month ║ Day ║ City1 ║        ║ City2 ║        ║
╠═══════╬═════╬═══════╬════════╬═══════╬════════╣
║       ║     ║ Abs.  ║ Relat. ║ Abs.  ║ Relat. ║
║ Jan   ║ 1   ║ X     ║ 10%    ║ Z     ║ -3%    ║
║       ║ 2   ║ X     ║ -7%    ║ Z     ║ 5%     ║
║       ║ ... ║       ║        ║       ║        ║
║       ║ 31  ║       ║        ║       ║        ║
║ Feb   ║ 1   ║ ...   ║ ...    ║ ...   ║ ...    ║
║       ║ 2   ║       ║        ║       ║        ║
║       ║ ... ║       ║        ║       ║        ║
║       ║ 31  ║       ║        ║       ║        ║
╚═══════╩═════╩═══════╩════════╩═══════╩════════╝
  

Abs: абсолютный; Relat.: относительный

Я новичок в power pivot.

Мне нужно создать такую таблицу, где относительный столбец основан на среднем значении за последние 4 недели (за тот же день недели).

пример: 1 января была пятница, поэтому:

  1. Относительный столбец вычислит среднее значение за последние 4 пятницы (4, 11,18, 25 декабря)
  2. Затем сравните с абсолютным значением (выраженным в%)

Как я могу вычислить этот относительный столбец?

Ответ №1:

Самый простой способ сделать это — разбить его на два этапа. Во-первых, создайте показатель, который вычисляет среднее значение за четыре предыдущие недели:

Average Abs = 0.25 * (
CALCULATE(SUM(Table1[Abs]),DATEADD(Table1[Date],-7, Day))
CALCULATE(SUM(Table1[Abs]),DATEADD(Table1[Date],-14, Day))
CALCULATE(SUM(Table1[Abs]),DATEADD(Table1[Date],-21, Day))
CALCULATE(SUM(Table1[Abs]),DATEADD(Table1[Date],-28, Day))
)

Важно: функция DateAdd будет работать только в том случае, если в вашем наборе дат нет пробелов. Если у вас есть дата без данных, вам нужно либо создать пустую запись в таблице данных для этой даты, либо (рекомендуемый вариант) создать таблицу словаря дат и связать с ней таблицу фактов.

Примечание: я предположил, что ваши данные возвращаются по крайней мере за 4 недели до начала вашего отчета, в противном случае сложение и деление на 4 не даст правильного среднего значения.

Затем создайте показатель, который сравнивает это значение со значением Abs для этой даты:

relat = DIVIDE(SUM(Table1[Abs]),[Average Abs])-1

Отформатируйте это как%.

На основе некоторых случайных данных, которые я сгенерировал, я получаю что-то похожее на это:

введите описание изображения здесь

Комментарии:

1. Я создал таблицу словаря дат и связался с моей таблицей «основной источник». Я создал среднюю меру Abs, но когда я пытаюсь добавить к ЗНАЧЕНИЯМ, я получаю

2. Я получаю «Функция DATEADD работает только с непрерывными выборками даты». Прямо сейчас мои данные за январь-октябрь. Вы можете мне помочь?

3. В словаре дат не должно быть пробелов — должна быть запись для каждого дня, который попадает в ваш диапазон дат, а также за 4 недели до этого.

4. Убедитесь, что вы изменили среднюю функцию Abs, чтобы в части DATEADD использовался столбец даты вашего словаря дат, а не ваш основной источник.

5. Это сработало! Но теперь средний Abs дает те же результаты, что и абсолютный. Среднее значение Abs выглядит следующим образом: «ВЫЧИСЛИТЬ (СУММА (таблица 1 [aaa]);DATEADD(‘Date’ [Дата];-7; День))» (с 4 вычислениями). Чтобы дать вам контекст, Table1 — это таблица с несколькими датами за один и тот же день.