• BI神器Power Query(26)-- 使用PQ实现表格多列转换(2/3)


    实例需求:原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中,att1、att3、att5为一组,att2、att3、att6为另一组,数据如下所示。

    更新表格数据

    原始数据表

    Col1Col2Att1Att2Att3Att4Att5Att6
    AAADDDXOalphadelta100400
    BBBEEEYPbetavega200500

    结果数据表:

    Col1Col2cn1cn3cn3
    AAADDDXalpha100
    AAADDDOdelta400
    BBBEEEYbeta200
    BBBEEEPvega500

    示例代码

    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        Part1 = Table.CombineColumnsToRecord(Source, "Part1Rec", {"Att1", "Att3", "Att5"}, [DisplayNameColumn="Att1", TypeName="CmbCol"]),
        Part2 = Table.CombineColumnsToRecord(Part1, "Part2Rec", {"Att2", "Att4", "Att6"}, [DisplayNameColumn="Att2", TypeName="CmbCol"]),
        AddTable = Table.AddColumn(Part2, "NewTab", each Table.FromRows({
                Record.FieldValues([Part1Rec]), 
                Record.FieldValues([Part2Rec])
        })),
        RemovedRec = Table.RemoveColumns(AddTable,{"Part1Rec", "Part2Rec"}),
        Output = Table.ExpandTableColumn(RemovedRec, "NewTab", {"Column1", "Column2", "Column3"}, {"cn1", "cn2", "cn3"})
    in
        Output
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    代码解析:
    第2行代码加载源表格,表格名称为Table1。
    第3行代码使用Power Query函数Table.CombineColumnsToRecord将"Att1"、“Att3"和"Att5"合并为一个记录,并设置显示名称为"Att1”。
    第4行代码与第3行代码类似,合并"Att2"、“Att4"和"Att6”。

    在这里插入图片描述

    第5~8行代码使用Table.AddColumn函数创建一个新列"NewTab",其中包含两个记录(Part1Rec和Part2Rec)的表格。

    在这里插入图片描述

    第9行代码使用Table.RemoveColumns函数移除不再需要的Part1Rec和Part2Rec列。
    第10行代码使用Table.ExpandTableColumn函数展开"NewTab"列,以获取分列展示的属性值,并设置列名为"cn1"、“cn2"和"cn3”。

    转换结果如下图所示。

    在这里插入图片描述


    总结:
    使用Power Query函数和操作步骤来实现了将原始表格列数据按照指定规则转换成分列展示的目标格式,使用Table.CombineColumnsToRecord可将多列数据合并到一个记录中。

  • 相关阅读:
    135. 分发糖果
    Python经典练习题,闯关练习题
    #Day Day Plan# 《NCB_PCI_Express_Base 5.0.1.0》pdf 译文笔记
    《回炉重造》——泛型
    智能车串级pid的使用
    Java深拷贝与浅拷贝技术解析及实例演示
    Clickhouse MaterializeMySQL引擎详解
    Emacs之高亮显示超过80个字符部分(一百三十)
    算法课程入门
    k8s-helm部署应用 19
  • 原文地址:https://blog.csdn.net/taller_2000/article/details/133476968