#powerbi #dax #linechart #powerbi-desktop
#пауэрби #dax #линейная диаграмма #powerbi-рабочий стол #powerbi #линейный график #powerbi-desktop
Вопрос:
У меня есть требование отображать данные о продажах за текущий 2019 год (фактический), за предыдущий 2018 год и за 2 года назад 2017, которые будут отображаться на одном линейном графике. Данные о продажах генерируются каждое воскресенье недели в общей сложности за 52 недели в году
Примечание: Данные конфиденциальны, поэтому я не могу поделиться ими на форуме
Требование к отчету, два раскрывающихся списка:
- Выбор рынка.
- Выбор даты — Эта дата будет приходиться на каждое воскресенье недели
Линейный график :
по оси x указана дата, а по оси y — рынок. теперь, когда выбрана любая выпадающая неделя (например, 31 марта 2019 года, тогда на линейном графике должно быть три линии тренда).
- Первая линия тренда должна отображать детали с апреля 2019 по март 2020 года
- Вторая линия тренда должна отображать детали с апреля 2018 по март 2019
- Третья линия тренда должна отображать детали с апреля 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-недели.