DAX - Meassure,它只是按小组计算的第一次出现

时间:2018-01-24 10:02:29

标签: dax azure-analysis-services

我正在试图弄清楚如何构建一个总和的度量,但只为用户提供第一个非空行。

例如,我的数据如下所示:

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])
)

1 个答案:

答案 0 :(得分:1)

我没有太多运气让FIRSTNONBLANKGROUPBY按照我想要的方式工作,但我认为我发现了一些有效的方法:

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]的所有值。