cancel
Showing results for
Did you mean:

Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started

New Member

## Expand a list of various types into a new list

Trying to figure out how to programatically expand a list of various data types, including other lists.

For example, here is a list of lists:

If I "drill down" to the next level using List.Combine, I now have more lists, and some text values:

The first List contained two Lists, the second List contained two text values.

Now I want to drill down again into those two list items, but I can't use List.Combine anymore, because that only works with data type List, and now I have some text values in my list. I want keep the text values as part of the new list, but continue drilling down into nested lists, until eventually I have a list of all text values.

Any help would be greatly appreaciated!

1 ACCEPTED SOLUTION
New Member

Thanks guys, I ended up using this function, works great!

4 REPLIES 4
New Member

Thanks guys, I ended up using this function, works great!

Impactful Individual

You want is similar to {{"a", "b"}, {"c", "d"}, "e", "f", {"g", {"h", "i"}}} to convert to {"a", "b", "c", "d", "e", "f", "g", "h", "i"}?

Super User

try this, a recursive function that keeps using List.Combine until all lists have been expanded. For illustration purposes, it uses the list created in Source = and you'll see the result in the last step

``````let

expandFunc_ = (inputList_)=>
let
step0 = List.Combine(List.Transform(inputList_, each if Value.Type(_) = type list then _ else {_})),
step1 = List.Accumulate(inputList_, true, (state, current)=> state and Value.Type(current) <> type list  ),
output = if step1 = true then step0 else @expandFunc_(step0)
in
output,

Source = {{"a", "b"}, {"c", "d"}, "e", "f", {"g", {"h", {"i",{"j", "l", "m"}}}}},
resfunc = expandFunc_(Source)
in
resfunc``````

Please mark the question solved when done and consider giving kudos if posts are helpful.

Contact me privately for support with any larger-scale BI needs

Cheers

Super User

Seems to me that you will need a new column where you make the decision to drill down or not based upon the data type. You could probably turn around and combine that into a single step in your M code.

Become an expert!: Enterprise DNA
External Tools: MSHGQM
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...