Power BI 4 DAY
数据化结构
其他数据结构
复合数据结构的列表
let
source = {
1, //数值
"Bob", //文本
DateTime.ToText(DateTime.LocalNow(),"yyyy-MM-dd"), //函数值
[OrderID = 1, CustomerID = 1, Item = "fishing rod", Price = 100.0] //记录
}
in
source
let
source = [CustomerID = 1, Name = "Bob", Phone = "123-4567", Orders = {
[OrderID = 1, CustomerID = 1, Item = "Fishing rod", Price = 100.0],
[OrderID = 2, CustomerID = 1, Item = "Ib.worms", Price = 5.0]
}]
in
source
列表嵌套列表
let
Source = #table(
{"OrderID", "SalespersonID", "Price","Salestable"},
{
{1, "a", 100, #table(
{"SalesPersonID", "SalesPersonName"},
{
{"a", "Tom"}
}
)}
}
)
in
Source

记录嵌套列表
let
Source = [
OrderID = 2,
Salseperson = "b",
Price = 200,
Salsepersontable = #table(
{"Salseperson", "SalseName"},
{
{"b","王二"}
}
)
]
in
Source

M函数计算方式
M两数的计算方式与Excel单元格相互间引用计算的方式类似,其计算顺序是根据计算单元中每个元素问的依赖关系決定的。
在M两数中便可以写成如下形式,它与Excel单元格的区别在于M两数中的A1、A2、A3是记录中的元素,而Excel中的A1、A2、A3是单元格地址。
记录中各元素间相互引用计算
[
A1 = A2 * 2 // 4
A2 = A3 + 1 // 2
A3 = 1
]
在M两数中还可以进行更为复杂的元素间的引用计算。例如下边例子中的#'Total Sales "就是引用同一个记录中嵌套的列表内的第一个记录内的Total宁段,以及第二个记录内的Total字段将这两个值相加得到的。
复合嵌套记录内元素间的引用计算
[
Sales = {
[
Year = 2007,
FirstHalf = 1000,
SecondHalf = 1100,
Total = FirstHalf + SecondHalf
],
[
Year = 2008,
FirstHalf = 1200,
SecondHalf = 1300,
Total = FirstHalf + SecondHalf
]
},
#"Total Sales" = Sales{0}[Total] + Sales{1}[Total]
] // 4600
运算符
一个完整的计算表达式由计算数与运算符两部分组成,例如在计算表达式1+2中,1和2是计算数而+就是运算符。M两数中运算符的含义有时取決于参与计算的计算数的数据类型
| 运算符 | 表达式 | 结果 | 备注 |
|---|---|---|---|
| 结合符(&) | "A"&"BC"/{1}&{2,3}/[a=1]&[b=2 | "ABC"/{1,2,3}/[a=1,b-2] | 文本结合/列表结合/记录结合 |
| 大于(>) | 2>1 | True | 返回布尔值T |
| 大于等于(>=) | 1>=1 | True | 返回布尔值T |
| 小于(<) | 1<2 | True | 返回布尔值T |
| 等于(=) | 1=2 | False | 返回布尔值T |
| 不等于(<>) | 2<>1 | True | 返回布尔值T |
| 或(or) | if 2>1 or 2<1 then 1 else 0 |
1 | or两端判断条件有一个为真则结果为真 |
| 和(and) | if 2>1 and 2<1 then 1 else 0 |
0 | and两端判断条件全部为真则结果为真,有一方为假时结果为假 |
| 非(not) | if not(2<1)then 1 else 0 |
1 | not将判断条件的结果进行反转,判断条件为真时返回假,判断条件为假时返回真 |
| 加(+) | 1+2 | 3 | - |
| 减(-) | 2-1 | 1 | - |
| 乘(*) | 2*2 | 4 | - |
| 除(/) | 4/2 | 2 | - |
| 负(-x) | -2 | -1 | - |
| 中括号([]) | [ Year=2007, FirstHalf=1000 ] |
![]() |
创建记录或引用字段 |
| 花括号({}) | [ Sales= { [ Year=2016, Total=5000 ], [ Year=2017, Total=6000 ] }, #"Total Sales"=Sales{0}[Total] ] |
5000 | 创建列表或引用列表中元素 |
| is | if 1 is number then 1 else 0 | 1 | 如果1是数值型则返回1若不是则返回0 |
| as | 1 as number | 1 | 1的数据类型为数值型as左侧的数值须与as右侧的数据类型匹配 |
爬取网页
- 要明确信息在哪个网址
- 要用什么方法获取数据
- 明确所要数据的位置
= (cityname as text) =>
let
源 = Web.Page(Web.Contents("http://www.air-level.com/air/" & cityname & "/")),
Data = 源{0}[Data]
in
Data




浙公网安备 33010602011771号