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!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hi,
in the code below is there a way to deal with the fact the last value is not included, other than what i have don and
let alist = { "a","a","a","a","b","b","b","b","c","c","c","d"} ,
poslist = { 0..List.Count( alist )-2} in
List.Accumulate( poslist, {}, (s,c)=>
if alist {c} = alist {c +1} then s & { alist {c} } else
s & { alist {c} , "", List.Last( alist) } )
just stuck it on at the end, I know there are oher ways, but I'm just interested in a neater way or perhaps an 'and'
statement.
Richard.
Solved! Go to Solution.
Please read post alist =
{ "a","a","a","a","b","b","b","b","c","c","c","d"}
This perhaps?:
let alist = {"a","a","a","a","b","b","b","b","c","c","c","d"},
poslist = {1..List.Count(alist)-1}
in List.Accumulate(poslist, {alist{0}}, (s,c)=> if alist{c} = alist{c-1} then s & {alist{c}} else s & {"",alist{c}})
resulting in:
or use null instead of "".
Hi @Dicken
Without List.Accumulate
= List.Combine(
List.Transform(
List.Zip({alist,List.Skip(alist)}),
each if _{0} = _{1} or _{1} = null then {_{0}} else {_{0}, ""})
)
or with your first idea
= let alist = { "a","a","a","a","b","b","b","b","c","c","c","d"} ,
poslist = { 0..List.Count( alist )-1} in
List.Accumulate( poslist, {}, (s,c)=>
if c=List.Max(poslist) or alist {c} = alist {c +1} then s & { alist {c} } else
s & { alist {c} , "" , List.last(alist)} )
Stéphane
This perhaps?:
let alist = {"a","a","a","a","b","b","b","b","c","c","c","d"},
poslist = {1..List.Count(alist)-1}
in List.Accumulate(poslist, {alist{0}}, (s,c)=> if alist{c} = alist{c-1} then s & {alist{c}} else s & {"",alist{c}})
resulting in:
or use null instead of "".
Yes , thanks, I had gon about it in a slightly different way, this is to insert 3 blank rows but the principle hte same starting a 1 column tablle to insert 3 blank rows at change; the main problem is it's not very effecient, need to re write with generate ?
= let alist = Source [Test] , pos = { 1..List.Count(alist ) -1} ,
acc = List.Accumulate( pos, {}, (s,c)=>
if alist {c-1} = alist {c} then s & {0} else s & { 0,1,0,0} )
in List.Accumulate(
List.PositionOf( acc, 1 , Occurrence.All ),
Source , (s,c)=>
Table.InsertRows( s, c ,Table.ToRecords( insert3 ) ))
to insert 3 blank rows instead of one, use:
…then s & {alist{c}} else s & {null,null,null,alist{c}}
or:
…then s & {alist{c}} else s & {"","","",alist{c}}
or any number of blank rows (10 here):
…then s & {alist{c}} else s & List.Repeat({null},10) & {alist{c}})
No I'm tryiing to achieve what I said I was trying to achieve, a way of avoiding just adding the last value on
at then end.
s & { alist {c} , "original post.
@Dicken What is it that you're trying to achieve here? Add a blank row before each new alphabet?
No I , that is what it does, I want a better solution to getting the last value included ohter than just adding it on the end, I did say this in the originla post, please don't suggest alternativves as that is not the point I wans a conditons that will autmatically include the last value when ii is met or something somilar.
please show us what you have as a start (presumably alist) and what you want to get in the end. We don't need your code. Thanks.
and what I want at teh end =
{ "a","a","a","a","b","b","b","b","c","c","c","d"} , but with a space inserted into between each but want to use an accumlation that does includes the last value as said I used
s & { alist {c} , "", List.Last( alist) } )
I think I've come up wiht a better way of including the last value.
Please read post alist =
{ "a","a","a","a","b","b","b","b","c","c","c","d"}
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
| User | Count |
|---|---|
| 10 | |
| 6 | |
| 5 | |
| 5 | |
| 3 |