Как отобразить данные о продажах за текущий год, за прошлый год и 2 года назад на линейном графике, перекрывающем друг друга с помощью power bi?

#powerbi #dax #linechart #powerbi-desktop

#пауэрби #dax #линейная диаграмма #powerbi-рабочий стол #powerbi #линейный график #powerbi-desktop

Вопрос:

У меня есть требование отображать данные о продажах за текущий 2019 год (фактический), за предыдущий 2018 год и за 2 года назад 2017, которые будут отображаться на одном линейном графике. Данные о продажах генерируются каждое воскресенье недели в общей сложности за 52 недели в году

Примечание: Данные конфиденциальны, поэтому я не могу поделиться ими на форуме

Требование к отчету, два раскрывающихся списка:

  1. Выбор рынка.
  2. Выбор даты — Эта дата будет приходиться на каждое воскресенье недели

Линейный график :

по оси x указана дата, а по оси y — рынок. теперь, когда выбрана любая выпадающая неделя (например, 31 марта 2019 года, тогда на линейном графике должно быть три линии тренда).

  1. Первая линия тренда должна отображать детали с апреля 2019 по март 2020 года
  2. Вторая линия тренда должна отображать детали с апреля 2018 по март 2019
  3. Третья линия тренда должна отображать детали с апреля 2017 по март 2018

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

Еще одна проблема, с которой я сталкиваюсь, заключается в том, что даты не являются непрерывными по годам (например: воскресная дата января 2018 года была 7, а воскресная дата января 2019 года была 6).

Пожалуйста, дайте мне знать, если потребуется какая-либо дополнительная информация.

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

требуемый вывод

Я написал DAX, который помогает отображать диапазон дат за 1 год при выборе выпадающего списка.

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

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

Ответ №1:

Обязательно ли иметь разрешение даты по оси x, если нет, вы можете использовать ISO-weeknumber в качестве оси x и год (или финансовый год) в качестве пояснения к линейному графику.

В вашей таблице календаря добавьте этот вычисляемый столбец:

 ISOweek = WEEKNUM([date]; 21)
  

Если вам нужно разрешение по дате, вы можете добавить два вычисляемых столбца; дата 1 год и дата 2 года.
Добавьте 364 дня, если день недели является важным совпадением, или добавьте 365, если дата.

Добавьте две новые связи из вашего календаря в таблицу данных, одну на дату 1 год и одну на дату 2 года. они станут пассивными (пунктирные линии).

Затем используйте следующий шаблон:

 A_measure =
MAXX(
    DISTINCT(Calendar);
    CALCULATE(
        SUM(Table[Data]);
        USERELATIONSHIP(Table[date 1year]; Calendar[Date])
        // this uses the passive relationship instead of the active
    )
)
  

Затем второе измерение таким же образом, но для третьего отношения.

На линейной диаграмме используйте календарь [Дата] в качестве оси x, и тогда все три года будут наложены.

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

1. Спасибо @OscarLar, я попробую это. Да, на моей оси X есть столбец даты, но он не является непрерывным (продажи генерируются каждое воскресенье месяца, например: данные за март 2019 года будут иметь даты ниже 3/3/2019,3/10/2019,3/17/2019,3/ 24/2018,3/31/2019). Дата воскресенья в прошлом году будет явно отличаться, так что это одна проблема.

2. Ниже приведен DAX, который я использовал для отображения одной линии тренда. то, что этот код делает при любом выборе даты, которую я делаю, будет отображаться со следующего месяца (выбранный месяц — 19 января, он будет отображаться с февраля 2019 по январь 2020)

3. Sale = VAR selectedDate = SELECTEDVALUE ( date_table[date_column]) VAR SelectedMonth = МЕСЯЦ (выбранная дата) VAR SelectedYear = ГОД (выбранная дата) VAR StartDate = ДАТА (выбранный год, выбранный месяц 1, 1 ) VAR endMonth = ДАТА (выбранный год 1, выбранный месяц, 1) VAR EndDate = EOMONTH(Конечный месяц ,0) VAR Продажа = ВЫЧИСЛИТЬ ( СУММА (Sales_table[sale_Value_column]), ВСЕ(date_table[date_column), DATESBETWEEN(date_table[date_column, дата начала, дата окончания)) ВОЗВРАТ продажи

4. Я не понял этот момент (добавьте два вычисляемых столбца; дата 1 год и дата 2 года.) не могли бы вы объяснить подробнее?

5. Чтобы сопоставить даты за предыдущие годы с текущим годом, вам нужно создать столбец со смещением даты. итак, у вас есть [Дата продаж] 364, если день недели является важным совпадением. Однако, если у вас есть только одна дата в неделю, я все равно рекомендую альтернативу ISO-недели.