我想基于三个不同的列创建三个累积和列。每个累积总和必须如下计算:
dte
列中按同一日期分组我应该创建彼此分开的列A,B,C的新表吗?
+-----------+----+----------+---+----+-----+----------+----------+----------+
| dte | id | last_dte | a | b | c | a_cumsum | b_cumsum | c_cumsum |
+-----------+----+----------+---+----+-----+----------+----------+----------+
| 12/4/2018 | 1 | 3-Dec | 2 | 8 | 200 | 2 | | |
| 12/4/2018 | 2 | 3-Dec | 2 | 5 | 150 | 4 | | |
| 12/4/2018 | 8 | 3-Dec | 2 | 25 | 88 | 6 | | |
| 12/4/2018 | 9 | 3-Dec | 2 | 89 | 456 | 8 | | |
| 12/3/2018 | 12 | 2-Dec | 2 | 1 | 124 | 2 | | |
| 12/3/2018 | 13 | 2-Dec | 2 | 5 | 46 | 4 | | |
| 12/3/2018 | 19 | 2-Dec | 2 | 22 | 10 | 6 | | |
+-----------+----+----------+---+----+-----+----------+----------+----------+
答案 0 :(得分:2)
这是Cumulative Sum DAX Pattern的经典示例。
您不需要单独的表。
作为计算列
a_cum =
VAR CurrentID = [id]
RETURN
CALCULATE (
SUM ( Table01[a] ),
FILTER (
ALLEXCEPT ( Table01, Table01[dte] ),
Table01[id] <= CurrentID
)
)
b_cum
和c_cum
列是类似的。只需切换出您要引用的列,并更改DESC(而不是ASC)的不等式的方向即可。
例如,
b_cum =
VAR CurrentID = [id]
RETURN
CALCULATE (
SUM ( Table01[b] ),
FILTER (
ALLEXCEPT ( Table01, Table01[dte] ),
Table01[id] >= CurrentID
)
)
这应该给你这样一个表:
请注意,这些按id
列对累积总和进行排序(a_cum
的ASC,b_cum
和c_cum
的降序)。如果您需要按列的值而不是按id
的值进行排序,那么我建议为每个列添加一个计算列,以根据需要对它们进行排名。然后,使用rank
列而不是DAX中的id
列。