[......]
作者: 施阳
筛选有重复数据
题目:
现有一列数据,其中"A"和"F"都不止出现了一次,需要将它们找出来。
解法1:
根据表获取行的另一种方式为表{[name="A"]}
,但是这种方式仅限于字段下命名唯一,如果[name]下有两个"A"会报错,只有一个 "C"则不报错。
根据这个特性,再利用try能够[......]
常见报错提示解读
首先不得不承认的是,PQ虽然强大,但IDE却是一个非常大的槽点。没有智能感知,没有着色高亮,所以输入代码非常容易出错,但报错提示往往还让人看不懂,反正就是无法吐槽更多。
在此整理一些常见报错提示,以便对照查阅,持续更新~
先来几个大概能看懂的:
1、Expression.Error: 无法[......]
汉诺塔经典递归问题
在其他语言学习递归思想的时候,有一个经典的问题就是汉诺塔的解法:
当然这个在M语言中也是可以玩的,并且代码比其他任何语言都要简洁。
思路:利用递归思想,假设有n层,最上面的n-1层已经从A借助C移到B,然后将最大的盘子从A借助B移到C,最后再将n-1层从B借助A移到C,一直递归下去。M中@代[......]
自定义函数
基础用法:
在M语言中,标准库函数(standard library functions)约有700个。但是如果你觉得太少了,或者说不好用,那么也可以通过自定义函数来实现自己想要的效果。自定义函数的基本语法为:
函数名=(参数1,参数2,参数3...)=>表达式
先来看个例子:
let[......]
制作日期表
在Power BI中经常需要使用到日期表,尤其是使用DAX中的时间智能函数。在excel 2016版本的Power Pivot中,我们可以使用新建日期表的功能快速创建一张日期表,但是在2013及Power BI中就没那么方便了。不过这种问题在我们如此灵活的PQ中,当然只是小case啦~
首先需要根[......]
数据三大容器:table record list
基本概念:
table
即表,这个好理解,有行有列即为table。
在excel中,要指定一个单元格我们用比如A5,而在PQ中则略有不同。每一个table都有字段名,即使你没有给字段命名,也会有默认的如"Column1""Column2"这样的命名;也有索引号,即使你没有添加索引列,也可以根据[......]
使用PQ调用API
关于什么是API在此不多介绍,请自行百度。不同API使用方法不同但基本相通,本文主要介绍以get方式调用:使用&将各query参数连接,其中中文字符需要使用Uri.EscapeDataString
转码,然后使用Web.Contents
对服务器发出请求,再用Json.Document
对返回的j[......]
关键字(keyword)
什么是关键字?
如果之前对编程语言有所了解,对关键字应该不会陌生。关键字其实就是M语言内部已经使用了的标识符,比如在M中if为条件分支语句,不需要定义本身就有含义,如果我们将一个步骤命名为if,这是不允许的。因为如果可以这么做,后面的公式中根本分不清哪些if是步骤名,哪些是判断,就乱套了。官方给出[......]
使用高级编辑器
开启编辑栏:
在Power Query中,顶部的菜单栏提供了非常多的按钮,我们可以方便地使用图形化界面操作,而实际上每一个功能按钮背后即是一段代码,我们所熟悉的添加列、拆分列、合并查询等等都有其对应的M语言公式。
有些新手可能不知道公式在哪,因为PQ中编辑栏默认是关闭的,需要手动开启。
在[......]