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 )