PowerQuery分组返回所有行之后还原列顺序

前面有提到过,当用PowerQuery分组功能挑选出重复值之后,展开的表格列顺序发生了变化,那么要如何保证展开的列和原始数据的列顺序是一样的呢。这个帖子将对此进行演示。

我们借用传说中的NorthWind数据库来演示(以后都如此,免得我还要去造数据)。

以下是代码,我将操作说明放在注释中(用“//”标记)。


let

//获取表格

源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],

//这一步是PowerQuery自动转换数据格式的操作,非人为添加

更改的类型 = Table.TransformColumnTypes(源,{{"ProductID", Int64.Type}, {"ProductName", type text}, {"SupplierID", Int64.Type}, {"CategoryID", Int64.Type}, {"QuantityPerUnit", type text}, {"UnitPrice", type number}, {"UnitsInStock", Int64.Type}, {"UnitsOnOrder", Int64.Type}, {"ReorderLevel", Int64.Type}, {"Discontinued", type logical}}),

//关键步骤:通过分组来获取重复值——凡是计数结果大于1的都是重复值

标记重复值 = Table.Group(更改的类型, {"SupplierID"}, {{"计数", each Table.RowCount(_), type number}, {"列", each _, type table}}),

//通过筛选功能,只保留重复值

筛选重复值 = Table.SelectRows(标记重复值, each ([计数] <> 1)),

//因为我们要按照原始表格的列顺序来展开分组操作生成的表格,因此把分组操作生成的“SupplierID”列删除

删除的列 = Table.RemoveColumns(筛选重复值,{"SupplierID"}),

//关键步骤:通过Table.ColumnNames()来获取原始表格的列名称,这将产生一个list,并且严格按照原始顺序排列所有列,其结果作为展开表格的输入

还原列顺序= Table.ExpandTableColumn(删除的列, "列", Table.ColumnNames(源), Table.ColumnNames(源))

in

还原列顺序

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spark SQL, DataFrames and Datasets Guide Overview SQL Dat...
    草里有只羊阅读 18,466评论 0 85
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,092评论 19 139
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 33,237评论 18 399
  • 商业的本质是人性
    张健和悟空阅读 968评论 0 2
  • 让阳光照进心房 人生那么长,会遇到各种困惑迷茫,不知所措失望等等……父母关系,婚姻关系,亲子关系,同事关系,朋友关...
    K喵喵喵阅读 1,000评论 0 0

友情链接更多精彩内容