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

Don't miss out! 2025 Microsoft Fabric Community Conference, March 31 - April 2, Las Vegas, Nevada. Use code MSCUST for a $150 discount. Prices go up February 11th. Register now.

Reply
Lucian
Responsive Resident
Responsive Resident

How to pass column name as parameter into a function

Hello,

I need some help understanding how to pass a column name as parameter into a custom function.

 

I have a table (Accounts) from which I need a specific column (No) using a function that will filter that column.

@wdx223_Daniel was kind enough to help me getting the M code for filtering information in that table into another post: Power Query Select rows between two TEXT values

 

Now I have (partially) failed to create a custom function from his code, because the table name and column name will not be the same every time.

 

The code should be like this:

let
  func = (srcTable as table, srcColumn as text, strStartWith as text, strEndWith as text) as list =>
    let
      Source = srcTable,
      Pas1 = Table.Column(
        Table.SelectRows(
          Source,  
          each
            let
              fx = (txt1, txt2) =>
                List.Count(Text.Split(txt1, ".")) = List.Count(Text.Split(txt2, ".")) 
                and 
                Text.Remove(txt1, ".") <= Text.Remove(txt2, ".")
            in
              fx(strStartWith, srcColumn) and fx(srcColumn, strEndWith)
          ),
        srcColumn
      )
    in
      Pas1
in
  func

 

My problem seems to be on the following line:

fx(strStartWith, srcColumn) and fx(srcColumn, strEndWith)

 

If instead of the parameter srcColum, represeting the source column from the source table (srcTable) that I have to filter & return as list I will put the real name of the column ([No]) as this:

fx(strStartWith, [No]) and fx([No], strEndWith)

...the code will work perfectly, and will return the expected data.

 

So, Is there a way to pass the column name as parameter?

 

Kind Regards,

Lucian

 

1 ACCEPTED SOLUTION
Lucian
Responsive Resident
Responsive Resident

After some more digging, I find the answer => Record.Field(_,srcColumn).

So, changing the following line from:

 

fx(strStartWith, srcColumn) and fx(srcColumn, strEndWith)

 

to

 

fx(strStartWith, Record.Field(_,srcColumn)) and fx(Record.Field(_,srcColumn), strEndWith)

 

Will  make the code work.

Kind Regards,

Lucian

View solution in original post

2 REPLIES 2
Lucian
Responsive Resident
Responsive Resident

After some more digging, I find the answer => Record.Field(_,srcColumn).

So, changing the following line from:

 

fx(strStartWith, srcColumn) and fx(srcColumn, strEndWith)

 

to

 

fx(strStartWith, Record.Field(_,srcColumn)) and fx(Record.Field(_,srcColumn), strEndWith)

 

Will  make the code work.

Kind Regards,

Lucian

Thanks, this solved a problem for me 🙂

Helpful resources

Announcements
Las Vegas 2025

Join us at the Microsoft Fabric Community Conference

March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount!

ArunFabCon

Microsoft Fabric Community Conference 2025

Arun Ulag shares exciting details about the Microsoft Fabric Conference 2025, which will be held in Las Vegas, NV.

December 2024

A Year in Review - December 2024

Find out what content was popular in the Fabric community during 2024.

Top Solution Authors
Top Kudoed Authors