Запрос PowerBI не работает с фильтром даты - PullRequest
1 голос
/ 18 июня 2019

У меня есть этот DAX:

Earned Daily =
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
IF (
    'Data for Pivot'[Date] <= d
        && 'Data for Pivot'[Act Rem] = "Actual Units"
        && 'Data for Pivot'[Type] = "Current",
    'Data for Pivot'[Value],
    0
)

'P6 Update'[Date] присоединен к слайсеру (выпадающий список с одним выбором даты).

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

Если я сделаю это:

Earned Daily =
IF (
    'Data for Pivot'[Date] <= DATE ( 2018, 4, 19 )
        && 'Data for Pivot'[Act Rem] = "Actual Units"
        && 'Data for Pivot'[Type] = "Current",
    'Data for Pivot'[Value],
    0
)

Данные отфильтрованы правильно.

В чем проблема соригинальный код?

#######

Примечание. Таблица обновления P6 создается с этим кодом:

P6 Update = CALENDAR(MIN('Data for Pivot'[Date]), MAX('Data for Pivot'[Date]))

Ответы [ 2 ]

1 голос
/ 18 июня 2019

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

Решение состоит в том, чтобы написать меру для получения значений, которые вы хотите вместо этого.Это будет выглядеть примерно так:

Earned Daily =
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
CALCULATE (
    SUM ( 'Data for Pivot'[Value] ),
    'Data for Pivot'[Date] <= d,
    'Data for Pivot'[Act Rem] = "Actual Units",
    'Data for Pivot'[Type] = "Current"
)

Возможно, вам придется внести коррективы в зависимости от контекста, в котором вы пытаетесь использовать эту меру, но это базовый подход.

0 голосов
/ 18 июня 2019

Основываясь на ответе @Alexis Olson, я собрал этот, который делает именно то, что я хочу:

Earned Daily = 
VAR d = SELECTEDVALUE ( 'P6 Update'[Date] )
RETURN
CALCULATE (
    SUM('Data for Pivot'[Value] ),
    FILTER(ALLSELECTED('Data for Pivot'),'Data for Pivot'[Date]=MAX('Data for Pivot'[Date])),
    'Data for Pivot'[Date] <= d,
    'Data for Pivot'[Act Rem] = "Actual Units",
    'Data for Pivot'[Type] = "Current"
)

Добавлен FILTER, который делает его совпадающим с датой по дате, пока не будет достигнут 'P6 Update'[Date].

...