【问题标题】:SSAS DAX query.... how to show totals against attribute values that match calc conditionsSSAS DAX 查询....如何根据与计算条件匹配的属性值显示总计
【发布时间】:2020-02-20 05:34:10
【问题描述】:

在我们的公司多维数据集中,我们经常使用 CALCULATION 函数进行度量。我们还经常遇到这样的情况,即使我们在 CALCULATION 中应用了过滤器,返回的总数也会在多行而不是满足条件的行中显示相同的值。

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

我们希望总数仅针对 Attribute = "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

如果有人能解释一下,将不胜感激。

干杯

【问题讨论】:

    标签: ssas dax


    【解决方案1】:

    想想'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 的记录,因此公式现在将返回空白。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-29
      • 2020-08-19
      • 1970-01-01
      相关资源
      最近更新 更多