前面几篇博客介绍了 Power Query (简称 PQ) 的数据源和 M 语言的基础知识,现在开始进入数据处理部分。本篇接着介绍 如何在 PQ 中添加列。...本示例基于一个考试分数的清单,做两个方面的统计:1)按单科分数计算级别( A/B/C/D); 2) 将语数外的成绩分别作为一列,并计算总分 [watermark,type_ZmFuZ3poZW5naGVpdGk...10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0b25lMDgyMw==,size_16,color_FFFFFF,t_70] 完成第一个条件后,点击“添加规则”,增加一行...,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3N0b25lMDgyMw==,size_16,color_FFFFFF,t_70] 因为最终的输出每个学生为一行...完成后,再来看看 M 脚本,应该基本上能看懂。
Value Range("D" & i).Value = BomMaterials(level - 1) End If Next End Sub 现在需要在 Power...Query (PQ) 中做相同的处理。...将 Excel 工作表的 BOM 数据通过 Ctrl + T 变成 Excel 的 Table,加载到 Power Query 查询编辑器(操作过程可以参考我之前的博客),此时界面如下。...或者在选中这一列后,右键菜单,也有【填充】菜单项。向下填充后,所有 null 值都被自动填充为上一行的值,直到遇到非空值。...结构化列不仅仅是 Table 类型,如果某一列是 Table、Record 或者 List,则都是结构化列。
例2 如果是需要进行多个列的操作,可以在第2参数中使用多次对应的写法,并在最外面用符号{}括起来。 如果除了成绩要减去10,还需要在学科后面加上字符“(上)”。...{ {"成绩", each _-10}, {"学科",each _&"(上)...例3 第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。 在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。...{ {"成绩", each _-10}, {"学科", each _&"(上)...例5 如果是想让所有的列都进行同样的操作,也就是不指定列,使得把所有列都是作为其他列来处理,使用的是第3参数来进行操作的话,此时第2参数可以直接使用空列来表示,也就是不指定列。
确定需求: a) 通过列数参数来改变最终的列数 b) 更改列数标题不影响数据运行 c) 更改数据源标题不影响数据运行 2....确定变量 a) 列数 b) 列数标题名 c) 数据源标题名 单列数据转多列,主要涉及的就是分组后的索引添加,然后进行透视。 (二) 主要涉及知识点 1....添加索引并取模 Table.AddIndexColumn,Number.Mod(指定行或列数) 2....展开数据后的透视 透视值关系到指定列还是指定行 4. 字段名的动态引用 Table.ToRows(列数字段表){0}{0}
转换成 (一) 把单个字段组合成一个列 Table.ToColumns(源) (二) 把需要合并的样式单独组合 Table.FromColumns(List.Range(单字段组合,0,1)&
我们导入的时候有一个日期列,格式如下 ? 对我们来说可以理解为,日/月/年,但是我们看下导入到Power Query中会如何显示? ?...右击需要更改的列 ? 2. 点击使用区域设置并使用英语(英国) ? 这样我们就更改完成了。 3. 返回效果 ? (二) 公式法 1. 函数Table.TransformColumnTypes说明 ?...我们看下此函数有3个参数 参数位置 类型 含义 第1参数 table 需要操作的表 第2参数 list 批量转换指定列及类型 可选第3参数 text 区域格式 看下之前的类型转换的函数书写 ?
对于列的拆分一般使用的比较多,也相对容易,通过菜单栏上的拆分列就能搞定,那如果是多列拆分又希望能一一对应的话需要如何操作呢?...比较明显的是分级列,分隔符为全角字符下的逗号,而说明列则是换行符进行分列。2列分别是2种不同的分隔符进行的分割。如果直接在导入数据后对列进行分割会有什么样的效果呢?...如图3所示,把对应的列都根据分隔符来进行分割。 ?...但是这种分列效果肯定不是我们所希望,因为我们要的是组合对应的数据,所以得想办法先要进行组合,这里可以使用List.Zip进行组合,分列后的数据是列表格式,所以可以对2列数据分别进行分割后在进行组合,可以在添加列中使用如下代码...但是如何现在直接进行展开的话,也会有问题,我们需要的是2列平行的数据,而展开的时候是展开到列,变成2列的数据了,如图5所示,这又不是我们所希望的结果。 ?
一般情况下,我们如果需要添加列,可以一列一列根据需要进行添加,那如果我们需要根据固定的需求进行批量添加,那如何操作呢? 原始表 ? 结果表 ?...我们在添加的列的时候,有2个主要参数,一个是标题,一个则是添加列里的内容,如果我们需要进行批量添加的话,这2个参数最好是作为变量进行循环填充。我们来看下如何操作吧。...列数:需要增加多少列,就根据相应的填写。 2. x代表的是表格,也就是增加列后的表格名称,初始值是原始表格。 3. y代表的是第几次的循环,0代表第一次,同时也是作为参数组里的列对应值的位置。...如果需要在添加列里使用公式,则函数参数设置成表类型。 因为在循环添加列时表是重复调用的,所以如果把表设置成函数的参数,方便后期循环调取使用。 我们以最简单的 [价格]*1.1这个公式为例。...如果需要在添加列中使用这个公式,那我们可以设定自定义函数 (x)=>x[价格]*1.1,这样之后我们可以直接以表为参数进行替代。 此时我们的参数组里的内容则是函数类型。 ?
之前我们了解到了如何把2列数据进行合并的基本操作,Power Query中如何把多列数据合并?也就是把多个字段进行组合并转成表。那如果这类的数据很多,如何批量转换呢?...我们了解到在代码中的字段数据列表实际上是个已经经过Table.ToColumns处理过的一个列表嵌套列表格式。所以我们在优化代码的时候可以把这一步处理的过程直接作为自定义函数的部分流程。...生成固定列变量 添加固定列终点变量,可以用于固定列的选择。...解释:这里我们把固定列从第1列开始,往后延伸,例如输入参数2代表的是从第一列开始,连续2列作为固定列。...固定列是2列,循环5次,数据列也是2列。使用函数后获得的效果。 批量多列合并(源,5,2,2) ?
合并查询在Power Query中是很成熟的应用,相当于SQL中的各种JOIN(抽时间会写几篇SQL的join,算是SQL的小核心)。...但同时,在Power Query中合并查询是一个常见的影响刷新效率的因素。在我的工作中,经常会遇到对一些非文件夹性质的数据源进行合并查询操作,所以我一直在想,有没有办法可以对其进行优化。...首先,我对这个CSV文件创建了两个连接,按照惯例,将第一行转为标题,将7列数字全都定义为整数格式。...但是如果我们合并的表都只有一列呢,还会像合并7列那么慢吗?...参考文档: Chris Webb https://blog.crossjoin.co.uk/2020/05/31/optimising-the-performance-of-power-query-merges-in-power-bi-part
小勤:Power Query里面怎么能快速的移动到最后一行啊? 大海:这个我不知道哦。但是,你要快速移动到最后一行的目的是什么? 小勤:其实我就是想知道数据刷新后一共有多少行。...大海:那很简单,你并不需要移动到最后一样,选中一列直接做个值计算就行了: 小勤:那如果想查看结果最后一行数据到底是个啥呢? 大海:那你直接反转行即可。如下图所示: 小勤:也对哦。...不过好像感觉还是像Excel里直接有个快捷键能移动到最后一行,那不是更好吗? 大海:可是Power Query里目前没有,希望将来Power Query会越来越好更加人性化吧。
小勤:怎么隔列删除/隐藏数据? 大海:在Excel里的话其实比较简单,比如先加个辅助行(隔列加一些标志信息),定位(快捷键Ctrl+G)到相应的标志信息,然后就可以删除或隐藏了。...小勤:那如果是在Power Query里,怎么办? 大海:Power Query里没有隐藏,只能直接删除列。 小勤:啊。那怎么批量删除比较快一点呢?...大海:首先,Power Query里有选择列功能,用起来比较方法,如下图所示: 小勤:这个功能很直观啊,把列罗列在一起进行选择,真是方便清晰很多。 大海:对的。...大海:这个在Power Query里其实不好操作,因为PQ里加行的操作不是很方便的。不过,可以考虑用转置后隔行删除然后在转回来,如下动画所示: 小勤:这样也很快啊! 大海:对的。...而且,通常来说,删除列这种需求一般并不是一些常规的需要批量操作的需求,所以,一般非必要的情况下尽量少这么搞吧。 小勤:嗯。的确是这样。
做数据处理的时候,会经常遇到在当前行读取上一行数据的问题,在Excel里,可以直接通过单元格的相对引用来实现。 但是,在Power Query里,这个问题处理起来需要通过表的行索引来实现。...具体如下: Step-01 添加从0开始的索引列 Step-02 添加自定义列,通过索引筛选上一行数据并取值 = try Table.SelectRows( 已添加索引,...同时,这个方法还避免了要进行首行错误处理(try…otherwise…)的复杂性,并且,可以按需要一次性提取多个列(展开查询结果是筛选多列)。...这两个查询如果放在Power BI中运行,你会发现,索引筛选法会不断地读取excel文件中的数据,显示接入的数据不断增大!...在使用Power Query或者Power BI的过程中,尤其是数据量较大的情况下,的确可能会碰到数据刷新较慢的情况,这时,我们就可以多想一下,在哪些方面可能可以适当的改进?是否可能换个更好的方法?
使用 Power Query 的一个非常有趣的场景是,可以利用它从 Web 上抓取与业务相关的数据,并用它来丰富自己的公司数据。数据通常以两种不同的方式之一存储在 Web 上。 存储在网站中的文件。...基于 HTML 的网页。 只要数据存储在 Power Query 理解的格式(“CSV”,“XLSX” 等)中,那么从它们中提取数据是相当容易的。...Power Query 团队一直在研究这个功能,在编写本篇时,【网页连接器基础结构更新】功能已发布在 Power BI 的预览功能中,用来解决这个问题。...短暂延迟后,Power Query 会根据用户的示例输入信息以及其他网页上的数据推断出用户真实的提取意图,并自动填充这一列的其他部分。...【警告】 如果用户的 “示例输入” 导致显示大量空值,则表示 Power Query 无法确定提取值的正确逻辑。 完成第一列后,双击列标题将其重命名,如果要添加更多列,请单击 “+” 图标。
本文介绍基于Python语言,针对一个文件夹下大量的Excel表格文件,对其中的每一个文件加以操作——将其中指定的若干列的数据部分都向上移动一行,并将所有操作完毕的Excel表格文件中的数据加以合并...在一个文件夹内,有大量的Excel表格文件(以.csv格式文件为例),其中每一个文件都有着类似如下图所示的数据特征;我们希望,对于下图中紫色框内的列,其中的数据部分(每一列都有一个列名,这个列名不算数据部分...由上图也可以看到,需要加以数据操作的列,有的在原本数据部分的第1行就没有数据,而有的在原本的数据部分中第1行也有数据;对于后者,我们在数据向上提升一行之后,相当于原本第1行的数据就被覆盖掉了。...此外,很显然在每一个文件的操作结束后,加以处理的列的数据部分的最后一行肯定是没有数据的,因此在合并全部操作后的文件之前,还希望将每一个操作后文件的最后一行删除。 ...其次,我们通过columns_move_index = list(range(8, 16)) + list(range(17, 36))指定需要移动数据的列的索引范围,并随后遍历需要移动数据的列。
表格可按多列排序 这又是一个被硬生生投票投出来的功能: ? 在表格的列头可以按Shift+Click就可以按多列排序,如下: ?...另外,按多列排序目前只支持表格,并不支持矩阵。 折线图支持双 Y 轴 折线图开始支持双 Y 轴,效果如下: ? 这样,用户就可以看到利润与利润率的同时对比趋势。...其他 在其他方面的更新,大家可以参考官方文档,如下: https://powerbi.microsoft.com/zh-cn/blog/power-bi-desktop-march-2020-feature-summary.../ PowerBI 官方文档已更新 地址: https://docs.microsoft.com/zh-cn/power-bi/ 如下: ?
这个问题来自一位网友,原因是需要对一个表里很多个列的数据全部乘以一个系数: 在Power Query里,对于一列的数据乘以一个系数,操作比较简单,直接在转换里有“乘”的功能...: 但是,当需要同时转换很多列的时候,这个功能是不可用的: 那么,如果要转换的列数很多,怎么操作最方便呢?...正如前面提到的,我们可以先对需要转换的数据进行逆透视: 这样,需要转换的数据即为1列,可以用前面提到的“乘”转换功能: 转换好后,再进行透视即可: 很多问题
按常用全列匹配公式写法如下图所示: 3、Lookup函数,按常用全列匹配公式写法如下图所示: 4、Power Query合并查询,按常规表间合并操作如下图所示: 五、4种方法数据匹配查找方法用时对比...经过分别对以上4中方法单独执行多列同时填充(Power Query数据合并法单独执行数据刷新)并计算时间,结果如下表所示: 从运行用时来看: VLookup函数和Index+Match函数的效率基本一样...; Lookup函数在大批量数据的查找中效率最低,甚至不能忍受; Power Query的效率非常高。...在思考这些问题的时候,我突然想到,Power Query进行合并查询的步骤,其实是分两步的: 第一步:先进行数据的匹配 第二步:按需要进行数据的展开 也就是说,只需要匹配查找一次,其它需要展开的数据都跟着这一次的匹配而直接得到...当然,使用公式的方法,即使在一定程度上进行改进,和Power Query相比仍然有很大的差距。因此,在数据量较大,数据处理较为复杂的情况下,建议使用Power Query来进行。
BI佐罗 本章专门讨论 Power Query 新手会面临的两个常见问题:理解 Power Query 是基于数据类型(而不是数据格式)的工具,以及如何理解和处理 Power Query 查询中的错误。...尽管这一行的其他数值有四位小数,但只需要三位小数就可以显示出此值真实的数值,所以这就是 Power Query 显示数据的方式。...【注意】 实际上,无需进入 Power Query 编辑器就可以访问数据源设置对话框。在 Excel 中,可以在【数据】选项卡上的【获取数据】菜单的底部附近找到【数据源设置】。...最后一个设置,【列配置文件】当选择一整列时,在屏幕底部提供了一个更详细的视图。 【注意】 如果检查 Power Query 窗口底部的状态栏,会看到【基于前 1000 行的列分析】这句话。...图 3-22 所以这就是错误的来源 暂时不考虑这个查询的具体机制,它基本上在获取查询时,为表的每一行添加一个行号,然后只保留有错误的行。
在群里看到个例子,将一些堆在一列,而且顺序也不太对的数据给整理好,给出的步骤是好大一串代码: 不少群友也一脸懵逼: 的确,其中使用了从列表中找规律,分段提取等等方法,虽然对于熟悉编程的朋友来说,其实并不是很难...,但是,如果没有编程经验,可能会觉得比较伤脑筋: 实际上,这个问题规律比较清晰,处理起来也并不复杂,主要通过Power Query的常用操作即可以实现,关键在于通过索引和判断,实现不同组数据的区分,然后再分列和透视即可...Step-01 添加索引 Step-02 添加条件列 Step-03 向下填充,完成数据分组 Step-04 通过筛选去除空数据 Step-05 删除多余的辅助列 Step-06 按分隔符拆分列...Step-07 透视列 此时,数据已完成整理,再按需要删除不必要的列即可: 回顾一下这个例子的关键步骤,在于如何为将同一个组的数据透视到同一行创造条件——这是在很多数据整理时都会用到的思路!...总的来说,大多数日常工作中的数据处理问题,并不需要特别复杂的代码,关键还是要对Power Query这些常用功能操作的熟练掌握——熟,能生巧。