Power BI:计算值的连续出现次数

问题描述 投票:0回答:1

我有一个具有以下结构的数据集:名称、周标识符、二进制条件列。使用 PowerBI/DAX,我想创建一个名为“Streak”的列,用于评估相同“名称”的“DidItHappen”列 = 1 的连续次:

| Name       | Week  | DidItHappen |Streak|
| Person A   | 15    | 1           | 1    |
| Person A   | 16    | 1           | 2    |
| Person B   | 15    | 1           | 1    |
| Person B   | 16    | 0           | 0    |
| Person B   | 17    | 1           | 1    |
| Person C   | 15    | 0           | 0    |
| Person C   | 16    | 0           | 0    |
| Person C   | 17    | 1           | 1    |
| Person C   | 18    | 1           | 2    |
| Person C   | 19    | 0           | 0    |
| Person C   | 20    | 1           | 1    |
| Person C   | 21    | 1           | 2    |
| Person C   | 22    | 1           | 3    |
| Person C   | 23    | 1           | 4    |
| Person C   | 24    | 0           | 0    |
| Person C   | 25    | 1           | 1    |

如果“DidItHappen”=0,那么Streak应该是always0(无论是否连续)。 第一个“Name”的“DidItHappen”=1 的实例,Streak 应该为 1。 对于相同的“名称”**和**连续的“周”,所有后续连续出现的“DidItHappen”=1 应该将“Streak”增加 1。

非常感谢您提供的任何帮助!

我尝试对列进行索引并在以下帖子中使用调整代码:

计数 DAX 值的条纹或连续重复

powerbi dax powerbi-desktop
1个回答
0
投票

尝试一下这个措施

Count Winning Streak =
VAR person =
    SELECTEDVALUE ( 'table'[ Name       ] )
VAR last_week =
    MAX ( 'table'[ Week  ] )
VAR lastweekStart =
    CALCULATE (
        MAX ( 'table'[ Week  ] ),
        FILTER (
            ALL ( 'table' ),
            'table'[ Name       ] = person
                && 'table'[ DidItHappen ] = 0
                && 'table'[ Week  ] < last_week
        )
    )
VAR streak =
    CALCULATE (
        COUNTROWS ( 'table' ),
        FILTER (
            ALL ( 'table' ),
            'table'[ Name       ] = person
                && 'table'[ Week  ] <= last_week
                && 'table'[ Week  ] >= lastweekStart
                && 'table'[ DidItHappen ] = 1
        )
    )
RETURN
    IF ( SELECTEDVALUE ( 'table'[ DidItHappen ] ) = 0, 0, streak )
© www.soinside.com 2019 - 2024. All rights reserved.