Record.ToTable 求多列之间的差异

boyanx5天前技术教程3

本期案例是对相同性质的列(字段名中字母一样的为同性质列)进行比较,如果行内对应的两列数据不一样,则在差异列中显示对应的列名名称,否则不显示。

前后转换效果如下:

解题套路

1.Record.ToTable

解题思路:将记录转换为表并排序,这样相同性质的行会显示在一起。

使用Table.Split进行拆分,将相同性质的行拆分为一个表。

对子表进行遍历转换,当满足Value列的值去重后的个数为1的时候,则代表无差异,赋值null;否则,将Name的值进行合并。

最后将结果进行合并操作。

Table.AddColumn(源,"diff",each Text.Combine(List.Transform(Table.Split(Table.Sort(Record.ToTable(_),"Name"),2),(x)=>if List.Count(List.Distinct(x[Value]))=1 then null else Text.Combine(x[Name],"-")),","))

这里的处理方式的好处是,相同性质的行数据通过排序、拆分可以简单的归集到一起,这样便于后续的一系列转换。

2.Record.ToList

解题思路:将行记录转换为列表,通过List.Zip与标题列表进行压缩组合,通过排序、列拆分,使相同性质的列表归集到一起。后续的转换同上述1中的转换相似。

对于去重后个数为1的赋值null,否则进行标题字段合并。

Table.AddColumn(源,"diff",each Text.Combine(List.Transform(List.Split(List.Sort(List.Zip({Table.ColumnNames(源),Record.ToList(_)}),each _{0}),2),(x)=>let lst=List.Distinct(x,each _{1}) in if List.Count(lst)=1 then null else Text.Combine(List.Transform(x,each _{0}),"-")),","))

以上是本期内容。

标签: table.sort

相关文章

很多人问的一个基础问题:Excel Power Query 如何回到前一步设置?

之前的案例给大家讲解了在数据透视表中如何轻松排序和隐藏 0 值,有的同学问了,同样的需求,如果在 Power Query 中怎么实现?那么今天就来看一下 PQ 如何多条件排序,以及回撤到上一个步骤。案...

PYTHON数据分析必备知识(2)(python数据分析范例)

1.二分钟快速给项目添加日志信息""" 给项目添加日志信息 """ # 导Python内置包 import logging import time...

魔兽世界:ICC冰龙隐藏机制大揭秘,老玩家笑了

ICC的冰龙一直是团队副本中的关键Boss之一。冰龙的严寒技能会强制将所有玩家牵引至其肚子下方,随后释放一个范围极大且伤害极高的AOE攻击,玩家必须迅速逃离该区域以避免致命伤害。近期,有玩家深入研究发...

表中数据的排序及数据的筛选(表中数据的排序及数据的筛选方法)

【分享成果,随喜正能量】若不以心生心,则心心入空,念念归静,从一佛国至一佛国。若以心生心,则心心不静,念念归动,从一地狱历一地狱。。《VBA高级应用30例》(10178985),是我推出的第十套教程,...

Oracle数据库中查询最前面的100条数据,三种方法对比

在Oracle数据库中查询最前面的100条数据,可通过多种方法实现,不同方法适用于不同场景和版本。以下是基于当前技术文档的三种核心方案及其适用性分析:一、使用 ROWNUM 伪列(通用方案,全版本适用...

PyTorch 源码解读之 torch.autograd:梯度计算详解

前言本篇笔记以介绍 pytorch 中的 autograd 模块功能为主,主要涉及 torch/autograd 下代码,不涉及底层的 C++ 实现。本文涉及的源码以 PyTorch 1.7 为准。t...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。