Получить минимальную дату из другой таблицы с фильтром

avatar
Bollasi97
9 августа 2021 в 06:50
892
1
1

У меня есть две таблицы. Существует связь между столбцом идентификатора и идентификатора пользователя. Я хочу добавить вычисляемый столбец в пользовательскую таблицу с первой транзакцией пользователя для типа счета «A».

Когда я использую: Calculate(min(Transaction[transaction date])) работает нормально, но мне нужно отфильтровать по типу счета. Когда я использую Calculate(min(Transaction[transaction date]),Filter(Transaction,Invoice type="A")), я получаю только 2021-02-01, и реальная связь не работает.

Каким наиболее эффективным способом добиться этого?

Таблица пользователей:

ID Имя
1 Джон Смит
2 Алан Уокер

Таблица транзакций:

идентификатор пользователя дата транзакции Тип счета
1 2021-02-01 А
1 2021-02-25 А
1 2021-02-25 В
2 2021-03-05 А
2 2021-01-23 В
Источник

Ответы (1)

avatar
Marcus
9 августа 2021 в 07:24
1

Вот правильный код DAX для вашего вычисляемого столбца, просто отбросьте оператор FILTER, так как это изменяет контекст вашего фильтра в CALCULATE для просмотра всех строк, где Invoice type = "A", независимо от User ID.

Minimum Date = 
CALCULATE (
    MIN ( 'Transaction'[transaction date] ),
    'Transaction'[Invoice type] = "A"
)

Поскольку вам нужен контекстный переход, чтобы предоставить вам контекст строки из таблицы Users в таблицу Transactions, вы можете альтернативно использовать этот тип оператора фильтрации, где таблица, которую вы фильтруете, также предоставляется в пределах текущей отфильтровать контекст вашей строки в Users:

Min Date = 
CALCULATE ( 
    MIN ( 'Transaction'[transaction date] ) , 
    FILTER ( 
        CALCULATETABLE ( 'Transaction' ) , 
        'Transaction'[Invoice type] = "A"
    )
)