Power BI Visual использует одну сторону среза даты - PullRequest
0 голосов
/ 02 декабря 2018

У меня есть визуальное изображение, которое должно показывать тренды за 6 недель измерения, однако другие визуальные эффекты в отчете основаны на настраиваемом диапазоне.Таким образом, при просмотре отчета, есть срез даты, который имеет дату начала и дату окончания.

Что мне нужно сделать, это создать меру / визуальное представление, которое показывает 6-недельный тренд, основанный напоследняя дата, выбранная в этом слайсере.Таким образом, даже если вы выберете 2 недели в фильтре даты, визуальное отображение покажет последние 6 недель.

Конечный пользователь выбирает диапазон дат (где-то от 1-2 недель), и мне нужно показать 6график недельных трендов по последнему дню в выбранном диапазоне.Поэтому, чтобы сделать это, мне нужно найти способ увидеть максимальную дату, выбранную в слайсере, и использовать визуальную независимость от упомянутого слайсера.Другими словами, если вы выберете последний понедельник - последнюю пятницу, на графике будет показан 6-недельный тренд, заканчивающийся в прошлую пятницу.

Итак, я знаю, что могу использовать функцию DAX LASTDATE(), чтобы получить последнюю дату в срезе, а затем вычесть из нее 6 недель.Проблема, с которой я сталкиваюсь, заключается в том, что при создании визуала обе даты на слайсере приводят его к выбранному диапазону дат (не 6 недель).Когда я изменяю визуальные взаимодействия для визуала, тогда последняя дата в визуале больше не является выбранной датой.

Есть идеи о том, как заставить это работать?

Редактировать: Воткод, с которым я работаю:

Две таблицы

Продажи

Sales ID | Customer ID | Qty  | Sales Date
   1            A         2   | 12/2/2018
   2            A         11  | 12/2/2018
   3            B         5   | 11/28/2018
   4            B         7   | 11/28/2018
   5            C         10  | 11/27/2018
   6            D         20  | 11/27/2018
   7            E         9   | 11/25/2018

Календарь

    Date    |  Weeknum
12/2/2018         49
12/1/2018         48
11/30/2018        48
11/29/2018        48
11/28/2018        48
11/27/2018        48
11/26/2018        48
11/25/2018        47
11/24/2018        47
...And so on

Оператор DAX, который я использую дляполучить начальную дату (6 недель с максимальной выбранной даты):

Six Weeks From Last Date Selected =
DATEADD(LASTDATE('Calendar'[Date]), -42, DAY) 

Продажи за шесть недель:

6 Weeks Sales =
CALCULATE(
    SUM('Sales'[Sales]),
    DATESBETWEEN(
        'Calendar'[Date],
        [Six Weeks From Last Date Selected],
        LASTDATE('Calendar'[Date])
    )
)

Спасибо за любую помощь заранее!

1 Ответ

0 голосов
/ 03 декабря 2018

Я предполагаю, что ваша мера берет сумму на пересечении выбранного диапазона дат и диапазона шести недель.

Если вы хотите всегда получать шесть недель, то вы должны удалить фильтрконтекст в столбце даты, добавив ALL('Calendar'[Date]) к вашей функции CALCULATE:

6 Weeks Sales =
CALCULATE(
    SUM('Sales'[Sales]),
    ALL('Calendar'[Date]),
    DATESBETWEEN(
        'Calendar'[Date],
        [Six Weeks From Last Date Selected],
        LASTDATE('Calendar'[Date])
    )
)

Редактировать: Вышеприведенное даст вам значение продаж за 6 недель, но нечто вы ищете.

Чтобы сделать то, что вы хотите, вам нужно создать вторую таблицу календаря, связанную с Sales.

Cal2 = 'Calendar'

Использование Cal2[Date] для вашего визуальноговместо 'Calendar'[Date] и напишите меру, которая удаляет фильтрацию 'Calendar' и заменяет ее на 6 недель.Например:

6 Weeks Sales = 
VAR EndDate = LASTDATE('Calendar'[Date])
VAR StartDate = EndDate - 42
VAR CurrDate = SELECTEDVALUE(Cal2[Date])
RETURN
IF( StartDate < CurrDate && CurrDate <= EndDate,
    CALCULATE(
        SUM(Sales[Qty]),
        ALL('Calendar')
    ),
    BLANK()
)

Вы также можете сделать это с помощью фильтра:

6 Weeks Sales = 
VAR EndDate = LASTDATE('Calendar'[Date])
VAR StartDate = EndDate - 42
RETURN
CALCULATE(
    SUM(Sales[Qty]),
    ALL('Calendar'[Date]),
    FILTER(
        Cal2,
        StartDate < Cal2[Date] && Cal2[Date] <= EndDate
    )
)
...