当前位置: 首页 > news >正文

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

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

更新表格数据

原始数据表:

Col1Col2Att1Att2Att3Att4Att5Att6
AAADDDXOalphadelta100400
BBBEEEYPbetavega200500

结果数据表:

Col1Col2cn1cn3cn3
AAADDDXalpha100
AAADDDOdelta400
BBBEEEYbeta200
BBBEEEPvega500

示例代码

letSource = 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"})
inOutput

代码解析:
第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可将多列数据合并到一个记录中。

http://www.lryc.cn/news/180194.html

相关文章:

  • 中间件中使用到的设计模式
  • 运用动态内存实现通讯录(增删查改+排序)
  • 基于Cplex的人员排班问题建模求解(JavaAPI)
  • 理解Go中的数据类型
  • 【人工智能导论】线性回归模型
  • 十大常见排序算法详解(附Java代码实现和代码解析)
  • 在Ubuntu上通过Portainer部署微服务项目
  • 软件测试基础学习
  • 移动手机截图,读取图片尺寸
  • 服务器应用程序不可用的原因是什么引起的
  • 使用SPY++查看窗口信息去排查客户端UI软件问题
  • Flink CDC MySQL同步MySQL错误记录
  • 深入了解 Linux 中的 AWK 命令:文本处理的瑞士军刀
  • 【RuoYi项目分析】网关的AuthFilter完成“认证”,注意是认证而不是权限
  • excel将文件夹下面的表格文件指定名称的sheet批量导出到指定文件中,并按照文件名保存在新文件的不同sheet中
  • IIS管理器无法打开。启动后,在任务栏中有,但是窗口不见了
  • 使用VBA实现快速模糊查询数据
  • spring boot flowable多人前加签
  • 结构体运算符重载
  • 幽默直观的文档作者注释
  • 前端开发网站推荐
  • 【C语言】通讯录管理系统(保姆级教程+内含源码)
  • python自动解析301、302重定向链接
  • 【未解决问题】opencv 交叉编译 ffmpeg选项始终为NO
  • Python实用技术二:数据分析和可视化(2)
  • 24Hibench
  • VC++父进程交互式操作子进程标准输入输出
  • 一步一招,教你如何制作出成功的优惠促销微传单
  • 27、Flink 的SQL之SELECT (Pattern Recognition 模式检测)介绍及详细示例(7)
  • Git使用【上】