SSAS DAX查询。。。。如何根据符合计算条件的属性值显示总计

SSAS DAX查询。。。。如何根据符合计算条件的属性值显示总计,ssas,dax,Ssas,Dax,在我们的公司中,我们经常使用计算功能进行度量。我们还经常遇到这样的情况:即使我们在计算中应用了一个过滤器,返回的总数在多行中显示相同的值,而不是在满足条件的行中显示相同的值 下面的屏幕截图就是一个例子 我们希望总计仅显示在属性为“Y”的行上 计算 = CALCULATE ( DISTINCTCOUNT ( 'Sales'[Transaction_Header_ID] ), 'Sales'[Is_Named_Sale] = "Y", 'Member'[Member_Has

在我们的公司中,我们经常使用计算功能进行度量。我们还经常遇到这样的情况:即使我们在计算中应用了一个过滤器,返回的总数在多行中显示相同的值,而不是在满足条件的行中显示相同的值

下面的屏幕截图就是一个例子

我们希望总计仅显示在属性为“Y”的行上

计算

=
CALCULATE (
    DISTINCTCOUNT ( 'Sales'[Transaction_Header_ID] ),
    'Sales'[Is_Named_Sale] = "Y",
    'Member'[Member_Has_Email_Flag] = "Y"
)
我对DAX还相当陌生,但仍然不明白在计算中使用过滤器时会发生什么情况。我们追求的结果更像是

Member_Has_Email_Flag Total

Y                     249239

N
如果有人能解释这一点,我们将不胜感激


干杯

想想在“成员”[Member\u Has\u Email\u Flag]为“N”的报告单元格中会发生什么

从报告中,我们得到了一个过滤器“Member”[Member\u有\u Email\u标志]=“N”。然后,在计算函数中,您将用“Y”覆盖该过滤器。因此,您可以忽略来自报告的筛选器,并将其替换为“Y”,从而获得相同的数字,而不管外部筛选器如何。这就是CALCULATE的工作原理——它通过将外部过滤器替换为函数内部提供的过滤器来修改外部过滤器

要解决此问题,请使用KEEPFILTERS函数:

=
CALCULATE (
    DISTINCTCOUNT ( 'Sales'[Transaction_Header_ID] ),
    'Sales'[Is_Named_Sale] = "Y",
    KEEPFILTERS('Member'[Member_Has_Email_Flag] = "Y")
)
在这里,您告诉CALCULATE保留外部筛选器(“N”)并将其与新筛选器(“Y”)组合。由于此字段同时为Y和N时没有记录,因此公式现在将返回空白