微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Power BI - DAX - 表变量 - 使用列进行进一步计算

如何解决Power BI - DAX - 表变量 - 使用列进行进一步计算

我在 Power BI Desktop 中使用 DAX 语言。

我有一个棘手的情况,我试图使用从表变量生成的列名。

表 1:源表

enter image description here

表 2:参考表

enter image description here

我需要根据 ReferenceTable 中的相应列在 SourceTable 中开发一个名为 EmploymentStatus 的计算列。但我只需要 ReferenceTable 中的 EmploymentStatus 值,即可获得给定 EmployeeEmail 的最大 InternalID。

例如,对于 SourceTable 中的电子邮件 xyz.gmail.com,我需要将 EmploymentStatus(计算列)从 ReferenceTable 设为“Active”,因为“Active”具有两个可用的最大值 InternalID 值(17、15)。

我尝试了以下代码(SourceTable 中的计算列):

EmploymentStatus_SourceTable_CalculatedColumn =
VAR tabl1 =
    SUMMARIZE (
        ReferenceTable,ReferenceTable[EmployeeEmail],"MaxInteralID",MAX ( ReferenceTable[InternalID] )
    )
VAR tabl2 =
    FILTER (
        ReferenceTable,ReferenceTable[InternalID] IN VALUES ( tabl1[MaxInteralID] )
    )
VAR NewCol =
    LOOKUPVALUE (
        tabl2[EmploymentStatus],tabl2[EmployeeEmail],SourceTable[EmployeeEmail]
    )
RETURN
    NewCol

我意识到我不能使用从表变量生成的列。

例如,tabl1[MaxInteralID]、tabl2[EmployeeStatus]、tabl2[EmployeeEmail] - 都是无效的。

知道如何处理这个问题吗?您甚至可以为我提供一个完全不使用变量的解决方案。任何解决方案都可以。

解决方法

here 类似,您可以找到每封电子邮件的最大 ID 并查找该 ID 的状态。

为了便于阅读而缩短了表名和列名:

CalcCol =
VAR Email = Source[Email]
VAR MaxID = CALCULATE ( MAX ( Ref[ID] ),Ref[Email] = Email )
RETURN
    LOOKUPVALUE ( Ref[Status],Ref[Email],Email,Ref[ID],MaxID )

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。