首页 > 解决方案 > 如何使用 DAX 在 Power BI 中根据不同级别汇总度量

问题描述

我有以下表结构:

| Name 1 | Name 2 | Month  | Count 1 | Count 2 | SumCount |
|--------|--------|--------|---------|---------|----------|
| A      | E      | 1      | 5       | 3       | 8        |
| A      | E      | 2      | 1       | 6       | 7        |
| A      | F      | 3      | 3       | 4       | 7        |

现在我用 DAX 度量计算以下内容。

Measure = (sum(Table[Count 2] - sum(Table[Count 1])) * sum(Table[SumCount])

我不能使用列,因为在排除图层(例如月份)之前应用了公式。添加到我的表结构并排除月份,它看起来像这样:

| Name 1 | Name 2 | Count 1 | Count 2 | SumCount | Measure |
|--------|--------|---------|---------|----------|---------|
| A      | E      | 6       | 9       | 15       | 45      |
| A      | F      | 3       | 4       | 7        | 7       |

我在视图中添加了一个表格,该表格仅显示Name 1在这种情况下,度量当然会汇总Count 1Count 2SumCount应用导致以下结果的度量:

| Name 1 | Measure |
|--------|---------|
| A      | 88      |

但期望的结果应该是

| Name 1 | Measure |
|--------|---------|
| A      | 52      |

这是 的总和Measure

所以基本上我想在我的基础级别上进行计算,Measure = (sum(Table[Count 1] - sum(Table[Count 2])) * sum(Table[SumCount])但是在钻取和分组这些名称时,它应该只执行sum.

标签: powerbidax

解决方案


像这样的迭代器函数SUMX就是你想要的,因为你试图逐行求和而不是先聚合。

Measure = SUMX ( Table, ( Table[Count 2] - Table[Count 1] ) * Table[SumCount] )

您拥有的任何过滤器都将应用于第一个参数 ,Table并且它只会对相应的行求和。


编辑:

如果我理解正确,您希望Month在获取差异和产品之前进行汇总。一种方法是Month在使用之前总结(不包括 ),SUMX如下所示:

Measure =
VAR Summary =
    SUMMARIZE (
        Table,
        Table[Name 1],
        Table[Name 2],
        "Count1Sum", SUM ( Table[Count 1] ),
        "Count2Sum", SUM ( Table[Count 2] ),
        "SumCountSum", SUM ( Table[SumCount] )
    )
RETURN
    SUMX ( Summary, ( [Count2Sum] - [Count1Sum] ) * [SumCountSum] )

推荐阅读