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.

@ me in replies or I'll lose your thread!!!
Instead of a Kudo, please vote for this idea
Become an expert!: Enterprise DNA
External Tools: MSHGQM
YouTube Channel!: Microsoft Hates Greg
Latest book!:
The Definitive Guide to Power Query (M)

DAX is easy, CALCULATE makes DAX hard...

Announcements

#### Europe’s largest Microsoft Fabric Community Conference

Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.

If you love stickers, then you will definitely want to check out our Community Sticker Challenge!

#### Power BI Monthly Update - July 2024

Check out the July 2024 Power BI update to learn about new features.

#### Fabric Community Update - July 2024

Find out what's new and trending in the Fabric Community.

Top Solution Authors
Top Kudoed Authors