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.
Hi,
I don't mind whether this can be done in M or DAX, as long as it is done without other languages like Python (which are not enabled for me). Is it possible at all to get a list of blocks of consecutive numbers (please see the example diagram below)? I have tried for 2 days straight and I'm not getting anywhere. I am trying to get the table like the one on the right (below) from the table on the left.
Thanks
Solved! Go to Solution.
Sorry @lazarus1907 ,
my bad. Forgot that this technique always compares against the first element in the group and not against the previous.
I'd recommend this approach then instead:
let
// Replace this Source step by a reference to your table
Source = Table.FromRows(
Json.Document(
Binary.Decompress(
Binary.FromText(
"JcqxEQAgCAPAXVJTEBQdhmP/NTxD98VXgTDQHW2FkCkvOeT9zTkpzznynCsnuh8=",
BinaryEncoding.Base64
),
Compression.Deflate
)
),
let
_t = ((type nullable text) meta [Serialized.Text = true])
in
type table [Ref = _t, Code = _t]
),
#"Changed Type" = Table.TransformColumnTypes(Source, {{"Ref", Int64.Type}, {"Code", Int64.Type}}),
ToList = List.Buffer(Table.ToRecords(#"Changed Type")),
AllBucketID = List.Generate(
() => Record.AddField(Record.AddField(ToList{0}, "CountAll", 0), "CountGroup", 0),
each [CountAll] <= List.Count(ToList),
each [
CountAll = [CountAll] + 1,
CountGroup =
if [Code] = ToList{[CountAll]}[Code] - 1 then
[CountGroup]
else
[CountGroup] + 1,
Code = ToList{[CountAll]}[Code],
Ref = ToList{[CountAll]}[Ref]
]
),
SkipInitialElement = List.Skip(AllBucketID),
#"Converted to Table" = Table.FromList(
SkipInitialElement,
Splitter.SplitByNothing(),
null,
null,
ExtraValues.Error
),
#"Expanded Column1" = Table.ExpandRecordColumn(
#"Converted to Table",
"Column1",
{"Ref", "Code", "CountGroup"},
{"Ref", "Code", "CountGroup"}
),
#"Grouped Rows" = Table.Group(
#"Expanded Column1",
{"CountGroup"},
{
{"Ref", each List.Max([Ref]), type number},
{"Code", each List.Max([Code]), type number},
{"Count", each Table.RowCount(_), Int64.Type}
},
GroupKind.Local
),
#"Removed Columns" = Table.RemoveColumns(#"Grouped Rows", {"CountGroup"})
in
#"Removed Columns"
Imke Feldmann (The BIccountant)
If you liked my solution, please give it a thumbs up. And if I did answer your question, please mark this post as a solution. Thanks!
How to integrate M-code into your solution -- How to get your questions answered quickly -- How to provide sample data -- Check out more PBI- learning resources here -- Performance Tipps for M-queries
using an auxiliary index column, the V element of the table.group function can dig the spider out of the hole.
let
Origine = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("Lc3LDcAwCATRXjjn4AV/a7HcfxtJBt/eSGjZ22SPSWHn2ea44sANV9xxwwN3PPHAC8/P7rmzcO6oEDkkEbkkJ3JKQeSW/udR71kj7lkn7tn/P1rJmIQyFuF2zgs=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Colonna1 = _t, Colonna2 = _t]),
#"Modificato tipo" = Table.TransformColumnTypes(Origine,{{"Colonna2", Int64.Type}}),
aci = Table.AddIndexColumn(#"Modificato tipo", "Indice", 0, 1, Int64.Type),
#"Modificato tipo1" = Table.TransformColumnTypes(aci,{{"Colonna2", Int64.Type}}),
#"Raggruppate righe" = Table.Group(#"Modificato tipo1", {"Colonna2", "Indice"}, {{"last", each Table.Last(_)},{"Conteggio", each Table.RowCount(_), Int64.Type}}, GroupKind.Local,(x,y)=>-x[Colonna2]+y[Colonna2]-(y[Indice]-x[Indice])),
#"Tabella ref espansa" = Table.ExpandRecordColumn(#"Raggruppate righe", "last", {"Colonna1", "Colonna2"}, {"ref", "code"}),
#"Rimosse colonne" = Table.RemoveColumns(#"Tabella ref espansa",{"Colonna2", "Indice"})
in
#"Rimosse colonne"
PS
questa soluzione presuppone che la tabella sia ordina in senso crescente nella colonna Code.
Covering the world! 9:00-10:30 AM Sydney, 4:00-5:30 PM CET (Paris/Berlin), 7:00-8:30 PM Mexico City
Check out the April 2024 Power BI update to learn about new features.