#powerbi #dax
#powerbi #dax
Вопрос:
Я пытаюсь написать пару выражений DAX для подсчета количества [Status] по [GroupKey] и максимального [TxDate] . Например, конечным результатом должен быть только подсчет приведенных ниже записей с максимальной TxDate и группировка по GroupKey, чтобы показать, что [CountOfFailures] = 3 и [CountOfSuccess] = 2 .
TxDate Status GroupKey
9/29/2020 0:00 Failure ABC
9/29/2020 0:00 Failure ABC
9/29/2020 0:00 Failure ABC
9/30/2020 0:00 Success ABC
9/25/2020 0:00 Failure XYZ
9/27/2020 0:00 Failure XYZ
9/28/2020 0:00 Failure XYZ
9/29/2020 10:00 Failure XYZ
9/29/2020 13:00 Failure XYZ
9/29/2020 15:00 Failure XYZ
9/26/2020 0:00 Success EFG
9/27/2020 0:00 Success EFG
9/28/2020 0:00 Success EFG
9/28/2020 0:00 Failure LMN
9/29/2020 0:00 Failure LMN
9/30/2020 22:00 Failure LMN
9/26/2020 0:00 Failure QRS
9/30/2020 00:00 Failure QRS
В настоящее время мое выражение DAX для подсчета сбоев подсчитывает ВСЕ сбои, но опять же мое требование — подсчитывать статус и группировать по максимальной дате и GroupKey.
NumberOfFailures =
VAR noOfFailureTransactions=
CALCULATE(COUNTROWS(MyTable), FILTER(MyTable, MyTable[Status] = "Failure"))
RETURN
IF ( ISBLANK( noOfFailureTransactions), 0, noOfFailureTransactions
)
Любая помощь будет принята с благодарностью.
Ответ №1:
Мое решение для этого:
CountFailure =
VAR _maxDate =
TREATAS (
ADDCOLUMNS (
VALUES ( MyTable[GroupKey] ),
"maxDate", CALCULATE ( MAX ( 'MyTable'[TxDate] ) )
),
MyTable[GroupKey],
MyTable[TxDate]
)
RETURN
CALCULATE (
COUNTROWS ( SUMMARIZECOLUMNS ( MyTable[GroupKey], MyTable[Status], _maxDate ) ),
MyTable[Status] = "Failure"
)
И второе измерение:
CountSuccess =
VAR _maxDate =
TREATAS (
ADDCOLUMNS (
VALUES ( MyTable[GroupKey] ),
"maxDate", CALCULATE ( MAX ( 'MyTable'[TxDate] ) )
),
MyTable[GroupKey],
MyTable[TxDate]
)
RETURN
CALCULATE (
COUNTROWS ( SUMMARIZECOLUMNS ( MyTable[GroupKey], MyTable[Status], _maxDate ) ),
MyTable[Status] = "Success"
)
Комментарии:
1. Это отлично работает! Если я больше не могу использовать GroupKey и должен полагаться на два разных поля для установления уникальности, как мне переписать это выражение DAX?
2. измените это: TREATAS ( ADDCOLUMNS ( VALUES ( MyTable[GroupKey] ), «maxDate», CALCULATE ( MAX ( ‘MyTable'[TxDate] ) ) ), MyTable[GroupKey], MyTable[TxDate]) на: TREATAS( ADDCOLUMNS ( ALL(MyTable[Column1], MyTable[Column2]), «maxDate», ВЫЧИСЛИТЬ (MAX (‘MyTable'[TxDate] ) ) ), MyTable[Column1], MyTable[Column2], MyTable[TxDate] )