zoukankan      html  css  js  c++  java
  • 数据可视化之PowerQuery篇(六)PowerQuery技巧:批量合并Excel表的指定列

    本文来源于一个星友的问题,他有上百个Excel表格,格式并不完全一样,列的位置顺序也不同,但每个表都有几个共同列,这种情况下,能不能通过Power Query把这些表格共同的列批量合并呢?

    当然是可以的!

    我模拟了三个表,源数据的情况大致是这样的,

     

     

    这三个表之间的特征如下:

    有共同列

    列的位置顺序是不同的

    列的数量不同,表三比其他表少了一列

    假设我们需要提取其中四列并合并:订单日期、商品名称、客户编号和销售额,这四列在三个表都存在。

     

    如果使用PowerQuery简单的合并汇总功能,是无法满足要求的,不过通过简单的M代码就可以实现。

    下面是操作步骤。

     

    /01/

    将需要合并的表放入到一个文件夹中,然后使用获取数据>从文件夹,

     

     

    /02/

    点击编辑,进入PowerQuery编辑器,删除无关列,只保留Content列,

     

     

    /03/

    添加自定义列,

     

     

    结果如下,

     

    上面这三个步骤都是常规的合并操作,下面这一步是重点。

     

    /04/

    添加步骤,输入以下M代码,

    合并指定列=
    Table.Combine(
    List.Transform(
    Table.Combine(已添加自定义[数据])[Data],
    each Table.SelectColumns(_,
    {"订单日期","商品名称","客户编号","销售额"})))

     

    大功告成,只包含这四列的表格合并好了,

     

     

    主要是利用了 List.Transform和Table.SelectColumns函数组合来提取需要的列,然后再利用Table.Combine函数把提取后的列合并起来。

    以上代码自己琢磨一下,暂时不理解也没有关系,遇到同类问题直接套用即可。

    通过这个小例子,也可以看出M的灵活和强大,当遇到特定的问题,只靠鼠标点击界面功能无法满足需要的时候,也许简单两个M函数就解决了。

    并且,有的问题通过界面功能需要很多步骤才能实现,而利用M可以一步完成,大大简化操作步骤。

    如果你经常做数据清洗工作,并且源数据不够规范,这种情况下学点M是很有必要的。

  • 相关阅读:
    Flink入门(一)——Apache Flink介绍
    ES入门宝典(详细截图版)
    什么是全文检索
    Hbase入门(五)——客户端(Java,Shell,Thrift,Rest,MR,WebUI)
    Hbase入门(四)——表结构设计-RowKey
    Hbase入门(三)——数据模型
    Hbase入门(二)——安装与配置
    Hbase入门(一)——初识Hbase
    Flink1.9整合Kafka
    ShutdownHook
  • 原文地址:https://www.cnblogs.com/qiu-hua/p/12843074.html
Copyright © 2011-2022 走看看