zl程序教程

您现在的位置是:首页 >  其它

当前栏目

PowerQuery比较两表的差异

比较 差异 两表 PowerQuery
2023-06-13 09:14:17 时间

【问题】有两个表,我要比较出重复的数据、表1未出现在表2中的数据、表2未出现在表1中的数据,怎么样。

【代码】如下

------------处理表1---------
let
    源 = Excel.CurrentWorkbook(){[Name="表2"]}[Content],
    更改的类型 = Table.TransformColumnTypes(源,{{"单位", type text}, {"班别", type text}, {"姓名", type text}}),
    已添加自定义 = Table.AddColumn(更改的类型, "合并", each Text.Combine(Record.ToList(_),"@"))
in
    已添加自定义
-------处理表2--------
let
    源 = Excel.CurrentWorkbook(){[Name="表3"]}[Content],
    更改的类型 = Table.TransformColumnTypes(源,{{"单位", type text}, {"班别", type text}, {"姓名", type text}}),
    已添加自定义 = Table.AddColumn(更改的类型, "合并", each Text.Combine(Record.ToList(_),"@"))
in
    已添加自定义
-------重复的数据--------
let
    源 = List.Intersect({表1[合并],表2[合并]}),
    转换为表 = Table.FromList(源, Splitter.SplitTextByDelimiter("@"), null, null, ExtraValues.Error),
    更改的类型 = Table.TransformColumnTypes(转换为表,{{"Column1", type text}, {"Column2", Int64.Type}, {"Column3", type text}}),
    重命名的列 = Table.RenameColumns(更改的类型,{{"Column1", "单位"}, {"Column2", "班别"}, {"Column3", "姓名"}})
in
    重命名的列
-------表1未出现在表2中的数据--------
let
    源 = List.Difference(表1[合并],表2[合并]),
    转换为表 = Table.FromList(源, Splitter.SplitTextByDelimiter("@"), null, null, ExtraValues.Error),
    更改的类型 = Table.TransformColumnTypes(转换为表,{{"Column1", type text}, {"Column2", Int64.Type}, {"Column3", type text}}),
    重命名的列 = Table.RenameColumns(更改的类型,{{"Column1", "单位"}, {"Column2", "班别"}, {"Column3", "姓名"}})
in
    重命名的列
------表2未出现在表1中的数据---------
let
    源 = List.Difference(表2[合并],表1[合并]),
    转换为表 = Table.FromList(源, Splitter.SplitTextByDelimiter("@"), null, null, ExtraValues.Error),
    更改的类型 = Table.TransformColumnTypes(转换为表,{{"Column1", type text}, {"Column2", Int64.Type}, {"Column3", type text}}),
    重命名的列 = Table.RenameColumns(更改的类型,{{"Column1", "单位"}, {"Column2", "班别"}, {"Column3", "姓名"}})
in
    重命名的列

【结果】