由相关表的多列过滤的DAX总和

DAX sum filtered by multiple columns of related tables

我有一个措施,正在添加到 table 和一张卡片中。该度量用于显示在 Calls.[Sch Engineer]=Hours.Employee AND Calls.ProjID=Hours.ProjID

中发布的总小时数

table 每一行的值都是正确的。但是 table 和卡中此度量的总值不正确,我不知道为什么。

所以度量是:

SchEngHrsOnly =
VAR main =
    MAX ( Calls[Sch Engineer] )
RETURN
    CALCULATE ( SUM ( 'Hours'[Hrs] ), Hours[Employee] = main )

当我将其添加到 table 视觉对象时,我得到以下结果 - Table 总计和度量卡值都不正确 - 它们应该是 163.50:

如果我在 table 视觉对象中 select 一行,则 Card 视觉对象显示正确的值,否则显示不正确的值:

我的数据模型是:

我的关系是:

我想要得到的是:

此外,请在此处查看 PBIX 文件:

PBIX File

有人可以帮忙解决这个问题吗?

您可以将其创建为计算列,然后将其相加得到值:

Hours Calc = CALCULATE(MAX(Hours[Hrs]),FILTER(Hours,Hours[ProjID]=Calls[ProjID]))

以上计算将为每个项目 ID 添加一列,其中包含最大小时数。然后你可以在最后的 table 中总结它并且应该得到想要的结果。希望这有帮助。

如果你想要 MAX 值的 SUM,那么走这条路:

SumOfMaxes = 
SUMX(
  VALUES( Hours[ProjID] ),
  CALCULATE( MAX( Hours[Hrs]) )
)

它产生:

您可能还对以下内容感兴趣:

DAX ALLEXCEPT to sum by category of multiple dimension tables

编辑

经过你的解释,我明白你想要过滤总和。

FilteredSum = 
CALCULATE (
    SUM ( Hours[Hrs] ),
    FILTER (
        Hours,
        Hours[Employee] = RELATED ( Calls[Sch Engineer] )
            && Hours[ProjID] = RELATED ( Calls[Proj ID] )
    )
)

https://www.sqlbi.com/blog/marco/2010/02/09/how-to-relate-tables-in-dax-without-using-relationships/