Forum Discussion

halifaxious's avatar
halifaxious
Frequent Visitor
3 years ago
Solved

explain this custom function, please?

I found a function to replace text using a lookup table. It works great. But the syntax is unfamiliar to me and I can't find a reference for it.  Here's what I have:

 

replacer = (x,y,z)=>LookupTable{[#"lookup value"=x]}?[replacement]? ??x

 

I have 3 questions about the above:

  1. why does the =x go inside the column reference? LookupTable{[#"lookup value"=x]}
  2. where is the documentation for what looks like a ternary operator in M?  a?b? ??c
  3. why doesn't the column reference in the true portion of the statement need to be fully justified with the table name? [replacement]

 

  • Hi halifaxious,

     

    There is a lot going on here

     

     

    replacer = (x,y,z)=>LookupTable{[#"lookup value"=x]}?[replacement]? ??x

     

     

     

    First this is a custom replacer function which takes 3 arguments: 

    x = original value

    y = match condition (true or false)

    z = replacement value

     

    Next its applying (optional) key match lookup to identify a unique row in the table

    LookupTable{ [#"lookup value"=x] }?

     

    Followed by (optional) field access, to return a value from a field/ column

    [replacement]?

     

    And finally applying coalesce, to return the input value if a null is returned.

    ?? x

     

    Ps. If this helps solve your query please mark this post as Solution, thanks!

     

    Some links to resources on these topics: 

    Visual guide to key match lookup 

    Visual guide to coalesce 

    Item- and Field access 

     

2 Replies

  • m_dekorte's avatar
    m_dekorte
    Resident Rockstar

    Hi halifaxious,

     

    There is a lot going on here

     

     

    replacer = (x,y,z)=>LookupTable{[#"lookup value"=x]}?[replacement]? ??x

     

     

     

    First this is a custom replacer function which takes 3 arguments: 

    x = original value

    y = match condition (true or false)

    z = replacement value

     

    Next its applying (optional) key match lookup to identify a unique row in the table

    LookupTable{ [#"lookup value"=x] }?

     

    Followed by (optional) field access, to return a value from a field/ column

    [replacement]?

     

    And finally applying coalesce, to return the input value if a null is returned.

    ?? x

     

    Ps. If this helps solve your query please mark this post as Solution, thanks!

     

    Some links to resources on these topics: 

    Visual guide to key match lookup 

    Visual guide to coalesce 

    Item- and Field access 

     

    • halifaxious's avatar
      halifaxious
      Frequent Visitor

      Thank you for a very illuminating answer! I wish I'd come here about 2 hours ago instead of fruitlessly googling.