March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early bird discount ends December 31.
Register NowBe one of the first to start using Fabric Databases. View on-demand sessions with database experts and the Microsoft product team to learn just how easy it is to get started. Watch now
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"}
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!
Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.