Forum Discussion

subirch's avatar
subirch
Frequent Visitor
5 years ago
Solved

Power Query - Lookup

Hi,

 

How can I have "Is Manager?" column output from the column "Employee Id" and "Manager Id"in power query?

 

Employee IDManager IDIs Manager?
100200No
200200Yes
300200No
400700Yes
500700No
600700No
700700Yes
800400No
900400No
1000400No
  • See this code subirch 

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQwUNJRMgKTfvlKsTrRUA6EjEwtBosZYyozAXPMUZSZIolBlZlhCplj0WkB5pkgK7PEFAK6FlUsFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Employee ID" = _t, #"Manager ID" = _t, #"Is Manager?" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Employee ID", Int64.Type}, {"Manager ID", Int64.Type}}),
        #"Added Is Manager" = 
            Table.AddColumn(
                #"Changed Type", "Is Manager", 
                each if List.Contains(#"Changed Type"[Manager ID], [Employee ID]) then "Yes" else "No")
    in
        #"Added Is Manager"

     


    It is a straight forward if/then/else construct with one function. The Key is this function: List.Contains(#"Changed Type"[Manager ID], [Employee ID])

    It turns the Manager ID into a list, then scans that list to see if the Employee ID is contained in it, returning True or False.

     

    How to use M code provided in a blank query:
    1) In Power Query, select New Source, then Blank Query
    2) On the Home ribbon, select "Advanced Editor" button
    3) Remove everything you see, then paste the M code I've given you in that box.
    4) Press Done
    5) See this article if you need help using this M code in your model.

4 Replies

  • edhans's avatar
    edhans
    Community Champion

    See this code subirch 

     

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMjQwUNJRMgKTfvlKsTrRUA6EjEwtBosZYyozAXPMUZSZIolBlZlhCplj0WkB5pkgK7PEFAK6FlUsFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [#"Employee ID" = _t, #"Manager ID" = _t, #"Is Manager?" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Employee ID", Int64.Type}, {"Manager ID", Int64.Type}}),
        #"Added Is Manager" = 
            Table.AddColumn(
                #"Changed Type", "Is Manager", 
                each if List.Contains(#"Changed Type"[Manager ID], [Employee ID]) then "Yes" else "No")
    in
        #"Added Is Manager"

     


    It is a straight forward if/then/else construct with one function. The Key is this function: List.Contains(#"Changed Type"[Manager ID], [Employee ID])

    It turns the Manager ID into a list, then scans that list to see if the Employee ID is contained in it, returning True or False.

     

    How to use M code provided in a blank query:
    1) In Power Query, select New Source, then Blank Query
    2) On the Home ribbon, select "Advanced Editor" button
    3) Remove everything you see, then paste the M code I've given you in that box.
    4) Press Done
    5) See this article if you need help using this M code in your model.

  • Jakinta's avatar
    Jakinta
    Solution Sage

    = Table.AddColumn(  PriorStepName , "Is Manager?", each if List.ContainsAny ( List.Distinct( PriorStepName [#"Manager ID"]),  {[Employee ID]} ) then "Yes" else "No") 

  • subirch's avatar
    subirch
    Frequent Visitor

    Hi Jakinta,

     

    Below error is appearing, where "Changed Type" is prior step.

    Expression.Error: We cannot convert the value "Changed Type" to type Table.
    Details:
    Value=Changed Type
    Type=[Type]

     

    Thank you