本篇数据处理来自一个实际处理数据的简化。下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码。...Query (PQ) 中做相同的处理。...将 Excel 工作表的 BOM 数据通过 Ctrl + T 变成 Excel 的 Table,加载到 Power Query 查询编辑器(操作过程可以参考我之前的博客),此时界面如下。...,除第一级物料编码之外的所有数据,全部变成一列。...Grouped 这一列中的每个单元格,不是一个单值数据,而是 Table 类型的数据,所以将其称为结构化列。
前面几篇博客介绍了 Power Query (简称 PQ) 的数据源和 M 语言的基础知识,现在开始进入数据处理部分。本篇接着介绍 如何在 PQ 中添加列。...添加列是很重要的一个操作,在 PQ 的查询编辑器界面,有一个专门【添加列】功能区。在讲解添加列的过程中,我们会逐步介绍一些相关知识点和 PQ 的操作细节。...,之前我在博客中介绍过 pandas 中如何实现行转列的方法,大家可以参考: pandas 行转列一种典型输出报表的解决方法 在 PQ 中实现行转列思路类似,操作也比较简单。...切换到【添加列】功能区,点击【条件列】,先增加一列,列名为 "Chinese",这一列存储学生的语文成绩。注意下面界面中,输出的地方要选择 Score 这一列,而不是输入一个值。..., "Total", each [Chinese]+[Math]+[English]) in 已添加自定义 本篇通过一个简单的示例,演示了如何添加索引列、条件列和自定义列这几种不同的操作方法。
转换成 (一) 把单个字段组合成一个列 Table.ToColumns(源) (二) 把需要合并的样式单独组合 Table.FromColumns(List.Range(单字段组合,0,1)&...List.Range(单字段组合,1,3)) 解释:第一个List.Range目的是为了固定班级字段;第2个List.Range是为了提取第一组的数据。...同一样的操作,提取第二部分的数据。 (三) 组合表格 Text.Combine将之前组合的表格进行合并。 (四) 重命名字段名 ?
我们导入的时候有一个日期列,格式如下 ? 对我们来说可以理解为,日/月/年,但是我们看下导入到Power Query中会如何显示? ?...我们看到,在导入的时候系统自动做了更改类型的处理,但是处理的格式是文本,而不是日期,那这个类型的更改肯定不是我们所希望的。...肯定是能识别的,那我们看下该如何处理? 1. 右击需要更改的列 ? 2. 点击使用区域设置并使用英语(英国) ? 这样我们就更改完成了。 3. 返回效果 ? (二) 公式法 1....我们看下此函数有3个参数 参数位置 类型 含义 第1参数 table 需要操作的表 第2参数 list 批量转换指定列及类型 可选第3参数 text 区域格式 看下之前的类型转换的函数书写 ?...如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
Power Query 作为桌面端数据清理和转换的工具,能极大解放生产力,将繁琐的数据处理工作从重复的劳动中解放出来。那么,Power Query 能否对外提供计算服务呢?...方式一:将数据加载到 Power Pivot,通过 ADO 方式调用 Power Pivot 的编程接口 方式二:利用微软的 Power Query SDK,在 .NET 平台使用 M 语言,获取查询结果...PQ 实现的进出存查询为例,进一步讲解如何通过 VBA + ADO 调用 PQ 的查询结果。...Power Query SDK 微软提供了 Power Query SDK,从而赋予了在 .net 平台中可以直接使用 M 语言的功能。...Power Query SDK 下载 微软 DataConnector 开源项目 基于Power Query SDK的 PowerQueryNet 开源项目 Power Query SDK 是一扩展名为
; 第2参数是需要改变的列及操作(正常情况是由列名和操作函数组成,也可以是空列表); 第3参是去除第2参数中指定后剩余的列所需要进行处理的函数; 第4参数是找不到第2参数指定的列标题时是忽略处理(1)还是返回错误处理...例3 第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。 在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。...因为指定的列里有 “班级”,但是在原来的表格中不存在,所以会产生错误,但是第4参数有指定1,也就是忽略错误,最终返回的结果如图所示。除了找到的成绩列表外,其余的列数据都在后面添加了个“A”。 ?...例5 如果是想让所有的列都进行同样的操作,也就是不指定列,使得把所有列都是作为其他列来处理,使用的是第3参数来进行操作的话,此时第2参数可以直接使用空列来表示,也就是不指定列。...如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
对于列的拆分一般使用的比较多,也相对容易,通过菜单栏上的拆分列就能搞定,那如果是多列拆分又希望能一一对应的话需要如何操作呢?...如图1所示,这是一份中国香港和中国台湾的电影分级制度,需要把对应的分级制度和说明给对应,那如何进行处理呢?目标效果如图2所示。 ? ? 首先要判断的就是如何进行拆分,拆分依据是什么?...比较明显的是分级列,分隔符为全角字符下的逗号,而说明列则是换行符进行分列。2列分别是2种不同的分隔符进行的分割。如果直接在导入数据后对列进行分割会有什么样的效果呢?...如图3所示,把对应的列都根据分隔符来进行分割。 ?...但是如何现在直接进行展开的话,也会有问题,我们需要的是2列平行的数据,而展开的时候是展开到列,变成2列的数据了,如图5所示,这又不是我们所希望的结果。 ?
前面4行是固定数据列,后面的则为每2行为一组数据。 (二) 梳理操作原理 1. 固定数据: 可以通过批量添加列的方式进行最后的加上即可。 2....每2行组合一组数据 通过添加索引列的方式,并进行整除2,最后通过分组进行组合。 ? 这里直接把表中的索引列给去了,只保留单个数据组的数据。 3. 处理明细数据组中的内容 ?...通过逆透视全部列并转置就能达到多行多列数据全部转换成多列单行的数据。 ? 处理完的数据直接展开即可,因为标题列名称都一样,所以会自动进行组合合并。 4....批量更改数据内容列的标题 这里可以使用Table.FromColumns和Table.ToColumns函数的组合进行批量标题的更改。...批量添加固定数据列 ? 最后调整列的排序即可。 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
一般情况下,我们如果需要添加列,可以一列一列根据需要进行添加,那如果我们需要根据固定的需求进行批量添加,那如何操作呢? 原始表 ? 结果表 ?...我们在添加的列的时候,有2个主要参数,一个是标题,一个则是添加列里的内容,如果我们需要进行批量添加的话,这2个参数最好是作为变量进行循环填充。我们来看下如何操作吧。...列数:需要增加多少列,就根据相应的填写。 2. x代表的是表格,也就是增加列后的表格名称,初始值是原始表格。 3. y代表的是第几次的循环,0代表第一次,同时也是作为参数组里的列对应值的位置。...4. each代表的是作为Table.AddColumn函数中所对应的。 这样我们就很很容易的可以进行批量进行所需要添加的列。 需要注意的几个地方: 1....如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
之前我们了解到了如何把2列数据进行合并的基本操作,Power Query中如何把多列数据合并?也就是把多个字段进行组合并转成表。那如果这类的数据很多,如何批量转换呢?...生成固定列变量 添加固定列终点变量,可以用于固定列的选择。...确定终点的默认值 既然这个变量是作为可选变量,那我们要给予一个默认值,这样才不会让程序出现错误。 我们设置的默认值为第一列作为固定标题。...确定需循环的列数 还有一个需要作为变量的,也就是确定是多少列进行转换合并。我们上面的例子中是以每3列进行合并,但是我们要做为一个能灵活使用的函数,更多的变量能让我们更方便的使用,适合更多的场景。...批量多列合并(源,3,3,3) 解释:批量多列合并,这个是自定义查询的函数名称,源代表的是需处理的数据表,第2参数的3代表需要循环处理的次数,第3参数的3代表需要合并数据的列数,第4参数的3代表保留前3
确定需求: a) 通过列数参数来改变最终的列数 b) 更改列数标题不影响数据运行 c) 更改数据源标题不影响数据运行 2....确定变量 a) 列数 b) 列数标题名 c) 数据源标题名 单列数据转多列,主要涉及的就是分组后的索引添加,然后进行透视。 (二) 主要涉及知识点 1....添加索引并取模 Table.AddIndexColumn,Number.Mod(指定行或列数) 2....分组依据的同时表内添加索引 Table.Group,Table.AddIndexColumn 3. 展开数据后的透视 透视值关系到指定列还是指定行 4....字段名的动态引用 Table.ToRows(列数字段表){0}{0}
我们在Power Query中有时候也会看到在公式中会有"#"字符存在,这个#字是什么意思呢? 我们今天来初步了解下这个#的功能。 在说这个之前,我们先来了解下什么是Unicode字符。...字符区间 16进制编码区间 0..9 0031-0039 A..Z 0041-005A a..z 0061-007A 一..龥 4E00-9FA5 在Power Query中,使用List生成列表,必须是升序的...(是根据Unicode编码进行的升序) 另外其中主要的3个符号类的,有自己的简称,我们记住简称即可。...例如我们需要日语的片假名,韩语字符,特殊的符号等都可以进行查找,查找到后就可以把对应的16位进制的编号记下,以后就可以方便转义了。...了解了Unicode编码,那我们看下,在Power Query中如何使用转义字符"#"进行转换。 例1:通过"#"直接进行16进制Unicode编码转义。
两组数据任意的值都会和另外一组值进行相交组合。 (三) Power Pivot中的实现方法。 在Power Pivot中会有一个自带实现卡迪尔积方法的函数Generate ?...通过链接回表的方式就可以实现数据的加载。 (四) Power Query中实现的方式。...同样的在Power Query里面也有一个和Power Pivot中的Generate函数一样功能的函数List.Generate。 let源 = Table.FromColumns({{"a".."...所以在第2参数代表循环结束的时候使用的是相乘的数据作为循环次数条件; 第3参数是代表每次循环后,记录循环次数,之前的循环次数+1; 第4参数相当于A列根据B列的数量生成重复值进行排列。...如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。
(一) 含义 在Power Query中@是表示范围运算符,通常在使用递归时运用其自身。 (二) 一般使用 把函数自身参数运用于其他函数。...例1: (x) =>@Number.From(x)+10 解释:定义一个调用自身参数并转换成数字格式并+10的函数。这种写法实际上和不指定是一样的,因为参数本身未进行变化参与到后期的运算。...次数 X初始 x-1 X终值 1 5 4 9 2 4 3 12 3 3 2 14 4 2 1 15 例2:累计乘积 如果一个股票目前的市场价格是10元,如果连续5个涨停能达到多少价格呢?...对于多变量的,我们可以通过Record格式来进行记录。同时if的then是作为结束判断语句,else是作为循环运行的计算公式。
有朋友在问Power Query到底有哪些限制,特从微软官网搜罗到以下内容,也算作做个记录备查。 其中最常见的问题:PQ对列数有限制吗?...这个微软官网里的说法是16384列——但这个似乎是Excel表的限制。...于是我做了个简单的测试: Step01、在Excel里建了一个16500行的表; Step02、在PQ里进行转置。...——竟然发现没有报错,但转置的结果里只能显示到12000+多列。 那转置后是不是有些数据丢失呢? Step03、再转置回来。 ——数据全部都在!...从这个简单的测试来看,PQ里似乎并没有将单个表的列数限制在16384列——等有空再看看这是肿么肥四,或者有大神告诉我是为什么吗?
(一) 概念介绍 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对I/O(输入/输出)的数据做临时存储,这部分预留的内存空间叫缓冲区。 使用缓冲区有两个好处: 减少实际物理读写次数。...缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数,一般在实际过程中,我们一般是先将文件读入内存,再从内存写入到别的地方,这样在输入输出过程中我们都可以用缓存来提升IO...缓冲区的作用也是用来临时存储数据,可以理解为是I/O操作中数据的中转站。...缓冲区直接为通道(channel)服务,写入数据到通道或从通道读取数据,这样利用缓冲区数据来传递就可以达到对数据高效处理的目的。 (二) 函数数量 ? (三) 使用场景 ?
小勤:Power Query怎么也有“循环引用”? 大海:有互相引用的地方就可能有循环引用啊。你这里是不是在“公众号”的表里引用了“年龄”表里的数据,而“年龄”表里又引用了“公众表”的数据?...我想把公众号的内容再引用到年龄表里: 大海:这样当然会循环引用啊,因为你想啊,你引用整个公众号的表,而公众号里又引用了年龄表里的数据,你说我刷新数据的时候,刷新年龄表,会引起公众号里的数据刷新,而公众号表里的刷新又会引起年龄表里的刷新...小勤:的确会有点儿绕……那两个表间的数据就完全不能互相调用了吗? 大海:也不是说两个表之间的数据就完全不能互相调。只是,要明确调用的内容没有冲突。...比如我们明确在公众号里调用当前人员的年龄表里的年龄,那可以直接添加自定义列来完成: 同样的,在年龄表里引用公众号表里的公众号内容,那也可以在年龄表里添加自定义列来完成: 小勤:这样不也是互相引用吗...大海:但这样的引用是非常明确的,也就是说,我在公众号表里引用的年龄表里的年龄这一列是很明确的,不会随着我的数据刷新你又来引用我的内容……同样的,年龄表里引用公众号,也不会触发反向的调用。
昨天的文章《PQ-M及函数:如何按某列数据筛选出一个表里最大的行?》...发表后,有朋友留言,问在PQ里怎么实现Excel中的Countif效果: 实际上,也许这位朋友已经隐约感觉到,用文中提到的Table.SelectRows这个函数就能解决问题。...原理很简单,其实就是用Table.SelectRows对“源”表按条件(源表中“编号”列等于当前行“编号”)进行筛选,然后对筛选出来的结果用Table.RowCount函数进行计数即可。...同样的函数组合,通过增加函数的判断条件,可以实现多条件下的计数,比如,不光要求编号相同,还要求地区也是相同的,如下: 总之,通过Table.SelectRows可以实现各种复杂条件下的表格筛选功能...,然后,针对筛选的结果,即可再进一步按需要进行各种计算、转换等处理。
数据定位 (一) 列(字段)定位 1. 定位本查询: 步骤名[字段名]=源[成绩] 2. 定位其他查询: 查询名[字段名]=成绩表[成绩] (二) 行(记录)定位 1....指定字段当前行直接使用[字段名],例如在添加列里面直接使用[字段名]代表的就是当前指定的字段名的当前行的值。 2....;第2个参数是需要查找的文本值;第3个参数是出现的次数的位置(0代表第一次出现的位置,1代表最后一次出现的文职,2代表所有出现的位置)默认第一次出现的位置;第4参数是大小写比较(Comparer.Ordinal...返回的是一个列表,如果只找到1个,返回的也是单个项目的列表格式。 我们已经知道返回第一次,最后一次以及所有的,那如果是返回第2次出现的需要如何操作呢?...;第2参数是一个查找的列表;第3参数是出现的位置;返回的是any。
Power Query2018年就已经支持python了,你尝试过吗?今天说一下power query使用python的步骤和简单应用。...至此,便获取了表中的 ID 列。 ?...总结: 在power query 中 python 使用 dataset 变量来访问当前表的数据; dataset 是 pandas 中 的 DataFrame; 使用python语法对 dataset...的行和列进行操作,可以添加、删除、修改、过滤等 使用python导出表 使用POWER BI进行数据清洗和转换的过程中,经常会得到一张行数很多的表,而在POWER BI中导出表不太方便(少量数据可以直接复制粘贴...) df.to_excel("D:/源.xlsx", index=None) 至此,便成功将power query 中的文件导出至本地。
领取专属 10元无门槛券
手把手带您无忧上云