https://zhuanlan.zhihu.com/p/64148928

前面我们学习PQ的时候都是用鼠标操作,虽然通过这些操作能完成大部分的数据处理,但是毕竟还有些复杂的工作是处理不了的,如果想彻底驾驭PQ,必须得掌握点高级玩法。就像学习Excel一样,做个表格我们只要会简单的操作就可以了,但要想学好Excel,必须会点公式、VBA是一样的道理,PQ的高级技能也是需要写公式函数的,在PQ中用的函数称之为M函数。


在之前的PQ操作中,其实M函数无处不在,比如做数据清洗的每一个步骤,背后都有M函数的影子。打开高级编辑器,可以看到所有这些步骤的M语言。

如果我们不进行鼠标操作,直接在编辑器中编写这些语言,也是可以得到最终的结果的,有了M函数,PQ的数据处理具有很强的可读性和可移植性。

01 | 为什么要学习M函数

  • 有些复杂的操作必须借助M函数
  • M函数更加灵活,简洁高效

02 | M函数基本规范

  • M函数对大小写敏感,每一个字母必须按函数规范书写,第一个字母都是大写
  • 表被称为Table,每行的内容是一个Record,每列的内容是一个List
  • 行标用大括号{ },比如取第一行的内容:=表{0} //PQ的第一行从0开始
  • 列标用中括号[ ],比如取自定义列的内容:=表[自定义]
  • 取第一行自定义列的内容:=表{0}[自定义]

03 | 常用的M函数

  • 聚合函数:

求和:List.Sum()
求最小值:List.Min()
求最大值:List.Max()
求平均值:List.Average()

  • 文本函数:

求文本长度:Text.Length()
去文本空格:Text.Trim()
取前n个字符:Text.Start(文本,n)
取后n个字符:Text.End(文本,n)

  • 提取数据函数:

从Excel表中提取数据:Excel.Workbook()
从Csv/Txt中提取数据:Csv.Document()

  • 条件函数:

if else then (相当于Excel中的IF)

04 | 从哪里查找M函数

新建一个空查询,在公式标记栏中输入=#shared,就把所有的M函数显示出来了,点击某个函数,最下方便出现该函数的注释:

05 | 学习建议

虽然M函数很强大,但是不建议一头扎进去学习她,毕竟对于一个之前没有接触过编程的人来说,学习成本还是挺高的,并且大部分函数并不常用。

我的建议是先能够读懂M语言,并把常用的函数,比如文本函数、字符串函数、日期函数等浏览一遍,知道大概都有什么函数,分别是哪些功能,然后在数据处理过程中碰到鼠标操作难以完成的问题,能想到有哪个M函数可以利用,直接查找和并根据注释使用、或者会修改相应的M函数即可。

如果熟练使用鼠标操作功能,又能灵活运用M函数,你将在数据处理的路上一骑绝尘、所向披靡。在大数据已经进入日常工作和生活的今天,拥有Power Query这个利器, 我们就能用最少的时间来处理数据,留下更多的时间去分析数据,去发现数据背后的规律,这才是我们学习PQ、学习PowerBI的最终目标。

数据可视化之powerBI入门(八)PowerQuery学习:认识M函数的更多相关文章

  1. 数据可视化之powerBI入门(四)Power BI与PowerQuery、PowerPivot有什么关系

    https://zhuanlan.zhihu.com/p/64146209 Power BI与PowerQuery.PowerPivot有什么关系? 刚开始学习PowerBI的时候,总是能碰到Powe ...

  2. 数据可视化之powerBI入门 (一)认识PowerBI

    来自  https://zhuanlan.zhihu.com/p/64144024 Power BI是什么? Power BI是微软推出的数据分析和可视化工具,我们先来看看微软官方是怎么介绍的: Po ...

  3. 数据可视化之powerBI入门(十二)PowerBI中最重要的函数:CALCULATE

    https://zhuanlan.zhihu.com/p/64382849 介绍DAX的时候,特别强调过一个重要的函数:CALCULATE,本文就来揭秘这个函数的计算原理以及它是如何影响上下文的. C ...

  4. 数据可视化之powerBI入门(三)财务人员必学,使用Powerquery是一种什么体验?

    https://zhuanlan.zhihu.com/p/54700574 财务人员必学,使用Powerquery是一种什么体验? 你和Excel高手的距离只差了一个Power Query!!! 先思 ...

  5. 数据可视化之powerBI入门(五)PowerQuery,支持从多种源导入数据

    PowerBI的强大绝不仅是最后生成炫酷的可视化报告,她在第一步数据获取上就显示出了强大的威力,利用Power Query 的强大数据处理功能,几乎可以从任何来源.任何结构.任何形式上获取数据 htt ...

  6. 数据可视化之powerBI入门(六)PowerQuery:横向/纵向追加数据

    https://zhuanlan.zhihu.com/p/64148432 上一篇文章都是在原表数据基础上的分分合合,但做数据分析的时候还经常需要在原有数据的基础上增加一些辅助数据,比如加入新列.新行 ...

  7. 数据可视化之powerBI入门(十)认识Power BI的核心概念:度量值

    https://zhuanlan.zhihu.com/p/64150720 本文学习PowerBI最重要的概念:度量值 初学Power BI一般都会对度量值比较困惑,毕竟对长期接触Excel的人来说, ...

  8. 数据可视化之powerBI入门(九)PowerBI数据建模:其实一点都不高深

    https://zhuanlan.zhihu.com/p/64149834 数据建模并没有那么高深,你同样可以学会!这篇文章通过一个实例创建一个简单的数据建模,并引出两个重要的概念:度量值和DAX. ...

  9. 数据可视化之powerBI入门(二)体验PowerBI:零基础分分钟生成一份交互报表

    https://zhuanlan.zhihu.com/p/64144595 体验PowerBI:零基础分分钟生成一份交互报表 首先我们准备一份数据,Excel格式 数据是从2006年到2015年10年 ...

随机推荐

  1. Ement 学习

    <!DOCTYPE html><html lang="en"><head> <meta http-equiv="Content- ...

  2. 基于 abp vNext 和 .NET Core 开发博客项目 - Blazor 实战系列(五)

    系列文章 基于 abp vNext 和 .NET Core 开发博客项目 - 使用 abp cli 搭建项目 基于 abp vNext 和 .NET Core 开发博客项目 - 给项目瘦身,让它跑起来 ...

  3. Source Insight 中的 Auto Indenting

    编码过程中,希望输入花括号时能自动对齐,Source Insigth 应如何设置? 先来看一下Source Insight 中的帮助. “ Auto Indenting The auto-indent ...

  4. 套接字TCP控制台服务器程序代码示范

    套接字TCP控制台服务器程序代码示范  https://blog.csdn.net/txwtech/article/details/90344081

  5. PHP丨PHP基础知识之PHP基础入门——函数「理论篇」

    前两天讲过PHP基础知识的判断条件和流程控制,今天来讲讲PHP基础知识之PHP基础入门--函数! 一.函数的声明与使用 1.函数名是标识符之一,只能有数字字母下划线,开头不能是数字. 函数名的命名,须 ...

  6. OS_进程调度:C++实现

    实验二.进程调度模拟实验 一.实验目的: 本实验模拟在单处理机环境下的处理机调度,帮助理解进程调度的概念,深入了解进程控制块的功能,以及进程的创建.撤销和进程各个状态间的转换过程. 二.实验内容: 进 ...

  7. web scraper无法解决爬虫问题?通通可以交给python!

    今天一位粉丝的需求所涉及的问题值得和大家分享分享~~~ 背景问题 是这样的,他看了公号里的关于web scraper的系列文章后,希望用它来爬取一个网站搜索关键词后的文章标题和链接,如下图 按照教程, ...

  8. 007.OpenShift管理应用部署

    一 REPLICATION CONTROLLERS 1.1 RC概述 RC确保pod指定数量的副本一直运行.如果pod被杀死或被管理员显式删除,复制控制器将自动部署相应的pod.类似地,如果运行的po ...

  9. JavaScript DOM 注册事件

    一个HTML是一个DOM树,每一个节点都是DOM对象,整个HTML其实也是一个DOM对象,根节点是<html>; 在HTML页面初始化的时候,JavaScript会自动帮DOM对象注册消息 ...

  10. linux网络编程-posix信号量与互斥锁(39)

    -posix信号量信号量 是打开一个有名的信号量 sem_init是打开一个无名的信号量,无名信号量的销毁用sem_destroy sem_wait和sem_post是对信号量进行pv操作,既可以使用 ...