Power Query 介绍 Power Query 是微软提供的工具,Excel 2013 版作为插件加载使用,从 Office 2016 版开始,Power Query 的功能集成到 Excel 中...Power Query 的功能在 Excel 和 Power BI Desktop 中可用。...工作表的名称分别为 Jan, Feb 和 Mar,这三个工作表的内容(Data) 字段为 Table 类型数据 (Table 是 Power Query 三大容器类型的数据类型之一)。...第三个步骤,Power Query 将第一行作为列名,第四个步骤,Power Query 尝试帮我们确定每一列的数据类型。...Table.SelectRows(更改的类型, each ([Month] "Month")) in 筛选的行1 最后,我们总结一下对 Power Query 的初步印象:Power Query
很多朋友在使用Power Query的过程中,经常会碰到一些感觉看不懂的错误提示,现总结9种常见的情况收藏如下,也方便大家碰到问题时可以搜寻得到: 1、找不到名为“示例操作数据源!..._FilterDatabase”的Excel表 原因:Power Query查询步骤引用的表被删除,或表名被变更。...、提升标题后出现数据转换错误 这一般都是数据类型转换错误,当出现的错误不多是,可以直接点击链接生成错误明细表,进入Power Query查看每一出错行的具体情况然后做相应处理。...8、枚举中没有足够的元素来完成该操作 原因:要从表或列表里提取的行或项不存在。比如,经过筛选后的表或列表为空,这个时候要通过标号进行数据提取时,将出错。...解决办法:使用Table.SelectRows等函数代替列值引用法 Power Query中的错误提示其实非常多,而且同样一个错误,往往可能在不同的场景下出现,还有一些错误是某些版本的bug或特定电脑环境下出现的问题
小勤:我现在有个按营业额不同等级的提成比例表,怎么用Power Query读到营业额数据表里?如下图所示: 大海:这个问题如果是在Excel里的话,用Lookup函数非常简单。...虽然PQ里没有Lookup函数,但是,用PQ处理也不复杂,主要是使用Table.SelectRows和Table.Last函数来实现。...: 1、用Table.SelectRows函数筛选提成比率表里营业额小于数据源表当前行营业额的所有数据,类似于在Excel中做如下操作(比如针对营业额为2000的行,到提成比例表里取数据):...那么,Table.SelectRows的结果如下图所示: 2、在Table.SelectRows得到相应的结果后,我们就可以用Tabe.Last该结果的最后一行,即: 3、得到筛选表最后一行后,要取提成比例...大海:这其实是Table.SelectRows进行筛选表操作时的条件,这相当于将一个自定义函数用于做条件判断,其中的(t)表示将提成比例表作为参数,而t[营业额]表示提成比例表里的营业额列,而最后面的[
小勤:我现在有个按营业额不同等级的提成比例表,怎么用Power Query读到营业额数据表里?如下图所示: 大海:这个问题如果是在Excel里的话,用Lookup函数非常简单。...虽然PQ里没有Lookup函数,但是,用PQ处理也不复杂,主要是使用Table.SelectRows和Table.Last函数来实现。...Table.SelectRows函数筛选提成比率表里营业额小于数据源表当前行营业额的所有数据,类似于在Excel中做如下操作(比如针对营业额为2000的行,到提成比例表里取数据): 那么,Table.SelectRows...的结果如下图所示: 2、在Table.SelectRows得到相应的结果后,我们就可以用Tabe.Last该结果的最后一行,即: 3、得到筛选表最后一行后,要取提成比例,即可以直接用“提成比例”字段名来得到...大海:这其实是Table.SelectRows进行筛选表操作时的条件,这相当于将一个自定义函数用于做条件判断,其中的(t)表示将提成比例表作为参数,而t[营业额]表示提成比例表里的营业额列,而最后面的[
说实话,步骤真是特么多(TMD),不计算开始的数据导入Power Query和最后结果返回Excel,步骤仍然有11个之多,能静下心来看完的朋友,真是给了我莫大的鼓励…… 所以,难怪我的好友都看不下去了...然后,再回到这个问题,如果是Power Query解,又不想用那么多步骤,怎么办——那就用函数写个公式呗: try Table.SelectRows( 对照表, (...t)=>Text.Contains([物料名称],t[关键词]) ){0}[分类] otherwise "其他" 公式思路: 尝试(try)用物料名称中是否包含关键词的条件(Text.Contains...)对表进行筛选(Table.SelectRows) 对筛选结果取第一({0})行中的([分类])列中的内容 如果没找到(otherwise),就填“其他” 复杂吗?...在线M函数快查及系列文章链接(建议复制到浏览器中打开后收藏使用): https://app.powerbi.com/view?
点击“博文视点Broadview”,获取更多书讯 传统的Excel单表虽然可以有100万行数据的承载量,但是在实际分析时,20万行的数据就已经让传统的Excel非常吃力了。...但是,如果使用Excel中的Power Query和Power Pivot商务智能组件,即使是上百万行数据,也可以在短时间内快速完成处理和分析。...那么,有没有一本书可以一次性讲解Power Query和Power Pivot在Excel中的使用呢?...5.3 获取和删除各种数据实战 5.3.1 使用Table.Skip函数和Table.SelectRows函数筛选行 5.3.2 获取和删除指定文本值中的指定字符 5.3.3 获取和删除列表中的元素...“条件格式” 9.2 在DAX中使用VAR变量 9.2.1 关于VAR变量 9.2.2 使用变量时应该避免的错误 9.3 常见的DAX函数和实际案例应用 9.3.1 实例1:使用CONCATENATEX
- 1 - 日常使用Power Query的过程中,大家可能会对表(Table)、列(List)筛选部分数据比较熟悉,但是,如果是对于一行(Record),要筛选(或剔除)部分列(字段)进行计算,那该怎么办呢.../Z以外的其他列进行求和,那么,当仓库发生变化时,就极可能出错——仓库多了,有部分没算上;仓库少了,会因为找不到列而出错: - 2 - 实际上,要解决这个问题并不难,以下提供两种方法供大家参考。...Query或Power Pivot里,对于同一个问题,往往有很多不同的解法,这些都依赖于对基础知识的熟练掌握。...针对本文的问题,虽然看起来最终使用的方便并不复杂,但是,其背后需要对分组、透视等操作,以及对Power Query里的数据结构、行列数据提取、筛选等都熟练掌握。...| PQ重点函数 透视与逆透视 不到20分钟,彻底理解PQ表、行、列及相互转换方法 很多朋友在学PQ、PP的时候,经常会感觉:别人给出解决办法时,看起来倒挺简单的,但自己一动手,却感觉没有思路,无法下手
与 Excel 和 DAX 语言具有IFERROR函数的方式类似,Power Query具有自己的语法来测试和捕获错误。...备注为了演示此概念,本文将使用 Excel 工作簿作为其数据源。 此处展示的概念适用于Power Query中的所有值,而不仅仅是来自 Excel 工作簿的概念。...将此表导入Power Query编辑器时,下图显示了表的外观。请注意 Excel 工作簿中的错误如何随每个单元格中的值一起 [Error] 显示。本文介绍如何将错误替换为另一个值。...使用本文中介绍的概念,可以从错误记录中定位所选的任何字段。选择错误值旁边的任意空格时,将获取屏幕底部的详细信息窗格。...此操作将公开三个新字段:所有 Errors.HasError - 显示 标准速率 列中的值是否出错。
本篇数据处理来自一个实际处理数据的简化。下图中,假设左边是一个直观的 BOM 结构展示,数据在 Excel 中存储格式如中间部分所示:第一列为物料编码的级别,第二列为物料编码。...数据处理任务:需要在 Excel 中增加一列输出物料编码上一级的物料编码(目标为黄色部分)。...Query (PQ) 中做相同的处理。...将 Excel 工作表的 BOM 数据通过 Ctrl + T 变成 Excel 的 Table,加载到 Power Query 查询编辑器(操作过程可以参考我之前的博客),此时界面如下。...我们后面可以对结构化列进行展开 (expand),获得我们想要的数据,这种数据处理方法跟 Excel 有着天壤之别,后面我们还将通过其它示例,领会和掌握结构化列的使用方法。
大海:类似这种分区间的问题,我一般建议作为数据预处理的一部分,即放在Power Query里进行处理,在Power Pivot里即可以用于做相应的计算。...所以,我在以前的Power Query方面的文章《PQ-M及函数:实现Excel中的lookup分段取值(如读取不同级别的提成比例)》里讲过类似的解法。...(“单价_min”和“单价_max”)进行筛选(函数FILTER),得到产品单价归属的区间行; 通过VALUES函数取回对应的区间列的数据。...小勤:这个其实跟Power Query里的Table.SelectRows筛选得到某行然后再取值的思路很像啊。 大海:对的,实际思路都是差不多的,就是公式的写法不一样而已。...在线M函数快查及系列文章链接(建议复制到浏览器中打开后收藏使用): https://app.powerbi.com/view?
做数据处理的时候,会经常遇到在当前行读取上一行数据的问题,在Excel里,可以直接通过单元格的相对引用来实现。 但是,在Power Query里,这个问题处理起来需要通过表的行索引来实现。...具体如下: Step-01 添加从0开始的索引列 Step-02 添加自定义列,通过索引筛选上一行数据并取值 = try Table.SelectRows( 已添加索引,...这两个查询如果放在Power BI中运行,你会发现,索引筛选法会不断地读取excel文件中的数据,显示接入的数据不断增大!...10000行时,合并查询法接入数据仅518KB,而索引筛选法接入数据更是增长到1.1GB,是合并查询法接入数据的近2000倍!...在使用Power Query或者Power BI的过程中,尤其是数据量较大的情况下,的确可能会碰到数据刷新较慢的情况,这时,我们就可以多想一下,在哪些方面可能可以适当的改进?是否可能换个更好的方法?
它使用第 1 行的内容作为各自列标题,取代了之前的无意义的 Column1、Column2 等列标题,如图 1-8 所示。...Power Query 中的操作可以大胆尝试,不会出现任何风险。从这个意义上:单位时间内尝试的次数决定了学习掌握 Power Query 的学习时间。)...要重命名 “Source” 步骤,需要编辑查询的 M 代码。 1.4.2 重命名查询 默认情况下,一个查询步骤会使用数据源的名称作为查询的名称。...不幸的是,当一个新的 Excel 文件被启动时,【查询 & 连接】窗口需要手动打开,这可能会使人们出错。...图 1-21 数据已经从 4,575 行加载到 4,921 行 1.7 Power Query 的价值 一旦习惯使用 Power Query,会发现它会对工作流程产生巨大的影响。
将左边的数据放在 Excel 工作表中,通过 Ctrl + T 变成表,然后加载到 Power Query,将查询命名为 Hierarchy。示例数据已经上传到 Github,方便大家对照学习。...Level 字段为 2、3、4 的数据。...Level 1 到 Level 4 四个查询作为数据加工的辅助。 然后选中查询 Level1,与 查询 Level2 进行合并查询操作。...要点是选中 Level1 的 Child 字段与 Level2 的 Parent 字段进行匹配。...,现在这个查询也可以在 M 脚本中编写: Level2 = Table.SelectRows(ChangedTypes, each ([Level] = 2)) 变更前: [watermark,type_ZmFuZ3poZW5naGVpdGk
在本系列的第 14 篇,我介绍了类似 BOM 的数据应该怎么存储,以及在 Power Query 中如何展开。那篇文章使用创建辅助查询的方法,从而简化了在查询编辑器的操作,小白都是可以理解和掌握的。...在编程语言中,循环是一种基础的控制结构,是基础的东西,但在 PQ 中却没有直接的循环语句,需要通过函数的辅助来实现。...所以,首先考虑将这些重复的代码封装在一个函数中。在 Power Query 中,如果能借助查询编辑器操作的地方,尽量在 UI 中进行操作,没必要手写代码。...为了简单,我用查询转换为函数的方式来操作: 新建一个空查询,在高级编辑器中输入下面的代码: let Level1Table = Table.SelectRows(Hierarchy, each...: - parentTable:父表,尽管现在连接是根据 level 就可以确定,但后面需要迭代逐步变化,所以作为参数 - linkFieldInParent: 父表的关联字段,子表的关联字段是固定的,
问题关键在于生成两个区间内的数据,Power Query 最适合干这种活 {1..6} 就可以生成1 2 3 4 5 6 等一系列的数。...将起始月份作为大括号的第一个参数,将结束月份作为大括号的第二个参数,即可得到中间的月份,还要注意,两个参数都要求是数字。...,{"取模"}) 至此,就得到了下图数据,加载到excel就完事了 ?...([月份展开], 100), type number), 筛选的行 = Table.SelectRows(插入的取模, each ([取模] = 1 or [取模] = 2 or [取模] =...= Table.RemoveColumns(筛选的行,{"取模"}) in 删除的列 如上是Power Query的解法,不知道有没有小伙伴可以用ACCESS实现。
小勤:Power Query里,怎么对表中表的数据进行筛选啊? 大海:你想怎么筛选? 小勤:比如说我只要下面每个表里单价大于10的部分: 大海:这么标准的数据和需求,直接展开再筛选就是了啊。...因为你可以通过表(Table)相关的函数分别针对每一个表进行,比如筛选行可以用Table.SelectRows,筛选列可以用Table.SelectColumns……可以非常灵活地组合使用。...小勤:可是我用Table.SelectRows怎么出错了? 大海:这样当然会出错啊。你在外面这个表里哪里有“数量”这一列? 小勤:外面这个表?...Table.SelectRows不是引用了“订单明细”那一列里的每个表吗? 大海:嗯。所以,你想一下,如果你的外面大表里也有一列叫“单价”的,那,你说这个公式里的这个单价,指的是谁呢?...大海:关于each以及函数嵌套参数的用法的确是Power Query进阶的一个比较难理解的点,后面可能需要结合更多例子来训练。 小勤:好的。我先理解一下这个。
对于很多使用Power Query或Power Pivot的朋友来说,工作中很容易碰到的一个情况就是——按条件求和!...对于这个问题,在Excel中很简单,用SUMIFS函数即可,或者如果版本比较低,没有SUMIFS函数,那可以用SUMPRODUCT函数来实现。...其实,这也比较简单,PQ常规的解法就是按求和所在行的相应数据作为条件对表进行筛选(Table.SelectRows),然后对筛选结果进行列求和(List.Sum)。...如下所示: Power Pivot里实现的思路也是一样,通过FILTER函数筛选符合条件的数据,然后用SUMX函数进行求和。...其实,对于这个问题的解法,无论是Excel、Power Query还是Power Pivot,核心思路都是一样的:即通过条件筛选出符合条件的数据,然后求和。
Power Query按全级、单位、班别排名 【问题】 【题前话】:上一次学习了 PQ-计算总分再国际排名中国排名 关键是:List.PositionOf(List.Sort(总分[总分],Order.Descending...),[总分])+1 解析:先把上一步骤:总分中的列[总分]以列表的形式放入每一行中,再List.Sort降序,再List.PositionOf本行的数据在整个列表中的位置,再加1 例如:100,在[100...,80,60]中的位置是0,+1,就是第一名啦 今天学习一种新的方法 【代码】 let 源 =Excel.CurrentWorkbook(){[Name="表4"]}[Content],...全级排名 =Table.AddColumn(源, "全级排名",each Table.RowCount(Table.SelectRows(源,(r)=>(r[总分]>[总分])))+1), 单位排名...=Table.AddColumn(全级排名, "单位排名", each Table.RowCount(Table.SelectRows(源,(r)=>(r[单位]=[单位]and r[总分]>[总分]
但是,即使案例再多,也仅能作为参考,最关键的还是要自己把基础知识掌握并熟练运用,这样,再多的情况,都可以自己按需处理了——基础和思路是最重要的。...实际上,我们如果在用Power Query汇总文件夹数据的时候,仔细观察从文件夹读出来的相关信息,就可以发现,在文件列表中,存在文件对应的创建时间、修改时间和访问时间,如下图所示: 那么...“最近一天”不一定是昨天…… 实际上,这个在Power Query里非常简单,因为针对日期/时间的筛选,PQ提供了多种筛选方式,大家点开列的筛选按钮即可查看。...我们要选择最近一天的,即可以选择“最晚”选项,如下图所示: 从简单解决问题的角度,上面的筛选非常简单,但是,从学习的角度来说,我建议再仔细观察一下Power Query对这个“最晚”选择的实现方法...当然,你可以对这个公式进行一定的简化,比如改成这样: 即将List.Max所取得的最大值直接用作筛选条件,不需要经过先设定变量然后引用的过程。 为什么可以这样?
Power Query堪称神器,以极低的学习成本帮我们在Excel和Power BI中自动化很多数据处理工作。但是,稍微不注意,你制作的自动化工具可能就会埋下地雷,在下次刷新数据时爆炸。...1.埋雷过程 ---- 假设有以下储存在Excel中的销售数据源,我们将其导入Power Query处理成标准格式。...Excel 2016从“数据”选项卡导入,Excel 2013从"Power Query"选项卡导入,Power BI Desktop在“主页”选项卡的“获取数据”导入。...Excel 2016导入界面 在Power Query后台,只需点击“将第一行用作标题’,表格即变为规范的格式。 "将第一行用作标题”动画 设置完成后,尝试刷新,非常顺畅。...遗憾的是目前该设置只支持当前工作簿,也就是说你有另外工作任务需要使用Power Query时要重新设置。 最后还有一个问题,更改数据类型有没有必要?有。但不是系统帮我们改,而是我们自己改。