SSAS DAX 查询....如何根据符合计算条件的属性值显示总计
SSAS DAX query.... how to show totals against attribute values that match calc conditions
在我们公司的多维数据集中,我们经常使用 CALCULATION 函数进行度量。我们还经常遇到这样的情况,即使我们在 CALCULATION 中应用了过滤器,返回的总计在多行而不是满足条件的行中显示相同的值。
下面的屏幕截图就是一个例子。
我们希望总计仅针对属性 = "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'[Member_Has_Email_Flag] 是 "N" 的报告单元格中发生了什么。
从报告中,我们得到一个过滤器 'Member'[Member_Has_Email_Flag] = "N"。然后,在 CALCULATE 函数中,您 覆盖 这个过滤器 "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 的记录,因此公式现在 return 空白。
在我们公司的多维数据集中,我们经常使用 CALCULATION 函数进行度量。我们还经常遇到这样的情况,即使我们在 CALCULATION 中应用了过滤器,返回的总计在多行而不是满足条件的行中显示相同的值。
下面的屏幕截图就是一个例子。
我们希望总计仅针对属性 = "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'[Member_Has_Email_Flag] 是 "N" 的报告单元格中发生了什么。
从报告中,我们得到一个过滤器 'Member'[Member_Has_Email_Flag] = "N"。然后,在 CALCULATE 函数中,您 覆盖 这个过滤器 "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 的记录,因此公式现在 return 空白。