Forum Discussion

smpa01's avatar
smpa01
Community Champion
1 year ago
Solved

Parametrize columns

I am having issue to pass on columns as parameter for a function callback

 

Non function version

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTJSitWJBpI6SsZgljGQZaIUGwsA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [colA = _t, colB = _t]),
    ct = Table.TransformColumnTypes(Source,{{"colA", Int64.Type}, {"colB", Int64.Type}}),
    filter = Table.SelectRows(ct, (_)=> (Number.IsEven([colB]) = true))
in
    filter

 

Function

let fn = (tbl as table, filterCol as record) as table =>
    let 
    filter = Table.SelectRows(tbl, (_)=> (Number.IsEven(filterCol) = true))
in
    filter in fn

 

fails on

let
    Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUTJSitWJBpI6SsZgljGQZaIUGwsA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [colA = _t, colB = _t]),
    ct = Table.TransformColumnTypes(Source,{{"colA", Int64.Type}, {"colB", Int64.Type}}),
    filter = fx(ct, [colB])
in
    filter

 

Thank you in advance

AlexisOlson  dufoq3 

  • I think this is what you are intending to do.

    let
        Source = Table.FromRows({{1,2},{2,3},{3,4}}, type table[colA = Int64.Type, colB = Int64.Type]),
        fx = (tbl as table, filterCol as text) as table =>
            Table.SelectRows(tbl, (_) => Number.IsEven(Record.Field(_, filterCol))),
        filter = fx(Source, "colB")
    in
        filter

3 Replies

  • I think this is what you are intending to do.

    let
        Source = Table.FromRows({{1,2},{2,3},{3,4}}, type table[colA = Int64.Type, colB = Int64.Type]),
        fx = (tbl as table, filterCol as text) as table =>
            Table.SelectRows(tbl, (_) => Number.IsEven(Record.Field(_, filterCol))),
        filter = fx(Source, "colB")
    in
        filter
    • smpa01's avatar
      smpa01
      Community Champion

      Thanks AlexisOlson. This is awesome.

      You saved me a lot of time, chat gpt failed too.