Power Bi DAX: фильтрация относительной даты - PullRequest
0 голосов
/ 11 февраля 2020

У меня быстрый вопрос, есть ли способ фильтрации данных по заданным дням между 2 месяцами?

Например, фильтр с 16-15 января-февраля.

Возможно ли это?

Например, я использовал меру для вычисления дней между датами

Last Assessment 16-15 
    = CALCULATE(SUM('Table1'[Duration1]),'Table1'[Start], 
             DATESBETWEEN('Calendar'[Date], [Assessment Date], [Assessment one month]))

Assessment Date = if(DAY(TODAY())<16,DATE(YEAR(TODAY()),MONTH(TODAY())-1,15),
                      DATE(YEAR(TODAY()),MONTH(TODAY()),15))

Assessment one month = EDATE([Assessment Date],-1)+1
Assessment 6 = EDATE([Assessment Date],-6)+1
Assessment 12 = EDATE([Assessment Date],-12)+1

Последняя оценка показывает, что с 16-го числа 2 месяцев go до последних месяцев 15-го, например, De c 16 - 15 января. Но мне нужно показать последние 6 месяцев и последний год.

Как я могу решить это, чтобы я мог показать последние 6 месяцев и 1 год.

Пока у меня было использовать фильтр даты, чтобы вручную выбрать даты, которые я хочу остановить, и сделать это автоматически c.

Ответы [ 2 ]

1 голос
/ 11 февраля 2020

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

Latest Assessment Date = 
VAR __today = TODAY()
RETURN
IF (
    DAY ( __today ) < 16,
    DATE ( YEAR ( __today ), MONTH(EDATE(__today, - 1)), 15 ),
    DATE ( YEAR ( __today ), MONTH ( __today ), 15 )
)

тогда у вас есть эта мера для обработки 1 / Сценарий 6/12 ios, вы просто заменяете 12 на любое количество месяцев, которое вам нужно

Measure 12 =
VAR __nrOfMonthsBack = 12
VAR __lastAssesment = [Latest Assessment Date]
RETURN
    CALCULATE (
        SUM ( Table1[Duration] ),
        ALL('Calendar'),  --this will reset any date filters coming from slicers
        DATESBETWEEN (
            'Calendar'[Date],
            EDATE ( __lastAssesment, - __nrOfMonthsBack ) + 1,
            __lastAssesment
        )
    )

РЕДАКТИРОВАТЬ: добавлено ALL('Calendar') для отключения фильтров, поступающих от слайсеров

1 голос
/ 11 февраля 2020

Если это только последние 6 месяцев или последний год, вы можете создать пользовательский столбец в редакторе запросов (тогда это будет самый простой способ). Как флаг фильтра:

'Includes the current month
Last 6 Months Flag = Date.IsInPreviousNMonths([YourDate], 6) or Date.IsInCurrentMonth([YourDate])

'Without the current month
Last 6 Months Flag = Date.IsInPreviousNMonths([YourDate], 6)

То же самое за прошлый год:

Last Year Flag = Date.IsInPreviousYear([YourDate])

Перетащите эти пользовательские столбцы в качестве фильтра в свой отчет, и все готово.

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