Microsoft is giving away 50,000 FREE Microsoft Certification exam vouchers!
Enter the sweepstakes now!Prepping for a Fabric certification exam? Join us for a live prep session with exam experts to learn how to pass the exam. Register now.
Hi everyone! I have been searching the forum for conditional index solutions but I can't seem to find any which matches my problem. It seems fairly simple yet I wasn't able to combine ideas from provided solutions (such as usage of VAR/MAX).
The key column looks up from another table so it is static (abc MAX is always 3, def MAX is always 2, so on).
I need to create a new index column based on KEY which restarts to 1 once it reaches its max value.
KEY | MAX | INDEX |
abc | 3 | 1 |
abc | 3 | 2 |
def | 2 | 1 |
def | 2 | 2 |
abc | 3 | 3 |
abc | 3 | 1 |
def | 2 | 1 |
ghi | 4 | 1 |
ghi | 4 | 2 |
ghi | 4 | 3 |
ghi | 4 | 4 |
def | 2 | 2 |
Thanks in advance!
Solved! Go to Solution.
you can create an index table in PQ, then use DAX to create a column
Column =
if(mod(CALCULATE(COUNTROWS('Table'),'Table'[KEY]=EARLIER('Table'[KEY])&&'Table'[Index]<=EARLIER('Table'[Index])),'Table'[MAX])=0,'Table'[MAX],mod(CALCULATE(COUNTROWS('Table'),'Table'[KEY]=EARLIER('Table'[KEY])&&'Table'[Index]<=EARLIER('Table'[Index])),'Table'[MAX]))
pls see the attachment below
Proud to be a Super User!
Hi @k_rojvanakarn , @ryan_mayu , @adventurer7
Might be useful for you.
In this case, I generate values from 1 to 5 and repeting them based on Index column.
= List.Accumulate(#"Added Index"[Index],{0}, (state,current) =>
if current = 0 then {1}
else if List.Last(state)>4 then
state &{List.Last(state)-4} else state & {List.Last(state)+1})
Here is a good video related how to use other approach https://youtu.be/Hc3d8rMSXcQ?si=S1Adls_HbrgPn4bw
Hi,
How did you arrive at the numbers in the Index column?
is this a table or a visual?
Proud to be a Super User!
Hi! This is in a table
you can create an index table in PQ, then use DAX to create a column
Column =
if(mod(CALCULATE(COUNTROWS('Table'),'Table'[KEY]=EARLIER('Table'[KEY])&&'Table'[Index]<=EARLIER('Table'[Index])),'Table'[MAX])=0,'Table'[MAX],mod(CALCULATE(COUNTROWS('Table'),'Table'[KEY]=EARLIER('Table'[KEY])&&'Table'[Index]<=EARLIER('Table'[Index])),'Table'[MAX]))
pls see the attachment below
Proud to be a Super User!
is this possible in the power query editor? i have the sane structure but in power query instead of columns and measures..
Thanks! Works exactly as intended. Just having memory related problems once this is applied to a table with 50k+ rows, so I may have to recreate this in PQ instead of DAX
Appreciate the help!
I don't know how to do this in PQ, let's see if anyone else can help on M language.
Proud to be a Super User!
Check out the April 2025 Power BI update to learn about new features.
Explore and share Fabric Notebooks to boost Power BI insights in the new community notebooks gallery.
User | Count |
---|---|
72 | |
71 | |
68 | |
42 | |
42 |
User | Count |
---|---|
46 | |
40 | |
28 | |
27 | |
26 |