Power BI 3 DAY
M函数基本表达式
注释
单行注释:“//”
多行注释:“/* ... */”
基本表达式
let...in...结构
let:用于封装计算结果,并为计算命名
in:用于显示计算结果
let
source = Text.proper("hello word")
in
source // hello word
M函数基本变量类型
Type | Example value |
---|---|
Binary | 00 00 00 02 // number of points(2) |
Date | 5/23/2015 |
DateTime | 5/23/2105 12:00:00 AM |
DateTimezone | 5/23/2105 12:00:00 AM -08:00 |
Duration | 15:35:00 |
Logical | true and false |
Null | null |
Number | 0, 1, -1, 1.5, and 2.3e-5 |
Text | "abc" |
Time | 12:34:12 PM |
自定义函数
(parameter1, parameter2, parameter3, ...) => 函数运算表达式
通过调用函数得到函数返回值称为函数值
(parameter1 as number, parameter2 as number) =>
let
final = (parameter1 + parameter2) / 2
in
final
调用函数列表
创建空查询,在编辑器中输入: =#shared
if表达式
if表达式通过对逻辑条件进行判断来对两个表达式进行选择
if 2 > 1 then
2 + 2
else if 2 = 1 then
2 + 1
else
1 + 1
= (a as number) =>
let
源 = if a > 0 then "正数"
else if a = 0 then "0"
else "负数"
in
源
数据化结构
列表结构(List)
列表是扩在花括号中的一组数据,列表中每个数据都有属于自己的序号以便自己能够被检索到,列表中的数据序号从0开始按照排列顺序依次整数递增,大列表内还可以嵌套子列表、记录等。花括号除了用来括起列表内的所有数据还用来指定列表内数据的序号,通过指定数据序号可以从列表内找到并获取所需的数据值。
Value | Type |
---|---|
由数值、布尔值、以及字母组成的列表 | |
有数值组成的列表 | |
{ {1, 2, 3}, {4, 5, 6} } |
大列表内嵌套两个数值组成的小列表 (二维数组) |
{ [CustomerID = 1, Name = "Bob", Phone = "123-4567"], [CustomerID = 2, Name = "Tom", Phone = "987-6543"] } |
列表内嵌套两个记录 |
从列表内取序号为0的数值,结果为123 | |
{ {1, 2, 3}, {4, 5, 6} }{0} |
先从二维数组中取出序号为0的一维数组,再从一维数组中取出序号为1的值,结果为2 |
记录结构(Record)[ ]
记录用来定义字段和给字段赋值,一个字段由字段名以及字段内的值组成,字段名是唯一的文本值,是字段的标识符。字段名可以不用引号引用,字段名有两种表达形式:
不加 " " 的表达形式、例如OrderID
加 # 和 " " 的表达形式、例如#"Today's data is:"
记录中的内容写在[ ]括号内,[ ]括号同样用于在记录中取特定字段的值。
定义字段以及显示记录内所有值:
let
Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in
Source
定义字段以及显示记录内[Item]字段的值:
let
Source =
[
OrderID = 1,
CustomerID = 1,
Item = "Fishing rod",
Price = 100.00
]
in
Source[Item] //equals Fishing rod
表格结构(Table)
表是由行列数据构成的,可以使用隐式或显示方式定义字段(列)的数据类型。使用 #table建表时,可以使用列表或者记录来定义列名,并使用嵌套列表来定义表中的数据,嵌套列表的大列表内包含所有定义单行用的子列表,而每个子列表则用来定义一行数据。花括号{ }可以用来素引查找指定行的数据。
隐式字段表
let
Source = #table(
{"OrderID", "CustomerID", "Item", "Price"},
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "Ib.worms", 5.00}
}
)
in
Source
显式字段表
let
Source = #table(
type table [OrderID = number, CustomerID = number, Item = text, Price = number],
{
{1, 1, "Fishing rod", 100.00},
{2, 1, "Ib.worms", 5.00}
}
)
in
Source