Join us for an expert-led overview of the tools and concepts you'll need to pass exam PL-300. The first session starts on June 11th. See you there!
Get registeredPower BI is turning 10! Let’s celebrate together with dataviz contests, interactive sessions, and giveaways. Register now.
Hi guys,
i want to merge two tables:
Table Partners:
Table ISO Certificates:
to get an Table like this one:
PartnerID | PartnerName | ISO 9001 | ISO 9001 Valid To | ISO 20000 | ISO 20000 Valid To | ....
38 Avaali no null no null
39 ELMON no null no null
...
44 Hewlett Pa yes 01.03.2025 no null
any ideas how I am able to do that?
I tried with Table.SelectRows and List.Select but this did not worked.
Grateful for any advise!
Solved! Go to Solution.
Hi @MHazib
You need to first transform Table ISO Certificates into below format.
M code:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlLSUfIM9lewNDAwBDINjfTN9I0MjIyB7JCgUFelWJ1oJRNUNUAFICVG2JQYmUPUGEOMMUFWYwpVY2gCUWOpb4xhjhnMHAMgALIt9A1NUd0TCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [PartnerID = _t, CertificateName = _t, ValidToDate = _t, Active = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"PartnerID", Int64.Type}, {"CertificateName", type text}, {"ValidToDate", type date}, {"Active", type logical}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Certificate ValidTo", each [CertificateName] & " Valid To"),
#"Pivoted Column" = Table.Pivot(#"Added Custom", List.Distinct(#"Added Custom"[#"Certificate ValidTo"]), "Certificate ValidTo", "ValidToDate"),
#"Pivoted Column1" = Table.Pivot(#"Pivoted Column", List.Distinct(#"Pivoted Column"[CertificateName]), "CertificateName", "Active"),
#"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column1",{"PartnerID", "ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}),
#"Grouped Rows" = Table.Group(#"Reordered Columns", {"PartnerID"}, {{"All Data", each _, type table [PartnerID=nullable number, ISO 9001=nullable logical, ISO 9001 Valid To=nullable date, ISO 27001=nullable logical, ISO 27001 Valid To=nullable date, ISO 14001=nullable logical, ISO 14001 Valid To=nullable date, ISO 20000=nullable logical, ISO 20000 Valid To=nullable date]}}),
#"Added Custom1" = Table.AddColumn(#"Grouped Rows", "FillDown FillUp All Data", each Table.Distinct(Table.FillUp(Table.FillDown([All Data], Table.ColumnNames([All Data])), Table.ColumnNames([All Data])))),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom1",{"FillDown FillUp All Data"}),
#"Expanded FillDown FillUp All Data" = Table.ExpandTableColumn(#"Removed Other Columns", "FillDown FillUp All Data", {"PartnerID", "ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}, {"PartnerID", "ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"})
in
#"Expanded FillDown FillUp All Data"
Then merge it to Table Partners.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUUoEAaVYnWglIyAvCQTAPGMgLxkEwDwTIC8VBMA8UyAvGwSUYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [PartnerID = _t, PartnerName = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"PartnerID", Int64.Type}, {"PartnerName", type text}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"PartnerID"}, #"ISO Certificates", {"PartnerID"}, "ISO Certificates", JoinKind.LeftOuter),
#"Expanded ISO Certificates" = Table.ExpandTableColumn(#"Merged Queries", "ISO Certificates", {"ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}, {"ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded ISO Certificates",{{"ISO 9001", type text}, {"ISO 27001", type text}, {"ISO 14001", type text}, {"ISO 20000", type text}}),
#"Replaced Value" = Table.ReplaceValue(#"Changed Type1",null,"no",Replacer.ReplaceValue,{"ISO 9001", "ISO 27001", "ISO 14001", "ISO 20000"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","true","yes",Replacer.ReplaceText,{"ISO 9001", "ISO 27001", "ISO 14001", "ISO 20000"})
in
#"Replaced Value1"
Sample file has been attached at bottom.
Best Regards,
Community Support Team _ Jing
If this post helps, please Accept it as Solution to help other members find it.
Hi @MHazib
You need to first transform Table ISO Certificates into below format.
M code:
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlLSUfIM9lewNDAwBDINjfTN9I0MjIyB7JCgUFelWJ1oJRNUNUAFICVG2JQYmUPUGEOMMUFWYwpVY2gCUWOpb4xhjhnMHAMgALIt9A1NUd0TCwA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [PartnerID = _t, CertificateName = _t, ValidToDate = _t, Active = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"PartnerID", Int64.Type}, {"CertificateName", type text}, {"ValidToDate", type date}, {"Active", type logical}}),
#"Added Custom" = Table.AddColumn(#"Changed Type", "Certificate ValidTo", each [CertificateName] & " Valid To"),
#"Pivoted Column" = Table.Pivot(#"Added Custom", List.Distinct(#"Added Custom"[#"Certificate ValidTo"]), "Certificate ValidTo", "ValidToDate"),
#"Pivoted Column1" = Table.Pivot(#"Pivoted Column", List.Distinct(#"Pivoted Column"[CertificateName]), "CertificateName", "Active"),
#"Reordered Columns" = Table.ReorderColumns(#"Pivoted Column1",{"PartnerID", "ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}),
#"Grouped Rows" = Table.Group(#"Reordered Columns", {"PartnerID"}, {{"All Data", each _, type table [PartnerID=nullable number, ISO 9001=nullable logical, ISO 9001 Valid To=nullable date, ISO 27001=nullable logical, ISO 27001 Valid To=nullable date, ISO 14001=nullable logical, ISO 14001 Valid To=nullable date, ISO 20000=nullable logical, ISO 20000 Valid To=nullable date]}}),
#"Added Custom1" = Table.AddColumn(#"Grouped Rows", "FillDown FillUp All Data", each Table.Distinct(Table.FillUp(Table.FillDown([All Data], Table.ColumnNames([All Data])), Table.ColumnNames([All Data])))),
#"Removed Other Columns" = Table.SelectColumns(#"Added Custom1",{"FillDown FillUp All Data"}),
#"Expanded FillDown FillUp All Data" = Table.ExpandTableColumn(#"Removed Other Columns", "FillDown FillUp All Data", {"PartnerID", "ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}, {"PartnerID", "ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"})
in
#"Expanded FillDown FillUp All Data"
Then merge it to Table Partners.
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUUoEAaVYnWglIyAvCQTAPGMgLxkEwDwTIC8VBMA8UyAvGwSUYmMB", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [PartnerID = _t, PartnerName = _t]),
#"Changed Type" = Table.TransformColumnTypes(Source,{{"PartnerID", Int64.Type}, {"PartnerName", type text}}),
#"Merged Queries" = Table.NestedJoin(#"Changed Type", {"PartnerID"}, #"ISO Certificates", {"PartnerID"}, "ISO Certificates", JoinKind.LeftOuter),
#"Expanded ISO Certificates" = Table.ExpandTableColumn(#"Merged Queries", "ISO Certificates", {"ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}, {"ISO 9001", "ISO 9001 Valid To", "ISO 27001", "ISO 27001 Valid To", "ISO 14001", "ISO 14001 Valid To", "ISO 20000", "ISO 20000 Valid To"}),
#"Changed Type1" = Table.TransformColumnTypes(#"Expanded ISO Certificates",{{"ISO 9001", type text}, {"ISO 27001", type text}, {"ISO 14001", type text}, {"ISO 20000", type text}}),
#"Replaced Value" = Table.ReplaceValue(#"Changed Type1",null,"no",Replacer.ReplaceValue,{"ISO 9001", "ISO 27001", "ISO 14001", "ISO 20000"}),
#"Replaced Value1" = Table.ReplaceValue(#"Replaced Value","true","yes",Replacer.ReplaceText,{"ISO 9001", "ISO 27001", "ISO 14001", "ISO 20000"})
in
#"Replaced Value1"
Sample file has been attached at bottom.
Best Regards,
Community Support Team _ Jing
If this post helps, please Accept it as Solution to help other members find it.
I'd guess you want to pivot the certificate name column in your second table before merging with the first one.
This is your chance to engage directly with the engineering team behind Fabric and Power BI. Share your experiences and shape the future.
Check out the June 2025 Power BI update to learn about new features.
User | Count |
---|---|
17 | |
9 | |
8 | |
7 | |
7 |