Нужна помощь в создании показателя DAX для подсчета отдельного статуса по groupkey и максимальной дате

#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] )