首页
学习
活动
专区
圈层
工具
发布

Power Query 系列 (07) - 添加列

前面几篇博客介绍了 Power Query (简称 PQ) 的数据源和 M 语言的基础知识,现在开始进入数据处理部分。本篇接着介绍 如何在 PQ 中添加列。...添加列是很重要的一个操作,在 PQ 的查询编辑器界面,有一个专门【添加列】功能区。在讲解添加列的过程中,我们会逐步介绍一些相关知识点和 PQ 的操作细节。...,之前我在博客中介绍过 pandas 中如何实现行转列的方法,大家可以参考: pandas 行转列一种典型输出报表的解决方法 在 PQ 中实现行转列思路类似,操作也比较简单。...切换到【添加列】功能区,点击【条件列】,先增加一列,列名为 "Chinese",这一列存储学生的语文成绩。注意下面界面中,输出的地方要选择 Score 这一列,而不是输入一个值。...= Table.AddColumn(分组的行, "Total", each [Chinese]+[Math]+[English]) in 已添加自定义 本篇通过一个简单的示例,演示了如何添加索引列

3.4K51

如何在Power Query中批量添加自定义列

一般情况下,我们如果需要添加列,可以一列一列根据需要进行添加,那如果我们需要根据固定的需求进行批量添加,那如何操作呢? 原始表 ? 结果表 ?...我们在添加的列的时候,有2个主要参数,一个是标题,一个则是添加列里的内容,如果我们需要进行批量添加的话,这2个参数最好是作为变量进行循环填充。我们来看下如何操作吧。...4. each代表的是作为Table.AddColumn函数中所对应的。 这样我们就很很容易的可以进行批量进行所需要添加的列。 需要注意的几个地方: 1....因为在循环添加列时表是重复调用的,所以如果把表设置成函数的参数,方便后期循环调取使用。 我们以最简单的 [价格]*1.1这个公式为例。...如果需要在添加列中使用这个公式,那我们可以设定自定义函数 (x)=>x[价格]*1.1,这样之后我们可以直接以表为参数进行替代。 此时我们的参数组里的内容则是函数类型。 ?

9.9K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Power Query中批量处理列的函数详解

    ; 第2参数是需要改变的列及操作(正常情况是由列名和操作函数组成,也可以是空列表); 第3参是去除第2参数中指定后剩余的列所需要进行处理的函数; 第4参数是找不到第2参数指定的列标题时是忽略处理(1)还是返回错误处理...例3 第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。 在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。...如果第2参数的中的学科写错或者定义了其他未在操作表中的列名,则可以通过第4参数来控制返回。...因为指定的列里有 “班级”,但是在原来的表格中不存在,所以会产生错误,但是第4参数有指定1,也就是忽略错误,最终返回的结果如图所示。除了找到的成绩列表外,其余的列数据都在后面添加了个“A”。 ?...例5 如果是想让所有的列都进行同样的操作,也就是不指定列,使得把所有列都是作为其他列来处理,使用的是第3参数来进行操作的话,此时第2参数可以直接使用空列来表示,也就是不指定列。

    3.2K21

    为什么Power Query中的筛选内容显示不全?

    小勤:为什么在PQ里筛选的老显示这个? 大海:当数据比较多的时候,就经常会这样显示。 小勤:有什么规律吗?...大海:据了解,PQ首先是检测表中的前1000行数据的不重复值来提供筛选选项的,当数据超过1000行时,就可能会显示“列表可能不完整”的提示。...大海:PQ的筛选器中只能容纳1000个供筛选的选项,当PQ检测数据的前1000行,发现全部都是不同的值时,就直接显示1000行,然后告诉你达到了上限。 小勤:那这种情况下怎么筛选啊?...这是PQ的限制,在微软的官方网站上有明确的说明(更多内容可参考以下链接:https://support.office.com/en-us/article/Power-Query-specifications-and-limits...大海:对的。

    5.4K20

    Power Query中如何把多列数据合并?升级篇

    之前我们了解到了如何把2列数据进行合并的基本操作,Power Query中如何把多列数据合并?也就是把多个字段进行组合并转成表。那如果这类的数据很多,如何批量转换呢?...我们了解到在代码中的字段数据列表实际上是个已经经过Table.ToColumns处理过的一个列表嵌套列表格式。所以我们在优化代码的时候可以把这一步处理的过程直接作为自定义函数的部分流程。...生成固定列变量 添加固定列终点变量,可以用于固定列的选择。...确定需循环的列数 还有一个需要作为变量的,也就是确定是多少列进行转换合并。我们上面的例子中是以每3列进行合并,但是我们要做为一个能灵活使用的函数,更多的变量能让我们更方便的使用,适合更多的场景。...添加函数使用备注 let 多列组合=(需要操作的表 as table, x as number, y as number, optional 固定列终点 as number) as table=> Table.Combine

    8.4K40

    优化Power BI中的Power 优化Power BI中的Power Query合并查询效率,Part 1:通过删除列来实现

    本篇文章主体部分为翻译Chris Webb的一篇文章。 合并查询在Power Query中是很成熟的应用,相当于SQL中的各种JOIN(抽时间会写几篇SQL的join,算是SQL的小核心)。...但同时,在Power Query中合并查询是一个常见的影响刷新效率的因素。在我的工作中,经常会遇到对一些非文件夹性质的数据源进行合并查询操作,所以我一直在想,有没有办法可以对其进行优化。...: 表中列的数量是否影响合并查询时的效率?...为了这样测试,我在两个查询中又添加了一个步骤,删除B-G列,只剩下A列: let Source = Csv.Document( File.Contents("C:\NumbersMoreColumns.csv...为什么表的列数会影响合并查询的性能的?因为合并查询是发生在内存当中,所以合并查询的表越大,内存需求就越大,也就需要更多的分页,因为超过了分页文件256MB的限制。

    5.9K10

    Power Query中@的用法—递归

    (一) 含义 在Power Query中@是表示范围运算符,通常在使用递归时运用其自身。 (二) 一般使用 把函数自身参数运用于其他函数。...例1: (x) =>@Number.From(x)+10 解释:定义一个调用自身参数并转换成数字格式并+10的函数。这种写法实际上和不指定是一样的,因为参数本身未进行变化参与到后期的运算。...例2: (x)=>@Text.From(x)&"有限公司" 解释:调用自身参数后进行后缀添加上有限公司。...次数 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是作为循环运行的计算公式。

    1.7K20

    Power Query如何处理日月年的时间列?

    我们导入的时候有一个日期列,格式如下 ? 对我们来说可以理解为,日/月/年,但是我们看下导入到Power Query中会如何显示? ?...我们看到,在导入的时候系统自动做了更改类型的处理,但是处理的格式是文本,而不是日期,那这个类型的更改肯定不是我们所希望的。...右击需要更改的列 ? 2. 点击使用区域设置并使用英语(英国) ? 这样我们就更改完成了。 3. 返回效果 ? (二) 公式法 1. 函数Table.TransformColumnTypes说明 ?...我们看下此函数有3个参数 参数位置 类型 含义 第1参数 table 需要操作的表 第2参数 list 批量转换指定列及类型 可选第3参数 text 区域格式 看下之前的类型转换的函数书写 ?...只使用了第2参数,第3参数未使用,所以我们需要加上第3参数区域的设置。 2. 添加第3参数 ? 这样就能得到我们原先想要的结果了。

    3.4K10

    Power Query中Buffer的用法

    (一) 概念介绍 缓冲区(Buffer)就是在内存中预留指定大小的存储空间用来对I/O(输入/输出)的数据做临时存储,这部分预留的内存空间叫缓冲区。 使用缓冲区有两个好处: 减少实际物理读写次数。...缓冲区在创建时就被分配内存,这块内存区域一直被重用,可以减少动态分配和回收内存的次数,一般在实际过程中,我们一般是先将文件读入内存,再从内存写入到别的地方,这样在输入输出过程中我们都可以用缓存来提升IO...缓冲区的作用也是用来临时存储数据,可以理解为是I/O操作中数据的中转站。...缓冲区直接为通道(channel)服务,写入数据到通道或从通道读取数据,这样利用缓冲区数据来传递就可以达到对数据高效处理的目的。 (二) 函数数量 ? (三) 使用场景 ?

    1.7K10

    Power Query中数据的定位

    数据定位 (一) 列(字段)定位 1. 定位本查询: 步骤名[字段名]=源[成绩] 2. 定位其他查询: 查询名[字段名]=成绩表[成绩] (二) 行(记录)定位 1....指定字段当前行直接使用[字段名],例如在添加列里面直接使用[字段名]代表的就是当前指定的字段名的当前行的值。 2....(五) 列表内定位 List.PositionOf 返回字符所处的列表中项的位置 List.PositionOfAny 返回任意批量字符所处列表项的位置 List.PositionOf(list as...因为我们要从列表中挑选数据,格式是{列表}{项目的位置},所以2个都是列表格式,我们在之前计算出结果的基础上套上一层{}代表列表。{3-1}这个就是我们要找的项目的位置。...通过索引来辅助偏移 源{List.PositionOf(已添加索引[索引],0)+1} 性质实际上和列表定位一样,只不过通过索引进行辅助而已。

    2.6K20

    Power Query如何处理多列拆分后的组合?

    对于列的拆分一般使用的比较多,也相对容易,通过菜单栏上的拆分列就能搞定,那如果是多列拆分又希望能一一对应的话需要如何操作呢?...比较明显的是分级列,分隔符为全角字符下的逗号,而说明列则是换行符进行分列。2列分别是2种不同的分隔符进行的分割。如果直接在导入数据后对列进行分割会有什么样的效果呢?...如图3所示,把对应的列都根据分隔符来进行分割。 ?...但是这种分列效果肯定不是我们所希望,因为我们要的是组合对应的数据,所以得想办法先要进行组合,这里可以使用List.Zip进行组合,分列后的数据是列表格式,所以可以对2列数据分别进行分割后在进行组合,可以在添加列中使用如下代码...但是如何现在直接进行展开的话,也会有问题,我们需要的是2列平行的数据,而展开的时候是展开到列,变成2列的数据了,如图5所示,这又不是我们所希望的结果。 ?

    3.3K20

    如何理解Power Query中的“#”转义字符?

    我们在Power Query中有时候也会看到在公式中会有"#"字符存在,这个#字是什么意思呢? 我们今天来初步了解下这个#的功能。 在说这个之前,我们先来了解下什么是Unicode字符。...Unicode字符是计算机科学领域里的一项业界标准,包括字符集、编码方案等。我们平时所听说的ASCII就是其中的一部分,只是前128个字符,包括英文字符,数字及一些常用符号(不包括汉字)。...字符区间 16进制编码区间 0..9 0031-0039 A..Z 0041-005A a..z 0061-007A 一..龥 4E00-9FA5 在Power Query中,使用List生成列表,必须是升序的...(是根据Unicode编码进行的升序) 另外其中主要的3个符号类的,有自己的简称,我们记住简称即可。...了解了Unicode编码,那我们看下,在Power Query中如何使用转义字符"#"进行转换。 例1:通过"#"直接进行16进制Unicode编码转义。

    4.2K10

    Power Query中避免出错的几种情况

    在Power Query中对于数据的类型要求比较严格,如果在中间步骤不是计算必要的数据类型,可以暂时不更改,而等到最后的时候在进行数据类型的更改,这样也能够更方便的发现问题的所在。 ?...例如:表格中的标题列名称可能会进行变化,但是位置不会变,那此时就可以使用变量参数来进行,而不是直接使用列名称来进行操作,如图3所示,此时不管第2列的标题改为什么,只要第2列是代表数字的,这样使用动态参数都不会产生错误...在此函数中,使用的列排序都是常量,而不是变量,如果只想让成绩这个字段根据所需要的位置进行插入,用变量的方式最好,只需要在列的名称上进行改变。...(九) 合并查询中的展开表 合并查询在Power Query中使用的比例还是相对挺高的,在使用后都会把匹配的数据给展开,这里就会涉及到一个注意事项,如图18所示,合并查询展开时的公式, ?...字母的大小写 在Power BI的模型关系中,不会区分大小写,如果只是大小写的区分,则会直接判断为多个关系,所以在Power Query中进行清洗的时候就要特别留意,以避免因为大小写产生的错误导致数据表之间的关系错误

    6.2K41

    你知道Power Query中的sections命令吗?

    对于命令,有一个命令大部分学习Power Query的人都会了解,就是“#shared”,这个是为了显示所有的函数以及查询的命令。...那如果想单单显示PowerQuery中的自定义查询,该使用什么样的命令呢?Power Query中是否带有这样的命令呢? 有的,这个命令就是“#sections”,这个是什么命令呢?...返回一个记录格式,并且列出所有自定义的查询名称及内容的记录。 这个有什么用呢?有没有发现在很多函数中的参数需要选择,如图 ?...如果要用现有的查询作为参数,参数只需要设置as table这类的就可以,但是如果参数是一个text,则就不会显示查询中格式为text的查询了。此时用这个的话就非常方便了。...还可以用在自定义函数的函数参数上。 ? 这个自定义函数就是第一个列表中的数据作为变量x的下拉式列表框的参数。 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

    1.2K00

    Power Query中的文本函数Text.StartMiddleRangeEndAtLength

    >) old_text 包含要替换的字符的文本字符串,或对包含文本的列的引用。...警告 :如果参数 num_chars 为空白,或引用计算结果为空白的列,则 new_text 的字符串插入到 start_num 位置,而不替换任何字符 。 这与在 Excel 中的行为相同。...但是这样做,还是有些问题: 第一、姓名这一列仍然存在,我如果要展示原始数据,截图会将姓名给暴露出来,而且这一列还不能删掉,因为删掉后带星号的姓名列也就没了; 第二、造成了重复列,我有简洁癖。...text 中的相同位置插入文本值 newText 的结果。...结论 在Power Query中,因为可以使用if函数,很多判断性的问题就可以直接进行了,而不需要像DAX中那样,通过LEFT和RIGHT函数来变相地实现。

    3K10

    优化Power BI中的Power Query合并查询效率:每个Query最高256MB内存限制的说明

    关于优化Power BI中的Power Query合并查询效率,之前写过三篇文章: 优化Power BI中的Power Query合并查询效率,Part 1:通过删除列来实现 优化Power BI中的...Power Query合并查询效率,Part 2:合并查询前or后删除多余的列有区别吗?...优化Power BI中的Power Query合并查询效率,Part 3:Table.Join和SortMerge 针对文中说到的256MB内存限制的问题,有朋友提出了质疑: ?.../ 在这篇文章中,作者提到2020年4月PowerBI的更新中Query Diagnostics功能被加强: https://docs.microsoft.com/en-us/power-query/querydiagnostics...我们可以看到,单一查询的物理内存使用永远不会超过256MB,那么查询一旦大于256MB怎么办呢?只能调用虚拟内存分页机制了,这个过程造成了运行效率降低。 为什么限制了物理内存的使用未256MB呢?

    5.8K20

    Power Query中错误值提醒的3种方式

    在Power Query中当出现错误时,会出现的错误提示的原因,如图。 ?...那有没有可能自定义这些提醒的内容呢?可以的,在Power Query中可以使用error语句,自定义错误时返回的提示内容,那具体怎么操作呢? 有3方式可以实现。 1....这里需要注意的是,记录中的3个字段名是固定的,对应error错误中的提示内容位置,其中Reason为必要内容。前面2个参数只能是文本格式,而最后一个Detail字段可以为文本格式,也可以为记录格式。...] then error Error.Record("运算错误", "格式错误", [方法1="去掉数字中的引号...这里的Error.Record函数里的3个参数分别代表了记录中的3个字段 如果觉得有帮助,那麻烦您进行转发,让更多的人能够提高自身的工作效率。

    3.6K40
    领券