Как перекрывать строки с помощью двух разных фильтров даты и точно отображать разницу в процентах - PullRequest
0 голосов
/ 12 января 2019

Похоже, что PowerBi не имеет возможности сравнивать данные за разные периоды времени и накладывать результаты на один визуал. Однако я наткнулся на следующую статью, которая позволила мне почти выполнить мою задачу: https://www.sqlbi.com/articles/filtering-and-comparing-different-time-periods-with-power-bi/ После применения метода в статье (кроме коэффициента нормализации) я перетащил следующие значения в таблицу visual

  • Дата (из моей таблицы продаж), Всего_продаж (мера), previous_sales (мера),% разницы

В настоящее время к таблице применены два фильтра среза (текущий и предыдущий диапазон дат):

  • 10/1/2018 - 02/2/2018 и 9/1/2018 - 9/2018

Таблица выводится следующим образом:

+-------------+----------------+----------------+-------------+
|    date     | total_sales    | previous sales | %difference |
+-------------+----------------+----------------+-------------+
| sept 1 2018 |                |      10,000    | -100.00%    |
| sept 2 2018 |                |      15,000    | -100.00%    |
| oct 1 2018  |      20,000    |                | N/A         |
| oct 2 2018  |      30,000    |                | N/A         |
+-------------+----------------+----------------+-------------+

Мои две проблемы: как эффективно настроить его, чтобы можно было точно рассчитать разницу в%, и как я могу отобразить линии, чтобы они могли накладываться на мою визуальную линию. Когда я пытаюсь построить график, это дает мне строку для сентября. 1-2 и длинное пустое пространство до окт. 1-2.

N.B: Все это упражнение вдохновлено функцией сравнения дат GA в их визуальных элементах.

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

1 Ответ

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

Допустим, мы выстраиваем два диапазона дат по максимальной дате, выбранной в каждом соответствующем срезе (так, чтобы 2 сентября совпало с октябрем 2 в вашем примере). Определите previous_date меру следующим образом.

previous_date =
VAR MaxDate =
    CALCULATE ( MAX ( 'Date'[Date] ), ALLSELECTED ( 'Date'[Date] ) )
VAR MaxPrev =
    CALCULATE (
        MAX ( 'Previous Date'[Previous Date] ),
        ALLSELECTED ( 'Previous Date'[Previous Date] )
    )
VAR CurrDate = MAX ( 'Sales'[Date] )
RETURN
    IF ( ISBLANK ( CurrDate ), BLANK (), CurrDate - ( MaxDate - MaxPrev ) )

То есть мы компенсируем «текущую дату», для которой мы рассчитываем значение, на разницу последней даты в каждом диапазоне слайсера.

На данный момент ваш previous_sales может быть просто

previous_sales = 
VAR PrevDate = [previous_date]
RETURN CALCULATE(SUM(Sales[Sales]), Sales[Date] = PrevDate)

Результат должен выглядеть примерно так:

Line Chart

...