Фильтрация по вторичному полю в DAX

#powerbi #dax #powerbi-desktop

#powerbi #dax #powerbi- рабочий стол

Вопрос:

Я новичок в DAX.

Моя модель содержит одну вызываемую таблицу Notices . Notices содержит 235 969 строк.

Notices содержит поля CustomerID , NoticeNo и NoticeStatus .

Когда я устанавливаю контекст фильтра на 'CANCL' Notices[NoticeStatus] , я вижу, что есть 3 уведомления, которые имеют CANCL статус.

Таким образом, приведенная ниже мера оценивается как 3, поскольку каждое из оставшихся уведомлений принадлежит 3 отдельным клиентам. Тем не менее, я хотел бы основывать агрегат на нефильтрованной таблице, но отфильтровывать строки (после агрегирования) на основе идентификаторов клиентов, которые остаются в контексте фильтра и [ObCount] = 1 . В этом случае мера должна быть оценена в 0 или BLANK() , поскольку ни один из идентификаторов пользователя в контексте фильтра не остается после фильтрации [ObCount] = 1 .

 Customers with Single Notice Only = 
COUNTROWS (
    FILTER (
        SUMMARIZECOLUMNS (
            Notices[CustomerID],
            Notices,     
            "ObCount", [All Notices Outstanding]
        ),
        [ObCount] = 1
    )
)
  

[All Notices Outstanding] = COUNTROWS(Notices)

Ответ №1:

Вы должны быть в состоянии сделать это, применив отфильтрованную таблицу в качестве аргумента фильтра таблицы к Notices использованию CALCULATE:

 Customers with Single Notice Only =
CALCULATE (
    COUNTROWS ( Notices ),
    FILTER (
        SUMMARIZECOLUMNS (
            Notices[CustomerID],
            ALL ( Notices ),
            "ObCount", [All Notices Outstanding]
        ),
        [ObCount] = 1
    )
)

  

Обратите внимание на использование ALL для удаления фильтра состояния фильтра при подведении итогов.

Комментарии:

1. Это работает. Я все еще пытаюсь разобраться в функции вычисления.