【问题标题】:How to calculate row wise using SUMX and VALUES - ALLSELECTED doesn't seem to work with SUMX/VALUES?如何使用 SUMX 和 VALUES 逐行计算 - ALLSELECTED 似乎不适用于 SUMX/VALUES?
【发布时间】:2021-04-23 10:10:52
【问题描述】:

我正在尝试制定可用于表格以显示 4 列的 DAX:

  1. 年月

  2. 销售额(当月销售额的总和)

  3. 平均销售额(以销售额总和除以总月数计算的平均值)

  4. 第 2 点和第 3 点的区别

我已将第一列用作 DateTable 中的 YearMonth 列的表格视觉对象。接下来的3列如下:

DAX_SalesAmount = SUM(Sales[Amount])

DAX_AvgMonthlySales = CALCULATE(DIVIDE([DAX_SalesAmount],DISTINCTCOUNT(DateTable[YearMonth])),ALLSELECTED(DateTable))

DAX_DiffSalesAndAvgSales = [DAX_SalesAmount] - [DAX_AvgMonthlySales]

这适用于行,但总数不正确,因为它试图从 AvgSales 中减去 TotalSales。为了能够计算出每个月的逻辑然后求和,我尝试将 DAX 更改为:

DAX_DiffSalesAndAvgSales = SUMX(VALUES(DateTable[YearMonth]),[DAX_SalesAmount] - [DAX_AvgMonthlySales])

上面在单元格中给出了 0,总共也给出了 0。 0 的原因是,[DAX_SalesAmount][DAX_AvgMonthlySales] 都被评估为相同的值。为什么[DAX_AvgMonthlySales]SUMX/VALUES 中不能正常工作(当我在[DAX_AvgMonthlySales] 中使用ALLSELECTED 时)?

正确的方法是什么?

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    问题可能是 SUMX 的迭代器将 ALLSELECTED 的影子过滤器设置为 VALUES(DateTable[YearMonths])。尝试在迭代之前将 DAX_AvgMonthlySales 保存到变量中,例如

    DAX_DiffSalesAndAvgSales =
    VAR AVGSales = [DAX_AvgMonthlySales]
    RETURN
        SUMX (
            VALUES ( DateTable[YearMonth] ),
            [DAX_SalesAmount] - AVGSales
        )
    

    这篇文章也可能有助于更好地理解 ALLSELECTED() 会发生什么

    https://www.sqlbi.com/articles/the-definitive-guide-to-allselected/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多