DAX - несколько фильтров с несколькими таблицами и столбцами - PullRequest
0 голосов
/ 25 сентября 2018

Я немного боролся с этим и, надеюсь, вы мне поможете.

Итак, у меня есть таблица с сотрудником Вход сеансов со следующими соответствующими столбцами: [ID сотрудника], [LoginTime], [LogoutTime], [Status]

И еще одна таблица с ID инцидента ID и соответствующими [Дата подтверждения] и какой [идентификатор сотрудника] обрабатывает его.

Теперь я проверяю, какой Логин [Статус] сотрудник был, когда он принял Инцидент.

Итак, я думал о чем-то вроде этого:

Calculate(Login[Status];
    Filter(Login;Login[Employee ID]=Incident[Employee ID];
    Filter(Login;
       and(Login[LoginTime<=Incident[AckDateTime];Login[LogoutTime>=Incident[AckDateTime])

Пока я не верюЯ получаю желаемые результаты, есть ли у вас какие-либо советы о том, как мне поступить по этому поводу?

Заранее спасибо, ура!

Ответы [ 2 ]

0 голосов
/ 26 сентября 2018

Спасибо за ответ и извинения, это был мой первый вопрос здесь.

Таблица Логин должна выглядеть следующим образом:

Employee ID LoginTime LogoutTime Status Colossus 26/09/2018 13:05 26/09/2018 13:25 Available Nightcrawler 26/09/2018 11:30 26/09/2018 12:10 Research

И Инцидент , например:

Incident ID Employee ID AckDateTime 12456324 Colossus 26/09/2018 13:24 45754121 Cyclops 26/09/2018 12:00 78452135 Nightcrawler 26/09/2018 11:15

Я пробовал использовать другие подобные формулы, которые, кажется, имеют смысл (по крайней мере, мне)но PowerBI просто ломается из-за недостатка памяти.То же самое произошло с вашей предложенной формулой.

Я работаю с таблицей строк 200k + с несколькими столбцами, поэтому я пытаюсь облегчить эту формулу, возможно ли это с помощью фильтров?

Я имею в виду, применяются ли они последовательно (сужаясь с каждым шагом) или вычисление применяется ко всем фильтрам одновременно?

0 голосов
/ 26 сентября 2018

Пожалуйста, старайтесь всегда предоставлять MCVE , поскольку это поможет другим помочь вам!

Если вы добавите Новый вычисляемый столбец кВаша таблица Инцидент Вы можете определить свой статус сотрудника примерно так:

Employee Status =
    CALCULATE (
        MAX ( 'Login'[Status] ),
        FILTER (
            'Login',
            AND('Incident'[AckDateTime] > 'Login'[LoginTime],
                'Incident'[AckDateTime] <= 'Login'[LogoutTime]
            )
        )
    )
...