Как добавить текущие и предыдущие сеансы бок о бок, отфильтрованные двумя независимыми слайсерами - PullRequest
0 голосов
/ 17 января 2019

Цель: Я хотел бы получить разницу между текущими и предыдущими сессиями на основе срезов даты Я хочу, чтобы на выходе было 4 столбца как таковые:

  • Дата
  • Текущие сессии (см. Меру ниже)
  • Предыдущие сессии (см. Меру ниже)
  • Разница (пока не рассчитана мера).

Положение: В настоящее время у меня есть две меры

  • Текущие сессии: SUM(Sales[Sessions])
  • Предыдущие сессии (спасибо @Alexis Olson):

VAR datediffs = DATEDIFF ( РАСЧЕТ (МАКС. («Дата» [Дата])), РАСЧЕТ (МАКС. («Предыдущая дата» [Дата])), ДЕНЬ ) ВЕРНУТЬ РАССЧИТАЙТЕ (SUM (Sales [Сессии]), USERELATIONSHIP («Предыдущая дата» [Дата], «Дата» [Дата]), DATEADD ( 'Date' [дата], datediffs, ДЕНЬ) )

У меня есть три стола.

  • Продажа
  • Дата
  • Предыдущая дата (точная копия таблицы дат)

Моя предыдущая таблица дат - 1: 1, неактивная связь с таблицей дат. Таблица дат - от 1 до многих активных отношений с моей таблицей продаж.

У меня есть два среза в любое время, сравнивающие одинаковое количество дней в разные периоды времени (например, с 1 января по 7 января 2019 года против 25 декабря по 31 декабря 2019 года) Если я поставлю текущие сеансы, предыдущие сеансы и столбец даты из любой из трех таблиц

+----------+------------------+-------------------+------------+
|   date   | current sessions | previous sessions | difference |
+----------+------------------+-------------------+------------+
| Jan 8th  |            10000 |             70000 |       3000 |
| Jan 9th  |            20000 |             10000 |      10000 |
| Jan 10th |            15000 |             16000 |      -1000 |
| Jan 11th |            14000 |             12000 |       2000 |
| Jan 12th |            12000 |             14000 |      -2000 |
| Jan 13th |            11000 |             16000 |      -5000 |
| Jan 14th |            15000 |             18000 |      -3000 |
+----------+------------------+-------------------+------------+

Когда я помещаю дату Сеансов в таблицу вместе с сессиями и предыдущими сессиями, я получаю правильные суммы сессий за каждый день, но суммы предыдущих сессий вычисляются неправильно, я предполагаю, потому что она фильтруется по строкам даты.

Как я могу переопределить этот табличный фильтр и заставить его получать точные суммы предыдущих сессий? В основном оба результата добавлены друг к другу. Следующая проблема показывает мою проблему. предыдущий сеанс одинаков для каждого дня и в основном представляет собой сумму 31 декабря 2018 года, потому что максимальная дата различна для каждой строки, но я хочу, чтобы она основывалась на срезе.

1 Ответ

0 голосов
/ 18 января 2019

Ошибка возникла в первой части переменной VAR Datediffs в предыдущей формуле сеанса:

CALCULATE(LASTDATE('Date'[Date]),ALLSELECTED('Date'))

Это заставляет всегда вычислять последний день для каждой строки и заменяет значение даты в каждой строке.

...