代码之家  ›  专栏  ›  技术社区  ›  zaptask

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

  •  1
  • zaptask  · 技术社区  · 8 年前

    我有一个数据集:

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

    我想计算按上一个“标志”值(TRUE)过滤的“名称”的月累计不同计数。一、 e.我想得到一个结果:

    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 回复  |  直到 8 年前
        1
  •  2
  •   greggyb    8 年前
    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]
        )
    )
    

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