我有一个具有以下结构的数据集:名称、周标识符、二进制条件列。使用 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。
非常感谢您提供的任何帮助!
我尝试对列进行索引并在以下帖子中使用调整代码:
尝试一下这个措施
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 )