Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

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.

Reply
Dicken
Responsive Resident
Responsive Resident

Function within List.Generate

Hi, 

I have to grouped accumulations ; 
A ; which does not work ; 
= Table.Group(Source, {"Name", "Item"},
                      {{"Count", each
                             List.Generate( ()=> [ x = 0 , y = [Unit] {0} ] ,
                                                  each [x] < List.Count( [Unit] ) ,
                                                    each [ x = 0 , y = [y] + [Unit] {x} ] ,
                                                   each [y] )
                                    }  } )

and B; which does; 
Table.Group(Source, {"Name", "Item"}, {{"Count", (i)=>
                                                            List.Generate( ()=> [ x = 0 , y = i[Unit] {0} ],
                                                                                 each [x] < List.Count( i [Unit] ) ,
                                                                                 each [ x = [x] + 1, y = [y] + i [Unit] {x} ] ,
                                                                               each [y] )
                                                                       }} )
As can be seen if defined the  function (i)=> in the second, so is the first refering to an 'outside' table, while the 'each' in 
generate is specifically whats going on within the List.Generate , so where both are each it gets confused and causes an error 
or something like that ? 

  Rchard. 

2 ACCEPTED SOLUTIONS
ronrsnfld
Super User
Super User

You have it correct.

View solution in original post

ZhangKun
Super User
Super User

The each keyword is a syntax sugar, which is a shorthand form of "(_) =>". In the first case, only the each keyword is used. The program will find whether there is a Unit column in the variable (identifier) ​​named "_" in the nearest layer.

The key point is:

  • The function in the first parameter has no parameters, so the Unit column can be found (there is no variable named _ at the current level, so it will be looked for outside).
  • The next three parameters all use the each keyword, which uses _ as the name, so [Unit] in them cannot find the Unit column (looking for the nearest variable named _).

    ZhangKun_0-1745086798620.png

View solution in original post

3 REPLIES 3
ZhangKun
Super User
Super User

The each keyword is a syntax sugar, which is a shorthand form of "(_) =>". In the first case, only the each keyword is used. The program will find whether there is a Unit column in the variable (identifier) ​​named "_" in the nearest layer.

The key point is:

  • The function in the first parameter has no parameters, so the Unit column can be found (there is no variable named _ at the current level, so it will be looked for outside).
  • The next three parameters all use the each keyword, which uses _ as the name, so [Unit] in them cannot find the Unit column (looking for the nearest variable named _).

    ZhangKun_0-1745086798620.png

ronrsnfld
Super User
Super User

You have it correct.

Dicken
Responsive Resident
Responsive Resident

Thanks, it took a while for the penny to drop when I kept getting an 
error, at first I used a let statement, and named the [Units]  and then I could use the name. 
in  generate. 

Helpful resources

Announcements
Fabric Data Days Carousel

Fabric Data Days

Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!

October Power BI Update Carousel

Power BI Monthly Update - October 2025

Check out the October 2025 Power BI update to learn about new features.

FabCon Atlanta 2026 carousel

FabCon Atlanta 2026

Join us at FabCon Atlanta, March 16-20, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.

Top Kudoed Authors