Forum Discussion
Conditional column based on value from another table with matching values
- 6 years ago
Hi PowerBeeEye ,
You can create a calculated column using the below dax formula:
Critical_Patch_Installed = IF ( 'Servers'[Server_OS] IN DISTINCT ( 'Critical_Patch'[OS] ), IF ( 'Servers'[Server_Latest_Patch] IN DISTINCT ( 'Critical_Patch'[KD_ID] ), "Yes", "No" ), "No" )Best Regards,
Yingjie LiIf this post helps then please consider Accept it as the solution to help the other members find it more quickly.
thank you, amitchandak , but I don't see where the matching of the Critical_Patch[OS] and Servers[Server_OS] columns are being done.
To state again, this is what I am trying to do:
- Create a conditional column named Critical_Patch_Installed in the Servers table
- For each row in the Servers table:
- If a match exists between Servers[Server_OS] and Critical_Patch[OS]
- If Servers[Server_Latest_Patch] equals Critical_Patch[KB_ID]
- Set Servers[Critical_Patch_Installed] to "Yes"
- Else set Servers[Critical_Patch_Installed] to "No"
- If Servers[Server_Latest_Patch] equals Critical_Patch[KB_ID]
- If a match exists between Servers[Server_OS] and Critical_Patch[OS]
Thanks!
Hi PowerBeeEye,
You can do this in Power Query by Merging your Server table and your critcal patch tables on the join keys between the two tables and a custom column M Code Below
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WCk4tKkstijdU0lE6tEABjIDM8My8lPzyYgWIrIKRgaEZqgJvJ0MjY6VYHbgBRoQMsEQ3wNzCEtkAY5JdYGJqphQbCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Server_Name = _t, #"(blank)" = _t, Server_OS = _t, #"(blank).1" = _t, Server_Latest_Patch = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"Server_Name", type text}, {"(blank)", type text}, {"Server_OS", type text}, {"(blank).1", type text}, {"Server_Latest_Patch", type text}}),
#"Removed Columns" = Table.RemoveColumns(#"Changed Type",{"(blank).1", "(blank)"}),
#"Merged Queries" = Table.NestedJoin(#"Removed Columns", {"Server_OS", "Server_Latest_Patch"}, Critical_Patch, {"OS", "KB_ID"}, "Critical_Patch", JoinKind.LeftOuter),
#"Expanded Critical_Patch" = Table.ExpandTableColumn(#"Merged Queries", "Critical_Patch", {"KB_ID"}, {"KB_ID"}),
#"Added Custom" = Table.AddColumn(#"Expanded Critical_Patch", "Critical Patch Installed", each if [KB_ID] <> null then "Yes" else "No")
in
#"Added Custom"
you can also create a custom column in your Servers Table using DAX
Patched =
var patched = LOOKUPVALUE(Critical_Patch[KB_ID], Critical_Patch[KB_ID], 'Servers'[Server_Latest_Patch], Critical_Patch[OS], [Server_OS])
return if(patched <> BLANK(), "Yes", "No")
Hope this helps,
Richard
Did I answer your question? Mark my post as a solution!
Did my answers help arrive at a solution? Give it a kudos by clicking the Thumbs Up!