前面几篇博客介绍了 Power Query (简称 PQ) 的数据源和 M 语言的基础知识,现在开始进入数据处理部分。本篇接着介绍 如何在 PQ 中添加列。...本示例基于一个考试分数的清单,做两个方面的统计:1)按单科分数计算级别( A/B/C/D); 2) 将语数外的成绩分别作为一列,并计算总分 [watermark,type_ZmFuZ3poZW5naGVpdGk...切换到【添加列】功能区,点击【自定义列】,进入设置自定义列界面。...else null), 分组的行 = Table.Group(已添加条件列2, {"Name"}, {{"Chinese", each List.Sum([Chinese]), type number...}, {"Math", each List.Sum([Math]), type number}, {"English", each List.Sum([English]), type number}})
下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码。...Value Range("D" & i).Value = BomMaterials(level - 1) End If Next End Sub 现在需要在 Power...Query (PQ) 中做相同的处理。...将 Excel 工作表的 BOM 数据通过 Ctrl + T 变成 Excel 的 Table,加载到 Power Query 查询编辑器(操作过程可以参考我之前的博客),此时界面如下。...结构化列不仅仅是 Table 类型,如果某一列是 Table、Record 或者 List,则都是结构化列。
(正常情况是由列名和操作函数组成,也可以是空列表); 第3参是去除第2参数中指定后剩余的列所需要进行处理的函数; 第4参数是找不到第2参数指定的列标题时是忽略处理(1)还是返回错误处理(0)。...例3 第3个参数是一个函数,是在第2参数指定列以外表格中的所有列需要进行的操作。 在前面的操作中,成绩列和学科列都有了操作,那剩余其他列(姓名列)也需要进行操作,那就要使用到第3参数了。...例4 第3参数是针对除了第2参数指定的剩余列进行操作,那第4参数就是指定列如果找不到的话,是返回错误还是忽略错误。...例5 如果是想让所有的列都进行同样的操作,也就是不指定列,使得把所有列都是作为其他列来处理,使用的是第3参数来进行操作的话,此时第2参数可以直接使用空列来表示,也就是不指定列。...例6 因为第3参数是针对所有未指定的列来进行操作,如果有些指定列不想操作,只想保留的话,那指定列可以使用each _来进行保留。
转换成 (一) 把单个字段组合成一个列 Table.ToColumns(源) (二) 把需要合并的样式单独组合 Table.FromColumns(List.Range(单字段组合,0,1)&
确定需求: a) 通过列数参数来改变最终的列数 b) 更改列数标题不影响数据运行 c) 更改数据源标题不影响数据运行 2....确定变量 a) 列数 b) 列数标题名 c) 数据源标题名 单列数据转多列,主要涉及的就是分组后的索引添加,然后进行透视。 (二) 主要涉及知识点 1....添加索引并取模 Table.AddIndexColumn,Number.Mod(指定行或列数) 2....展开数据后的透视 透视值关系到指定列还是指定行 4. 字段名的动态引用 Table.ToRows(列数字段表){0}{0}
我们导入的时候有一个日期列,格式如下 ? 对我们来说可以理解为,日/月/年,但是我们看下导入到Power Query中会如何显示? ?...右击需要更改的列 ? 2. 点击使用区域设置并使用英语(英国) ? 这样我们就更改完成了。 3. 返回效果 ? (二) 公式法 1. 函数Table.TransformColumnTypes说明 ?...我们看下此函数有3个参数 参数位置 类型 含义 第1参数 table 需要操作的表 第2参数 list 批量转换指定列及类型 可选第3参数 text 区域格式 看下之前的类型转换的函数书写 ?
对于列的拆分一般使用的比较多,也相对容易,通过菜单栏上的拆分列就能搞定,那如果是多列拆分又希望能一一对应的话需要如何操作呢?...比较明显的是分级列,分隔符为全角字符下的逗号,而说明列则是换行符进行分列。2列分别是2种不同的分隔符进行的分割。如果直接在导入数据后对列进行分割会有什么样的效果呢?...如图3所示,把对应的列都根据分隔符来进行分割。 ?...但是这种分列效果肯定不是我们所希望,因为我们要的是组合对应的数据,所以得想办法先要进行组合,这里可以使用List.Zip进行组合,分列后的数据是列表格式,所以可以对2列数据分别进行分割后在进行组合,可以在添加列中使用如下代码...但是如何现在直接进行展开的话,也会有问题,我们需要的是2列平行的数据,而展开的时候是展开到列,变成2列的数据了,如图5所示,这又不是我们所希望的结果。 ?
之前我们了解到了如何把2列数据进行合并的基本操作,Power Query中如何把多列数据合并?也就是把多个字段进行组合并转成表。那如果这类的数据很多,如何批量转换呢?...解释:这里我们把固定列从第1列开始,往后延伸,例如输入参数2代表的是从第一列开始,连续2列作为固定列。...确定需循环的列数 还有一个需要作为变量的,也就是确定是多少列进行转换合并。我们上面的例子中是以每3列进行合并,但是我们要做为一个能灵活使用的函数,更多的变量能让我们更方便的使用,适合更多的场景。..._相当于x的需要处理循环的次数,y相当于需要转换的列数。 提取的次数 X值 Y值 固定列终点 提取的位置 1 1 3 1 1 2 2 3 1 4 3 3 3 1 7 5....批量多列合并(源,3,3,3) 解释:批量多列合并,这个是自定义查询的函数名称,源代表的是需处理的数据表,第2参数的3代表需要循环处理的次数,第3参数的3代表需要合并数据的列数,第4参数的3代表保留前3
一般情况下,我们如果需要添加列,可以一列一列根据需要进行添加,那如果我们需要根据固定的需求进行批量添加,那如何操作呢? 原始表 ? 结果表 ?...我们在添加的列的时候,有2个主要参数,一个是标题,一个则是添加列里的内容,如果我们需要进行批量添加的话,这2个参数最好是作为变量进行循环填充。我们来看下如何操作吧。...List.Accumulate({0..列数}, 源, (x,y)=>Table.AddColumn(x,...列数:需要增加多少列,就根据相应的填写。 2. x代表的是表格,也就是增加列后的表格名称,初始值是原始表格。 3. y代表的是第几次的循环,0代表第一次,同时也是作为参数组里的列对应值的位置。...这样我们就很很容易的可以进行批量进行所需要添加的列。 需要注意的几个地方: 1. 标题和内容必须匹配 也就是在参数组里的2个参数必须项目数一样(可以通过if语句在执行前进行判断) 2.
合并查询在Power Query中是很成熟的应用,相当于SQL中的各种JOIN(抽时间会写几篇SQL的join,算是SQL的小核心)。...但同时,在Power Query中合并查询是一个常见的影响刷新效率的因素。在我的工作中,经常会遇到对一些非文件夹性质的数据源进行合并查询操作,所以我一直在想,有没有办法可以对其进行优化。...– 0 秒 以上的确能够得出结论:合并查询时,列数的多少的确会影响效率, 以上还揭示了:在以上两个查询中,读取数据是立刻发生的,几乎不占用时间,相比之下,最开始的两次查询中读取数据的时间甚至要比执行SQL...为什么表的列数会影响合并查询的性能的?因为合并查询是发生在内存当中,所以合并查询的表越大,内存需求就越大,也就需要更多的分页,因为超过了分页文件256MB的限制。...参考文档: Chris Webb https://blog.crossjoin.co.uk/2020/05/31/optimising-the-performance-of-power-query-merges-in-power-bi-part
小勤:怎么隔列删除/隐藏数据? 大海:在Excel里的话其实比较简单,比如先加个辅助行(隔列加一些标志信息),定位(快捷键Ctrl+G)到相应的标志信息,然后就可以删除或隐藏了。...小勤:那如果是在Power Query里,怎么办? 大海:Power Query里没有隐藏,只能直接删除列。 小勤:啊。那怎么批量删除比较快一点呢?...大海:首先,Power Query里有选择列功能,用起来比较方法,如下图所示: 小勤:这个功能很直观啊,把列罗列在一起进行选择,真是方便清晰很多。 大海:对的。...大海:这个在Power Query里其实不好操作,因为PQ里加行的操作不是很方便的。不过,可以考虑用转置后隔行删除然后在转回来,如下动画所示: 小勤:这样也很快啊! 大海:对的。...而且,通常来说,删除列这种需求一般并不是一些常规的需要批量操作的需求,所以,一般非必要的情况下尽量少这么搞吧。 小勤:嗯。的确是这样。
这个问题来自一位网友,原因是需要对一个表里很多个列的数据全部乘以一个系数: 在Power Query里,对于一列的数据乘以一个系数,操作比较简单,直接在转换里有“乘”的功能...: 但是,当需要同时转换很多列的时候,这个功能是不可用的: 那么,如果要转换的列数很多,怎么操作最方便呢?...正如前面提到的,我们可以先对需要转换的数据进行逆透视: 这样,需要转换的数据即为1列,可以用前面提到的“乘”转换功能: 转换好后,再进行透视即可: 很多问题
: 2、Index+Match函数,按常用全列匹配公式写法如下图所示: 3、Lookup函数,按常用全列匹配公式写法如下图所示: 4、Power Query合并查询,按常规表间合并操作如下图所示:...五、4种方法数据匹配查找方法用时对比 经过分别对以上4中方法单独执行多列同时填充(Power Query数据合并法单独执行数据刷新)并计算时间,结果如下表所示: 从运行用时来看: VLookup函数和...Index+Match函数的效率基本一样; Lookup函数在大批量数据的查找中效率最低,甚至不能忍受; Power Query的效率非常高。...七、结论 在批量性匹配查找多列数据的情况下,通过对Index和Match函数的分解使用,先单独获取所需要匹配数据的位置信息,然后再根据位置信息提取所需多列的数据,效率明显提升,所需匹配提取的列数越多,...当然,使用公式的方法,即使在一定程度上进行改进,和Power Query相比仍然有很大的差距。因此,在数据量较大,数据处理较为复杂的情况下,建议使用Power Query来进行。
本节内容使用Excel的Power Query和Power Pivot组件,抓取多个网页数据,进行清洗、建模和分析。...第一部分:从网页动态抓取数据 使用Power Query不仅可以获取本地的Excel文件数据,还可以获取网页数据。...本节介绍如何使用Power Query获取新浪网新浪体育频道的新浪直播室网页中的足球排行榜数据,主要获取列表中的全部赛季的球队数据,赛事主要获取前5项数据(前5项赛事的数据结构是相同的),如图所示。...需要注意的是,虽然Excel中的Power Query可以获取一些常规的比较简单的网页数据,但是其能力毕竟有限,对于复杂的数据的获取就无能为力了。...这个案例将数据获取、清洗、建模和分析的过程完整地展现了出来,体现了Power Query和Power Pivot在Excel中应用,大幅提升了Excel的智能化。
在群里看到个例子,将一些堆在一列,而且顺序也不太对的数据给整理好,给出的步骤是好大一串代码: 不少群友也一脸懵逼: 的确,其中使用了从列表中找规律,分段提取等等方法,虽然对于熟悉编程的朋友来说,其实并不是很难...,但是,如果没有编程经验,可能会觉得比较伤脑筋: 实际上,这个问题规律比较清晰,处理起来也并不复杂,主要通过Power Query的常用操作即可以实现,关键在于通过索引和判断,实现不同组数据的区分,然后再分列和透视即可...Step-01 添加索引 Step-02 添加条件列 Step-03 向下填充,完成数据分组 Step-04 通过筛选去除空数据 Step-05 删除多余的辅助列 Step-06 按分隔符拆分列...Step-07 透视列 此时,数据已完成整理,再按需要删除不必要的列即可: 回顾一下这个例子的关键步骤,在于如何为将同一个组的数据透视到同一行创造条件——这是在很多数据整理时都会用到的思路!...总的来说,大多数日常工作中的数据处理问题,并不需要特别复杂的代码,关键还是要对Power Query这些常用功能操作的熟练掌握——熟,能生巧。
小勤:大海,在PowerQuery里面能不能对一列数求和、算个数、求最大、最小值之类的啊?...大海:你说的这些其实就是所谓的“聚合”计算,在Power Query里当然也是可以的,虽然Power Query的强项在于数据的接入、转换整理,而不在于统计分析,但毕竟在数据整理中也经常用到一些基本的计算...我们先把数据丢进Power Query。 比如,我们要对一列数进行求和: 结果如下: 小勤:吐血,就只剩一个和了!...大海:对的,我们不要只看结果,看一下操作之后形成的公式,这里是通过List.Sum函数对“学分”那一列的所有数字进行了求和。...在Power Query里往往不是为了得到这些统计结果,而是对统计的结果进行进一步的利用,所以,这里面关键是要对这些操作生成的公式进行理解,对一些常用的函数要学以致用。 小勤:原来这样。
select 学生号, sum(case 科目 when '语文' then 成绩 end) as 语文, sum(case 科目 when '数学' then 成绩 end) as 数学, ...group by 学生号 case when进阶,动态列数行转列: 但是,转换后列数不固定的情况下呢?对照上面的例子来说就是,假设我并不知道学生学了哪些科目的时候应该怎么做?...Query,而Power Query 只有Excel 2016以上的版本才有!...第一步,【Ctrl A 全选数据】-【数据】-【从表格】,创建 Power Query,进入 Power Query界面。 第二步,添加辅助列。...Excel 实现列转换,可以通过【添加辅助列】来实现该效果。而在 Power Query 有多种可以添加辅助列的方法。
Excel中使用Power Query实现 Step 1: 首先,我们先进入Data –> From Table/Range 选好区域回车。...,无论是SUM还是AVG结果都一样的。...Excel中使用Pivot Table去做 (个人觉得这个不太好用,因为只能有一列是原来的那一列,另外一列就是从行变成列的) 有的时候使用Power Query会出现不成功的情况,例如: 所以,在这个时候使用...Step 3:在Excel右侧只选一列在Rows,需要把行变成列的放在Columns,以及需要根据行变成列的数据放在Values里。 你可以之后修改Aggregate选择Sum或者Avg。...现在你已经修改好基本样式,但是我们看到,有一些列数有Total,我们选中这些单元格,并右键点击,取消打勾的Subtotal [列名]。
新建列和度量值用power query也可以完成,但我们一般基于power pivot在数据建模阶段完成。 4.进行可视化。 案例背景 某连锁糕点是一个全国连锁糕点店,在全国共有22家店铺。...数据整理 选择主页–转换数据–转换数据,: 进入到Power BI的Power Query页面。...目标1:日期类型转为文本类型 Power Query中整理数据日期表中“年”和“月”的字段类型需将其调整为文本型,与原表类型一致。...选择月–选择添加列–选择重复列 生成如下 选择月列–选择转换–选择拆分列–选择字符数。...=[销售金额]/[营业店铺数量] 在这里插入图片描述 新建度量值和新建列的方式基本一样,新建销售金额度量值 按照 销售金额=SUM(‘销售表’[金额]) 销售数量=SUM(‘销售表’[数量
领取专属 10元无门槛券
手把手带您无忧上云