【问题标题】:DAX - Multiple Filters with Multiple Tables and ColumnsDAX - 具有多个表和列的多个过滤器
【发布时间】:2022-03-06 18:01:00
【问题描述】:

我一直在努力解决这个问题,希望你能帮助我。

所以我有一个包含员工 Login 会话的表格,其中包含以下相关列:[Employee ID]、[LoginTime]、[LogoutTime]、[Status]

还有另一个具有事件 ID 及其各自的[Acknowledgement DateTime] 以及 [Employee ID] 正在处理它。

现在我要验证员工在接受事件时所处的登录[状态]

所以,我正在考虑以下方面的一些事情:

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

到目前为止,我认为我没有得到想要的结果,你对我应该如何去做有什么建议吗?

提前致谢, 干杯!

编辑:感谢您的回复和道歉,这是我在这里的第一个问题。

Login 表应如下所示:

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+ 行表,所以我希望简化这个公式,这可以通过过滤器实现吗?

我的意思是,它们是按顺序应用(每一步缩小)还是计算一次应用所有过滤器?

【问题讨论】:

  • 您能否提供一些示例输入数据以及所需的输出?带有MCVE 的问题更有可能得到好的答案。

标签: filtering powerbi dax


【解决方案1】:

请尽量始终提供MCVE,因为这将有助于其他人帮助您!

如果您将 新计算列 添加到您的 事件 表中,您应该能够通过以下方式确定您的员工状态:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-17
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多