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

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

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

更新表格数据

原始数据表:

Col1Col2Att1Att2Att3Att4Att5Att6
AAADDDXOalphadelta100400
BBBEEEYPbetavega200500

结果数据表:

Col1Col2cn1cn3cn3
AAADDDXalpha100
AAADDDOdelta400
BBBEEEYbeta200
BBBEEEPvega500

示例代码

letSource = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],add_index = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),tab1 = Table.RemoveColumns(add_index,{"Att2", "Att4", "Att6"}),rename_tab1 = Table.RenameColumns(tab1,{{"Att1", "cn1"}, {"Att3", "cn2"}, {"Att5", "cn3"}}),tab2 = Table.RemoveColumns(add_index,{"Att1", "Att3", "Att5"}),rename_tab2 = Table.RenameColumns(tab2,{{"Att2", "cn1"}, {"Att4", "cn2"}, {"Att6", "cn3"}}),combine_tab = Table.Combine({rename_tab1, rename_tab2}),sort_row = Table.Sort(combine_tab,{{"Index", Order.Ascending}}),output = Table.RemoveColumns(sort_row,{"Index"})
inoutput

代码解析:
第2行代码加载源表格,表格名称为Table1。
第3行代码添加索引列,用于确保输出结果表的数据顺序于原始表保持一致。
第4行代码移除多余列,保留部分属性列。
第5行代码重命名属性列名称。
第6~7行代码功能类似,用于提取第二组属性。
第8行代码合并两个子表。
第9行代码按索引列排序。
第1行代码移除索引列。
第12行代码输出最终结果表。

转换结果如下图所示。

在这里插入图片描述


部分代码也可以简化为如下,但是处理逻辑与上面代码相同,上述代码分步处理更容易理解。

letSource = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],add_index = Table.AddIndexColumn(Source, "Index", 1, 1, Int64.Type),combine_tab = Table.Combine({Table.RenameColumns(add_index[[Col1],[Col2],[Att1],[Att3],[Att5],[Index]],{{"Att1","cn1"},{"Att3","cn2"},{"Att5","cn3"}}),Table.RenameColumns(add_index[[Col1],[Col2],[Att2],[Att4],[Att6],[Index]],{{"Att2","cn1"},{"Att4","cn2"},{"Att6","cn3"}})}),sort_row = Table.Sort(combine_tab,{{"Index", Order.Ascending}}),output = Table.RemoveColumns(sort_row,{"Index"})
inoutput

总结:
Power Query提供了丰富的表处理功能,可以方便地实现表格列的转换需求。

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

相关文章:

  • windows系统一键开启和关闭虚拟化
  • NSSCTF做题(5)
  • java基础题——二维数组的基本应用
  • Leetcode 2119.反转两次的数字
  • BI神器Power Query(27)-- 使用PQ实现表格多列转换(3/3)
  • VUE3照本宣科——认识VUE3
  • 《计算机视觉中的多视图几何》笔记(12)
  • TFT LCD刷新原理及LCD时序参数总结(LCD时序,写的挺好)
  • 基于Java的电影院购票系统设计与实现(源码+lw+部署文档+讲解等)
  • Linux基础指令(六)
  • Anderson-Darling正态性检验【重要统计工具】
  • Ubuntu基于Docker快速配置GDAL的Python、C++环境
  • <C++> 哈希表模拟实现STL_unordered_set/map
  • 【数据结构与算法】通过双向链表和HashMap实现LRU缓存 详解
  • MySQL的内置函数
  • 数据结构与算法-(7)---栈的应用-(3)表达式转换
  • Lilliefors正态性检验(一种非参数统计方法)
  • 【云原生】配置Kubernetes CronJob自动备份MySQL数据库(单机版)
  • 基于PSO算法的功率角摆动曲线优化研究(Matlab代码实现)
  • 数论知识点总结(一)
  • 知识分享 钡铼网关功能介绍:使用SSLTLS 加密,保证MQTT通信安全
  • asp.net core mvc区域路由
  • KNN(下):数据分析 | 数据挖掘 | 十大算法之一
  • Servlet开发-session和cookie理解案例-登录页面
  • Polygon Miden:扩展以太坊功能集的ZK-optimized rollup
  • [题]宝物筛选 #单调队列优化
  • .NET的键盘Hook管理类,用于禁用键盘输入和切换
  • Anaconda Jupyter
  • Unity中Shader的前向渲染路径ForwardRenderingPath
  • 简历项目优化关键方法论-START