Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!Vote for your favorite vizzies from the Power BI Dataviz World Championship submissions. Vote now!
Hi,
I have a question regardign how gen accumulates , I have an accumulation which re starts when 10 is reached / exceeded,
So this works,
let alist = {3} & List.Repeat({2} , 25) in
List.Generate( ()=> [ x = 0 , y = alist{0} ,z = 0 ] ,
each [x] < List.Count(alist) ,
each [ x = [x] + 1, z = alist{x} ,
y = if [y] + z > 10 then z else [y] + z] ,
each [y] )
so from this ;
let alist = {3} & List.Repeat({2} , 25) in
List.Generate( ()=> [ x = 0 , y = alist{0} ,z = 0 ] ,
each [x] < List.Count(alist) ,
each [ x = [x] + 1, y = [y] + alist{x} , z = y ] ,
each [z] )
But if you try an if condtion;
= let alist = {3} & List.Repeat({2} , 25) in
List.Generate( ()=> [ x = 0 , y = alist{0} ,z = 0 ] ,
each [x] < List.Count(alist) ,
each [ x = [x] + 1, y = [y] + alist{x} , z = if y > 10 then alist{x} else y ] ,
each [z] )
then the accumulation does not re start ? , but if the current value = ie 2 then 2 < 10 so [y] + alist{x}
but that does not seem to be the case, not sure why ,
some advice help sought on this .
Richard.
Solved! Go to Solution.
As I wrote above: in that example you are never resetting y. So once y becomes greater than 10, y always remains greater than 10.
Therefore z will always be set to alist{x}
Thanks, sorry for slow response.
You can also solve this problem by List.Accumulate
let
alist = {3} & List.Repeat({2} , 25)
in
List.Accumulate(alist, {0},(a,b)=> if List.Last(a)+b>10 then a&{b} else a& {List.Last(a)+b})
In your non-working snippet, your sequence will not repeat because you never reset "y". So once y>10 = true, it will always be >10 and z will always return alist{x}
let
alist = {3} & List.Repeat({2} , 25)
in
List.Generate( ()=> [ x = 0 , y = alist{0} ,z = 0 ] ,
each [x] < List.Count(alist) ,
each [ x = [x] + 1,
y = [y] + alist{x} ,
z = if y > 10
then alist{x}
else y ] ,
each [z] )
Try:
let
alist = {3} & List.Repeat({2} , 25)
in
List.Generate( ()=> [ x = 0 , y = alist{0} ,z = 0 ] ,
each [x] < List.Count(alist) ,
each [x = [x] + 1,
y = if [y] + alist{x} > 10
then alist{x}
else [y] + alist{x},
z = y ] ,
each [z] )
although you don't really need z at all
let
alist = {3} & List.Repeat({2} , 25)
in
List.Generate( ()=> [ x = 0 , y = alist{0}] ,
each [x] < List.Count(alist) ,
each [x = [x] + 1,
y = if [y] + alist{x} > 10
then alist{x}
else [y]+alist{x}] ,
each [y] )
I still don't see why the condition does not kick in as expected the third example,
so this works y = if [y] + alist{x} > 10 then alist{x} else [y] + alist{x} ] works,
but if [y] + alist{x} is declared as a variabel y
and then ; if z = if y > 10 then alistt{x} it returns a different incorrect restult?
that's the question, I not bothered about solving it just why the two operate differently
As I wrote above: in that example you are never resetting y. So once y becomes greater than 10, y always remains greater than 10.
Therefore z will always be set to alist{x}
Vote for your favorite vizzies from the Power BI World Championship submissions!
If you love stickers, then you will definitely want to check out our Community Sticker Challenge!
Check out the January 2026 Power BI update to learn about new features.
| User | Count |
|---|---|
| 11 | |
| 11 | |
| 6 | |
| 6 | |
| 6 |