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右侧的数据类型匹配

爬取网页#

  1. 要明确信息在哪个网址
  2. 要用什么方法获取数据
  3. 明确所要数据的位置
= (cityname as text) =>
let
    源 = Web.Page(Web.Contents("http://www.air-level.com/air/" & cityname & "/")),
    Data = 源{0}[Data]
in
    Data


作者:Hovey

出处:https://www.cnblogs.com/thankcat/p/16920513.html

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   ThankCAT  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
more_horiz
keyboard_arrow_up dark_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示