【问题标题】:Cumulative distinct count filtered by last value - DAX按最后一个值过滤的累积不同计数 - DAX
【发布时间】:2016-01-26 18:40:28
【问题描述】:

我有一个数据集:

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

我想计算按最后一个“标志”值 (TRUE) 过滤的“名称”的月累积非重复计数。 IE。我想要一个结果:

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 的表,但我没有得到想要的结果。

【问题讨论】:

  • 在给定的示例中,如果第 5 和第 6 个月没有值,您的计数不应该为 1 吗?
  • ?它应该是 1,因为在第 4 个月有 'xyz' 和 'TRUE'。

标签: excel pivot-table powerpivot dax


【解决方案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]
    )
)

这适用于您的示例。可能需要对真实数据进行一些调整。随着数据大小的增加,也可能显着放缓。我会继续研究它,因为这感觉不太对,但它是一个很好的幼稚实现。

【讨论】:

  • 非常感谢。我的直觉在 DAX 上非常失败……但它似乎如此强大。哦,好吧,只需要继续学习。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-04
相关资源
最近更新 更多