如何使用DAX总结基于Power BI中不同级别的度量

时间:2019-10-08 13:20:23

标签: powerbi dax

我具有以下表格结构:

| 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

2 个答案:

答案 0 :(得分:1)

在这种情况下,您不需要度量,而是需要新列,

相同的公式,但是新列将提供您想要的结果。

Column = ('Table (2)'[Count1]-'Table (2)'[Count2])*'Table (2)'[SumCount]

enter image description here

答案 1 :(得分:1)

这里要使用像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] )