Forum Discussion

Dicken's avatar
Dicken
Icon for Post Prodigy rankPost Prodigy
1 year ago
Solved

Power Query Coalesce operator

Hello, 

Can someone explain, why this does not work ;

= let alist =
{2,3,4,2,2,3,4,2,2,3,3,2,3,2,2,3,3,4,2,2,3,4}
in
        List.Accumulate( alist, {} , (s,c)=> s & { List.Last(s)?? 0 + c } )


but this does, I presume order of operations, but I'd like a bit more help than that please,
let alist =
{2,3,4,2,2,3,4,2,2,3,3,2,3,2,2,3,3,4,2,2,3,4}
in
List.Accumulate( alist, {} , (s,c)=>
                                           let x = List.Last(s) ?? 0
i                                         n s & { x + c } )

Richard.

  • The operator ?? has the lowest precedence, so "List.Last(s) ?? 0 + c" is equivalent to "List.Last(s) ?? (0 + c)"

4 Replies

  • The operator ?? has the lowest precedence, so "List.Last(s) ?? 0 + c" is equivalent to "List.Last(s) ?? (0 + c)"

    • Dicken's avatar
      Dicken
      Icon for Post Prodigy rankPost Prodigy

      Thanks, I thought more complex ;  re   wrtoe to 
      = let alist = {2,3,2,3,2,3,3,3,2,3,3,4,2,2}
      in
      List.Accumulate( alist, {} , (s,c)=>
      s & {     ( List.Last(s)??0 )    + c } )

  • yes, pretty much.  You need to protect the coalesce from the addition.

     

    let
      alist = {2, 3, 4, 2, 2, 3, 4, 2, 2, 3, 3, 2, 3, 2, 2, 3, 3, 4, 2, 2, 3, 4}
    in
      List.Accumulate(alist, {}, (s, c) => s & {(List.Last(s) ?? 0) + c})