由最后一个值 - DAX过滤的累积不同计数

时间:2016-01-26 18:40:29

标签: excel pivot-table powerpivot dax

我有一个数据集:

month   name    flag
1       abc     TRUE
2       xyz     TRUE
3       abc     TRUE
4       xyz     TRUE
5       abc     FALSE
6       abc     FALSE

我想计算过去'flag'值(TRUE)过滤的'name'的月累积不同计数。即我想得到一个结果:

month   count
1       1
2       2
3       2
4       2
5       1
6       1

在第5个月和第6个月,应排除'abc',因为在第5个月,该标志已切换为“FALSE”。我正在尝试使用此处给出的示例来实现:

http://www.daxpatterns.com/cumulative-total/

但我正在苦苦挣扎。我当时认为也许函数TOPN可用于过滤可以使用DISTINCTCOUNT的表格,但我没有得到预期的结果。

1 个答案:

答案 0 :(得分:1)

MyFilteredCumulativeMeasure =
COUNTROWS(
    FILTER(
        GENERATE(
            ALL( 'MyTable'[name] )
            ,CALCULATETABLE(
                SAMPLE(
                    1
                    ,SUMMARIZE(
                        'MyTable'
                        ,'MyTable'[month]
                        ,'MyTable'[flag]
                    )
                    ,'MyTable'[month]
                    ,DESC
                )
                ,FILTER(
                    ALL( 'MyTable'[month] )
                    ,'MyTable'[month] <= MAX( 'MyTable'[month] )
                )
            )
        )
        ,'MyTable'[flag]
    )
)

这适用于您的样本。可能需要对实际数据进行一些调整。随着数据量的增加,也可能会显着放缓。我会继续对它进行涂鸦,因为这并不是很正确,但这是一个很好的天真实现。