我具有以下表格结构:
| 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 1
,Count 2
和SumCount
并应用度量导致以下结果:
| Name 1 | Measure |
|--------|---------|
| A | 88 |
但是期望的结果应该是
| Name 1 | Measure |
|--------|---------|
| A | 52 |
是Measure
的总和。
因此,基本上,我想在基础级别Measure = (sum(Table[Count 1] - sum(Table[Count 2])) * sum(Table[SumCount])
上进行计算,但是在向上钻取和分组这些名称时,应该只执行sum
。
答案 0 :(得分:1)
在这种情况下,您不需要度量,而是需要新列,
相同的公式,但是新列将提供您想要的结果。
Column = ('Table (2)'[Count1]-'Table (2)'[Count2])*'Table (2)'[SumCount]
答案 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] )