代码之家  ›  专栏  ›  技术社区  ›  David Brunelle

Power BI DAX:根据另一列求一列的和

  •  1
  • David Brunelle  · 技术社区  · 6 年前

    假设我有以下表格:

    Client    Sales
    A         1000
    A         100
    A         10
    B         1000
    B         10
    C         1
    

    Client    Sales   Total
    A         1000    1110
    A         100     1110
    A         10      1110
    B         1000    1010
    B         10      1010
    C         1       1
    

    这在DAX或查询编辑器中都可能吗?我试过很多方法,但还是不知道怎么做。

    我可以使用summary函数获取另一个表所需的信息,但在安全性方面遇到了其他问题。似乎数据表得到了正确的筛选,但不是摘要版本。

    谢谢

    1 回复  |  直到 6 年前
        1
  •  5
  •   Alexis Olson    6 年前

    CALCULATE 调整筛选器上下文。

    Total = CALCULATE( SUM( Table1[Sales] ), ALLEXCEPT( Table1, Table1[Client] ) )
    

    这意味着要计算表中除客户机之外的所有行的销售额之和。因此,您将获得客户机与当前行中的客户机匹配的所有行的总和。


    Total = CALCULATE( SUM( Table1[Sales] ), ALL( Table1[Sales] ) )
    

    这只会删除 Sales Client 行上下文。如果您还有其他列,这可能不会像预期的那样工作,因为它们仍然是行上下文的一部分。


    您还可以使用删除所有筛选器上下文 ALL

    Total =
    CALCULATE(
        SUM( Table1[Sales] ),
        ALL( Table1 ),
        Table1[Client] = EARLIER( Table1[Client] )
    )
    

    或者用同样的方法 SUMX 相反

    Total =
    SUMX(
        FILTER(
            Table1,
            Table1[Client] = EARLIER( Table1[Client] )
        ),
        Table1[Sales]
    )