概述 Microsoft Power Query 提供了强大的“获取数据”体验,其中包含许多功能。...Power Query 的一项核心功能是筛选和组合,即“混搭”来自一个或多个受支持数据源的丰富集合中的数据。任何此类数据混搭均使用 Power Query 公式语言(非正式称为“M”)表示。...Power Query 将 M 文档嵌入 Excel 和 Power BI 工作簿中,以实现可重复的数据混搭。 本文档提供了 M 的规范。...让表达式允许引入辅助定义,用于以较小的步骤构建复杂的表达式。 如果表达式支持条件评估。 节提供了一个简单的模块化机制。(Power Query 尚未利用部分。)...(以及下面进一步介绍的 let 表达式)使用惰性求值进行求值,这意味着它们仅在需要时进行求值。
那么,有没有一本书可以一次性讲解Power Query和Power Pivot在Excel中的使用呢?...全书共11章: 第1章介绍Excel中的Power Query和Power Pivot两大商务智能组件及其功能; 第2章至第6章介绍如何使用Power Query来获取数据并进行处理,主要包含Power...Query的基本操作、M函数和M公式的基础知识、常用的M函数,以及数据处理的综合案例; 第7章至第11章介绍如何使用Power Pivot进行数据建模和分析,主要包含Power Pivot的基本操作、...通过阅读本书,读者可以更加高效地进行数据分析工作。 本书特色 01. 紧贴实际应用场景,介绍Power Query和Power Pivot在数据分析方面的应用(50+个实例) 02. ...DAX中的数据类型与运算符 7.3.3 创建DAX表达式时表和列的引用方式 第8章 Power Pivot和DAX基础知识 8.1 理解计算列与度量值 8.1.1 依附于数据表的计算列 8.1.2
原理驱动法 这是比较难的一种办法,有那么一点点考验天赋和直觉,并且是需要一定经验积累的。...偶尔我们还会需要直接用别人处理好的excel表做为数据源嘛,power bi也是可以的,可以直接去调用已有的数据集进行处理。...第二步是对已有的数据做简单的整理和处理,这一步也是在power query中就可以完成的。...第三步,是对没有处理好的数据做再次的修改和处理,这里就会牵扯到另一个东西了,dax表达式。可能很多新手都有类似的困惑:我到底应该在query中处理数据还是应该在dax中处理数据。...或者说把横竖都要处理的,不管指标有没有可能改都要处理的问题丢给power query,把和指标计算逻辑相关的东西修改dax。 第四步就是制作图表了。
有没有可以不用coding的办法?其实对于绝大多数业务数据分析的场景,excel都可以cover,甚至实现的效率更高。...Excel和Power BI的关联 首先,这里需要介绍一下power query。...以之前准备好的代码为例,我们可以在power bi的power query界面打开高级编辑器,复制其中的M code出来。...不知道大家有没有意识到,这个操作其实意味着,我把数据库中的数据拉进了excel表中进行操作。...这确实是一种办法,但是这种办法解决不了coding的问题——建表落库写SQL,该有的代码一步都少不了。 其实零coding的方案主要来自于power query的这个数据源获取功能——来自文件夹。
其实我们仔细看一下场景1和场景2,它们之间是个逆过程,场景1是从Python获取数据传递到Power BI,而场景2是Power BI或者Power Query获取了数据,用python来处理。...举个简单的例子: 首先我们进入Power Query管理器界面,通过新建一个空查询,并建立一个1到100的列表,再将其转换为表: = {1..100} ?...(power query自动对Python添加 #(lf) 用来进行转义) 当然,以上所说这些功能直接在powerquery中就可以实现,甚至更简单便捷,所以上述内容都是些: ? 吗? 并!不!是!...这种数据如果已经导入到Power BI中,在powerquery里是没有办法直接进行处理的,这时候就可以调用Python的re正则表达式了: import re import json # 自定义获取文本电子邮件的函数...后面两列就是我们想要的手机号和邮箱了。 这样我们就实现了在powerquery中使用正则表达式对数据进行清洗的目的。 ?
下午,我正爽歪歪地喝着咖啡,看着Power BI每秒钟刷新一次,静静等待某个分公司完成本月绩效任务,自动调用Python在钉钉群中发送喜报: 紧接着再次调用Python将Power BI云端报告中的各分公司最新完成率数据和柱状图截图发在群里...还有,把他上个月销售记录附在这张表后面,发我看看。 问题来了:这个时候如果是你,你会怎么完成这个任务?(前提,数据库中有所有人的全部记录。)...我们到查询编辑器中看看: 注意第三行: NAME = 更改的类型{1}[NAME], M语言允许我们通过坐标的方式获取表中单一的值,[NAME]代表NAME列,而{1}代表第2行,因为表都是从标号为0的行开始的...那在Power Query中有没有可能设置主键呢?...在UI上并没有设置的位置,但是我们还是可以想其他办法的,有这么几种方式: 1.从带有主键的数据库中导入数据 2.在pq中对table某一列去重,那么这一列就可以作为主键 3.使用Table.AddKey
我们在【重磅来袭】在Power BI 中使用Python(4)——PQ数据导出&写回SQL 讲过如何在Power BI中调用Python实现powerquery获取和处理的数据回写到MySQL中。...获取完整源代码,请关注本公众号【学谦数据运营】,回复关键字“powerbi-python-sqlserver” 第二个办法,其实更简单一些,而且直接跳过了Python,因为Power BI和SQL Server...那么重要的就来了: 如果我们能够将PQ返回的表按行转换为一条条的record记录,再逐条导入SQL Server,那么我们的需求就得到了解决。...说到这里,我们再回过头来探讨一下Power BI和MySQL有没有可能也跳过Python这个“中间商”直接交易呢? 看图: 你说呢?...---- 以下,后续文章预告: 今天我们讲的是PQ生成record列表,再逐个导入SQL中,那有没有办法将PQ中的table作为一个整体导入SQL中呢?
待优化场景 发现SLOW QUERY LOG中有下面这样一条记录: ... # Query_time: 59.503827 Lock_time: 0.000198 Rows_sent: 641227...想要优化一个SQL,一般来说就是先看执行计划,观察是否尽可能用到索引,同时要关注预计扫描的行数,以及是否产生了临时表(Using temporary) 或者 是否需要进行排序(Using filesort...,但毕竟还是有临时表和额外排序,想办法消除后再对比看下。...有个变化不知道大家注意到没,新的SLOW QUERY LOG记录多了不少信息,这是因为用了Percona分支版本的插件才支持,这个功能确实不错,甚至还能记录Profiling的详细信息,强烈推荐。...后记 再想想这个SQL还有优化空间吗,显然是有的,那就是把数据表重新设计,将 date 和 hour 列整合到一起,这样就不用费劲的拼凑条件并且也能用到索引了。
- 1 - 日常使用Power Query的过程中,大家可能会对表(Table)、列(List)筛选部分数据比较熟悉,但是,如果是对于一行(Record),要筛选(或剔除)部分列(字段)进行计算,那该怎么办呢...Step-02 修改分组步骤公式 这时,分组生成的步骤公式里,对求和直接取了数量列的所有数据,而我们要取指定的内容(如不包含A和Z仓库),这时,我们可以将数量求和的部分进行修改,即通过Table.SelectRows...记录筛选法 对于记录筛选法来说,则是先按常规进行透视,然后想办法针对仓库(此时是一个个的列)进行筛选。...Query或Power Pivot里,对于同一个问题,往往有很多不同的解法,这些都依赖于对基础知识的熟练掌握。...针对本文的问题,虽然看起来最终使用的方便并不复杂,但是,其背后需要对分组、透视等操作,以及对Power Query里的数据结构、行列数据提取、筛选等都熟练掌握。
透视表那个结果到底怎么来的? 大海:其实是这样的,计算字段里会先将每个字段的内容求和,然后再按计算字段的公式进行求值,所以你前面的那个错误结果其实是这样得来的: 小勤:原来这样!...大海:库存结存数的计算是求入库和出库的差值,”先分别求差值再求和”跟“先求和再求差值“的结果是一样的。 小勤:对哦。那像销售利润那种要先乘然后再减的情况怎么办?...大海:我看你的数据表是用Power Query从多个表汇总的,既然这样,可以直接在Power Query里添加自定义列: 这样,把每一行产品的销售利润先算出来,这样到了数据透视表的时候就可以直接用了...又或者可以将数据加载到数据模型,然后在Power Pivot中进行计算。...小勤:通过Power Query添加自定义列或Power Pivot添加计算列或度量,能在有新数据的时候一键刷新得结果,这个真是好!
自定义函数类型值用于对符合函数值的签名设置类型限制。...optional-parameter-规格 , 可选参数规范列表 可选参数规范: optional 参数规范 参数规范: 参数名称参数类型 函数返回类型: 断言 断言: as 可空原语类型 对函数类型求值的结果是一个基类型为...表的行类型将表的列名和列类型指定为封闭记录类型。使所有表值符合 type table,其行类型为 type record(空打开记录类型)。...Power Query 使用键信息来提高高级功能的性能,例如跨源连接操作。)...标准库确实包含一组用于从自定义类型中提取定义特征的函数,因此可以将特定的兼容性测试实现为 M 表达式。下面是一些例子;有关完整详细信息,请参阅 M 库规范。
数据隐私防火墙的用途很简单:存在以防止Power Query无意中在源之间泄露数据。为什么需要这一点? 我是说,你当然可以创作一些 M,它将SQL值传递给 OData 源。 但这将是有意的数据泄露。...折叠是指在 M ((例如筛选器、重命名、联接等)中) 将表达式转换为对原始数据源 ((如 SQL、OData) 等)的操作的术语。...Power Query功能的重要组成部分来自 PQ 可以通过用户界面将用户执行的操作转换为复杂的SQL或其他后端数据源语言,而无需用户知道上述语言。...它通过将 M 查询划分为称为分区的内容,然后强制实施以下规则来执行此操作:分区可以访问兼容的数据源,也可以引用其他分区,但不能同时引用这两个分区。简单。。。然而令人困惑。 什么是分区?...如果不熟悉步骤,可以在“应用步骤”窗格中选择查询后,在Power Query 编辑器窗口右侧查看它们。 步骤可跟踪将数据转换为最终形状所做的一切。
Power Query 定位查询,中文一般翻译为超级查询,主要作用是连接不同种类的数据源,进行数据的转换。下图来自微软官方对 Power Query 的介绍,可以帮助理解。...Query 以及 Power Query 内置的 M 语言的教程并不多,所以计划撰写系列博客,尽量以案例的方式,讲解 Power Query 和 M 语言 (M 语言后被改名为 Power Query...从这里可以看出,Power Query 将我们数据处理过程中的步骤都记录下来了,并且在每一步,都能够可视化查看数据的变化,而这一切都是基于 M 语言的。...Power Query 的初步印象:Power Query 的核心是查询对象,通过查询对象连接不同的数据源获取数据,并对数据进行处理和转换,得到处理后的结果。...处理过程的每一个步骤都通过 M 语言脚本被记录下来,从而实现处理过程自动化。 参考 What is Power Query? Power-Query-概述和学习 示例素材 github
接下来是一个专题,记录和分享Power BI 和SSAS配合的实操经验。 ---- 第一篇是关于Power BI连接数据方式的对比。这是个老生常谈的话题。...您可以使用 Power Query 组合来自多个源的数据,或使用 DAX 编写高级时间智能表达式或可视化。使用此方法对 Power BI 的功能没有限制。您可以使用所有组件。...在 Power Query 中,可能不少操作是无法执行的。比如无法在此模式下执行合并数据源。你会收到这样的消息: 您的 DAX 表达式也受到限制;你不能写出所有类型的表达式。...仅举一个很小的性能调优示例;这是当我的表上有 4800 万条记录的正常索引时我得到的性能,从我的具有 4800 万条记录的表中进行常规选择总和需要 4 分 4 秒才能运行。...有时在数据库端进行计算比在分析表达式语言中进行计算要复杂得多。 不能使用Power Query,只能可视化 这种方法的最大缺点是您甚至不会有 Power Query 简单转换。
int a = 10; int x = ++a; //先对a进行自增,然后对使用a,也就是表达式的值是a自增之后的值。...int y = --a; //先对a进行自减,然后对使用a,也就是表达式的值是a自减之后的值。...//先对a先使用,再增加,这样x的值是10;之后a变成11; int y = a--; //先对a先使用,再自减,这样y的值是11;之后a变成10; return 0; } 强制类型转换...表达式求值 表达式求值的顺序一部分是由操作符的优先级和结合性决定。 同样,有些表达式的操作数在求值的过程中可能需要转换为其他类型。...2 c + --c; 注释:同上,操作符的优先级只能决定自减–的运算在+的运算的前面,但是我们并没有办法得知,+操作符的左操作数的获取在右操作数之前还是之后求值,所以结果是不可预测的,是有歧义的
有几种例外情况,可以在 Power BI 服务中刷新动态数据源,例如,将 RelativePath 和查询选项与 Web.Contents M 函数结合使用时。...很自然的,在桌面端Power Query中,调用自定义函数之前,一定是要有数据的,正常人不可能对一个空表进行自定义函数查询。...以下展示非正常人类: 【筛选的行】,本来就是空表,这是用自定义函数查询了个寂寞吗? 在本地Power Query中,步骤是一步一步进行的,每一步都得进行计算,对于这种空表进行运算是毫无意义的。...但是没办法,本地Power Query程序就是这样,无意义的运算也得运算。...(此处,举个极端的例子,一个数据量非常大的表导入Power Query,进行了上百个操作,各种自定义函数,筛选去重,修改,计算,然后最后一步是筛选为空表,就跟上图一样,请问进行刷新操作时,Power Query
它的核心优势在于其背后强大的Power Query M语言。虽然用户可以通过图形界面完成大部分常见的数据转换操作,但M语言为技术用户提供了编写复杂、可重用脚本的能力 13。...这种设计是“向右”理念的体现,它为业务分析师而生,优先考虑的是易用性和直观性,让不具备编程背景的用户也能快速地对特定数据集进行整理和塑形,以满足眼前的分析需求。...两者最核心的区别在于,Power Query的无缝集成和M语言的强大能力支持一种“一次构建,多次复用”的数据工程思维,M 语言本身就是“高墙”;而Tableau Prep的独立性和可视化流程则更贴合分析师...核心引擎 Power Query M 语言 (可编写脚本) 可视化的直接操作界面 Power Query:强调技术能力与自动化。 Prep:强调用户可及性与透明度。...Tableau的详细级别(LOD)表达式: 相比之下,Tableau的LOD表达式为解决一个常见的分析难题提供了极为直观的方案:如何在一个与视图粒度(Viz LOD)不同的粒度上进行聚合计算 7。
_FilterDatabase”的Excel表 原因:Power Query查询步骤引用的表被删除,或表名被变更。...、提升标题后出现数据转换错误 这一般都是数据类型转换错误,当出现的错误不多是,可以直接点击链接生成错误明细表,进入Power Query查看每一出错行的具体情况然后做相应处理。...解决办法:仔细查看函数后面的括号里的参数个数并进行调整,对函数参数的情况不熟悉时,可以通过查找帮助查看函数的参数和应用示例。...7、找不到记录的字段“……” 这种情况通常是表的列名变了,或者在数据处理过程中,前面的步骤删除了后面步骤所需要用到的列或修改了相关列的列名。...解决办法:使用Table.SelectRows等函数代替列值引用法 Power Query中的错误提示其实非常多,而且同样一个错误,往往可能在不同的场景下出现,还有一些错误是某些版本的bug或特定电脑环境下出现的问题
在使用Power Query的过程中,每一个查询里包含各个过程,各个过程又是由多个M语句构成的,如果我们需要把整个文件中的所有M代码给导出来,有没有什么好的办法呢?...这里介绍一个非常实用的工具,整个工具可以方便的把文件里面的查询全部导出来,不仅可以从Power BI Desktop中导出,而且还可以从Excel中进行导出。我们来看下效果。 ?...有了这个工具,是不是对代码整理更方便了呢?
比如把数据导入本地数据库,其实可以用power query做平替,数据库建表时的建模工具,也可以改成用AI来实现,看板也可以用fine bi来实现之类的。...鼠标移动到任意表的最右侧,可以看到这样的提示: 直接点击任意表右侧的三个点,展开更多选项,就可以回到power query的界面进行查询的编辑了。...这里有两种操作方式,第一种方式是直接在power query中进行修改: 看到这个截图是不是瞬间就明白了,毫无难度,简直有手就会。根本不需要做太多的解释和说明。...这里就不做M语言的语法规则的延展了,后续可以在power query实现的这个分支中来讲一下。...删除同样是两种方式,直接在高级编辑器中删除M code或者在页面直接点击X号进行删除。 其他三张表的操作类似,把所有用到的数据都做一次过滤,让看板只留下我需要看到内容。