我正在试图弄清楚如何构建一个总和的度量,但只为用户提供第一个非空行。
例如,我的数据如下所示:
date user value
-----------------
1/1/17 a 15
2/1/17 a 12
1/1/17 b null
5/1/17 b 3
因此我喜欢18(15 + 3)的结果。
我认为使用FIRSTNONBLANK会有所帮助,但它只需要一列,我不知道如何给它分组 - 可能需要某种窗口。
我已尝试过以下内容,但我正在努力弄清楚正确的语法是什么
groupby(
GROUPBY (
myTable,
myTable[user],
“Total”, SUMX(CURRENTGrOUP(), FIRSTNONBLANK( [value],1 ))
),
sum([total])
)
答案 0 :(得分:1)
我没有太多运气让FIRSTNONBLANK
或GROUPBY
按照我想要的方式工作,但我认为我发现了一些有效的方法:
SUMX(
ADDCOLUMNS(
ADDCOLUMNS(VALUES(myTable[User]),
"FirstDate",
CALCULATE(MIN(myTable[Date]),
NOT(ISBLANK(myTable[Value])))),
"FirstValue",
CALCULATE(SUM(myTable[Value]),
FILTER(myTable, myTable[Date] = [FirstDate]))),
[FirstValue])
内部ADDCOLUMNS
计算过滤器上下文中每个用户的第一个非空白日期值。
下一个ADDCOLUMNS
,取用该用户表和第一个日期,并为每个用户汇总在每个相应日期发生的每个[value]
。
外部SUMX
获取结果表并总计[FirstValue]
的所有值。