Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Register now to learn Fabric in free live sessions led by the best Microsoft experts. From Apr 16 to May 9, in English and Spanish.

Reply
pontushaglund
Helper I
Helper I

Calculated column or measure to get win streak

Hi all.

 

I'm trying to create a calculated column (or measure) to give me current win streak. I've vacuumed forums and blog posts online to try to find what I am searching for and the only post that should help me (https://forum.powerpivotpro.com/forums/topic/streaks-winninglosing-or-simply-consecutive-instances-o...) cannot help me - when implementing it I get an out of resources exception in Power BI Desktop (I'm on x64 client with 16 GB RAM).

 

Simplification of my data (edited with correct Index):

Index | IsWin | WinStreak (not implemented)

1        |    0     |       0

2        |    1     |       1

3        |    1     |       2

4        |    1     |       3

5        |    0     |       0

6        |    1     |       1

7        |    1     |       2

8        |    0     |       0

9        |    0     |       0

 

The third column is what I am trying to implement (and cannot seem to get my head around).

I am perfectly happy with "pseudo-dax" to help me out.

 

Thanks,

 

Pontus

 

6 REPLIES 6
Greg_Deckler
Super User
Super User

Is your Index really supposed to be all 1's?


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Duh. Thanks.

Index is of course

1

2

3

4

5

...

Can you post your current formula? I am working on one and have made some progress but would like to try yours to see if I can duplicate your issue.


@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

 My approach is to break down what a Win Streak actually is?  It's the difference between the Last Loss Game # and the Current Game #.

 

WinStreak =

var LastLossIndex = CALCULATE( MAX(Index),
FILTER(Table, [IsWin] = 0),
FILTER(Table, [Index] <= EARLIER([Index])
)

return
[Index] - LastLossIndex

 

This calculates the LastLossIndex based on each row of the table, and then a simple difference between the current row context's Index and the LastLossIndex.

 

Here's the result in a sample PBIX:

 

Screen Shot 2017-09-05 at 1.23.08 PM.png

 

Dan Malagari
Consultant at Headspring

Firstly - thanks for engaging and sorry about the delay in my response. I've done some extensive testing and come up with the following:

1. Your proposed calculated column works fine for small datasets. When trying to add it to my 63000-row table it gives me the error message 'There's not enough memory to complete this operation. Please try again later when there may be more memory available.'.

2. I designed the following measure that works fine as long as I only every single value. I have a datetime value on each row as well and if I want the Max Streak for a year/month/quarter etc I get incorrect values (I get the max Index that year).

 

Streak using MAXX =
MAX( Table1[Index])-

MAXX(
   FILTER( ALL(Table1); Table1[Index] <= MAX( Table1[Index]) && Table1[Överskridande] = 0);
   Table1[Index]
)

 

What I would like but don't know how to achieve:

Streak using MAXX alternative = 
MAXX(
   FILTER( ALL(Table1); Table1[Index] <= MAX( Table1[Index]) && Table1[Överskridande] = 0);
   MAX( Table1[Index])Table1[Index]
)

where the bold part would be the current row Index in the interation.

 

Other ideas?

It's from here: https://forum.powerpivotpro.com/forums/topic/streaks-winninglosing-or-simply-consecutive-instances-o...

=
SWITCH (
TRUE (),
[WinValidation] = 0, 0,
CALCULATE (
COUNTROWS ( factGameTeamsPlayers ),
FILTER (
ALL ( factGameTeamsPlayers ),
[WinValidation] = 0
&& [PlayerID] = EARLIER ( [PlayerID] )
&& [GameSequenceNum] < EARLIER ( [GameSequenceNum] )
)
) = 0,
CALCULATE (
SUM ( [WinValidation] ),
FILTER (
ALL ( factGameTeamsPlayers ),
[PlayerID] = EARLIER ( [PlayerID] )
&& [GameSequenceNum] <= EARLIER ( [GameSequenceNum] )
)
),
CALCULATE (
SUM ( [WinValidation] ),
FILTER (
ALL ( factGameTeamsPlayers ),
[PlayerID] = EARLIER ( [PlayerID] )
&& [GameSequenceNum]
> CALCULATE (
MAX ( [GameSequenceNum] ),
FILTER (
ALL ( factGameTeamsPlayers ),
[WinValidation] = 0
&& [PlayerID] = EARLIEST ( [PlayerID] )
&& [GameSequenceNum] < EARLIEST ( [GameSequenceNum] )
)
)
&& [GameSequenceNum] <= EARLIER ( [GameSequenceNum] )
)
)
)

 

I modified it by leaving out the Player filter as I do not have that additional dimension in my data.

 

My dataset has 63000 rows.

Helpful resources

Announcements
Microsoft Fabric Learn Together

Microsoft Fabric Learn Together

Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City

PBI_APRIL_CAROUSEL1

Power BI Monthly Update - April 2024

Check out the April 2024 Power BI update to learn about new features.

April Fabric Community Update

Fabric Community Update - April 2024

Find out what's new and trending in the Fabric Community.