Forum Discussion

Anonymous's avatar
Anonymous
Not applicable
3 years ago
Solved

How to compare two columns and return data from a third column?

Hi Community,

 

Example data set in Power Query

HoursProject CatagoryProduction CatagoryInternal (formula)External (formula)
3Men'sMen's

3

null
5Women'sWomen's5null
6Kid'sKid's6null
2Men'sFamilynull2
4FamilyMen'snull4
1Women'sWomen's1null

 

What I need to do

To compare the values between the "Project Category" and the "Production Category".

If it's a match, get the value from the "Hours" column and put it in the "Internal" column. If not, put the hours into the "External" column.

 

The question

Is there a Power Query formula or function that can do this? Maybe I could work out the "Internal" column and apply the same method to the "External" column?

 

Many thanks!

  • Hi, Anonymous ;

    You could add conditional column as follow:

    Then add another conditional column.

    The final show:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlbSUfJNzYspNTAwMi9G5cTqRCuZAoXC83ORVaBwQWrMgILemSkIFUgckLwRuh1uibmZOZVgORMEF8NuQ0J2xwIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Hours = _t, #"Project Catagory" = _t, #"Production Catagory" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Hours", Int64.Type}, {"Project Catagory", type text}, {"Production Catagory", type text}}),
        #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Internal", each if [Project Catagory] = [Production Catagory] then [Hours] else null),
        #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "External", each if [Project Catagory] <> [Production Catagory] then [Hours] else null)
    in
        #"Added Conditional Column1"


    Best Regards,
    Community Support Team _ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.

2 Replies

  • HotChilli's avatar
    HotChilli
    Community Champion

    It's fairly straightforward.  Add a custom column using :

    if   then  else      

    You just use the names of the columns to compare the 2 columns required and put the desired result and an alternative

    --

    So you'll need to 2 custom columns

  • v-yalanwu-msft's avatar
    v-yalanwu-msft
    Community Support

    Hi, Anonymous ;

    You could add conditional column as follow:

    Then add another conditional column.

    The final show:

    let
        Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlbSUfJNzYspNTAwMi9G5cTqRCuZAoXC83ORVaBwQWrMgILemSkIFUgckLwRuh1uibmZOZVgORMEF8NuQ0J2xwIA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Hours = _t, #"Project Catagory" = _t, #"Production Catagory" = _t]),
        #"Changed Type" = Table.TransformColumnTypes(Source,{{"Hours", Int64.Type}, {"Project Catagory", type text}, {"Production Catagory", type text}}),
        #"Added Conditional Column" = Table.AddColumn(#"Changed Type", "Internal", each if [Project Catagory] = [Production Catagory] then [Hours] else null),
        #"Added Conditional Column1" = Table.AddColumn(#"Added Conditional Column", "External", each if [Project Catagory] <> [Production Catagory] then [Hours] else null)
    in
        #"Added Conditional Column1"


    Best Regards,
    Community Support Team _ Yalan Wu
    If this post helps, then please consider Accept it as the solution to help the other members find it more quickly.