数据化结构

其他数据结构

复合数据结构的列表
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



Power BI 4 DAY的更多相关文章

  1. 一起学微软Power BI系列-使用技巧(5)自定义PowerBI时间日期表

    1.日期函数表作用 经常使用Excel或者PowerBI,Power Pivot做报表,时间日期是一个重要的纬度,加上做一些钻取,时间日期函数表不可避免.所以今天就给大家分享一个自定义的做日期表的方法 ...

  2. 一起学微软Power BI系列-使用技巧(4)Power BI中国版企业环境搭建和帐号问题

    千呼万唤的Power BI中国版终于落地了,相信12月初的微软技术大会之后已经铺天盖地的新闻出现了,不错,Power BI中国版真的来了,但还有些遗憾,国际版的一些重量级服务如power bi emb ...

  3. 一起学微软Power BI系列-使用技巧(3)Power BI安卓手机版安装与体验

    Power BI有手机版,目前支持安卓,苹果和WP,不过没有WP手机,苹果在国内还不能用,要FQ和用就不测试了.安卓的我也也是费了九牛二虎之力才把app下载下来,把方法分享给大家. FQ太麻烦,所以建 ...

  4. Power BI官方视频(3) Power BI Desktop 8月份更新功能概述

    Power BI Desktop 8月24日发布了更新版本.现将更新内容翻译整理如下,可以根据后面提供的链接下载最新版本使用. 1.主要功能更新 1.1 数据钻取支持在线版 以前的desktop中进行 ...

  5. 一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库

    说起Oracle数据库,以前没用过Oracle不知道,但是这1年用Oracle后,发现真的是想狂吐槽,特别是那个.NET驱动和链接字符串,特别奇葩.总归是和其他数据库不一样,标新立异,不知道为何.另外 ...

  6. 千呼万唤始出来,微软Power BI简体中文版官网终于上线了,中文文档也全了。。

    前几个月时间,研究微软Power BI技术,由于没有任何文档和资料,只能在英文官网瞎折腾,同时也发布了英文文档的相关文章:系列文章,刚好上周把文章发布完,结果简体中文版上线了.哈哈,心里有苦啊,早知道 ...

  7. 微软新神器-Power BI横空出世,一个简单易用,还用得起的BI产品,你还在等什么???

    在当前互联网,由于大数据研究热潮,以及数据挖掘,机器学习等技术的改进,各种数据可视化图表层出不穷,如何让大数据生动呈现,也成了一个具有挑战性的可能,随之也出现了大量的商业化软件.今天就给大家介绍一款逆 ...

  8. 微软Power BI技术文章与资源目录

    下面是本博客原创的微软Power BI技术相关文章,对于部分转载文章和资源,会注明出处. 本博客将发布基于微软Power BI相关的基础入门文章,视频教程等资源,敬请关注. 个人建立的Power BI ...

  9. 一起学微软Power BI系列-使用技巧(2)连接Excel数据源错误解决方法

    上一篇文章一起学微软Power BI系列-使用技巧(1)连接Oracle与Mysql数据库中,我们介绍了Power BI Desktop中连接Oracle和Mysql的方法,其实说到底还是驱动的问题, ...

  10. Power BI REST API

    Overview of Power BI REST API https://msdn.microsoft.com/en-us/library/dn877544.aspx 验证方式 OAuth 2.0 ...

随机推荐

  1. 02-UPF-Power Domain

    How do we use power domain 使用UPF至少有一个power domain power domain可以进行嵌套 Defining Power Domain Example P ...

  2. strlen和sizeof区别

    strlen 和 sizeof 是 C/C++ 中用于获取字符串长度或数据类型大小的两个不同的操作. 1.strlen: strlen 是在 C 语言和 C++ 中用于获取以空字符 ('\0') 结尾 ...

  3. 云服务器搭建自己的GitServer!

    云服务器搭建自己的GitServer! 如果你有一台云服务器并想在上面搭建自己的 Git 服务器,你可以使用 Git 自带的 git-shell ,也可以使用像 Gitea.GitLab.Gogs 这 ...

  4. OB指定开源版本MySQL模式单节点安装

    OB指定开源版本MySQL模式单节点安装 yum源处理 yum install -y yum-utils yum-config-manager --add-repo https://mirrors.a ...

  5. [转帖]TiDB-unsafe recover(三台tikv宕机两台)

    一.背景 名称 数量 tikv 3 副本 3 1.故障: 因为某些原因,两台tikv不可连接,出现region不能访问的故障 2.几条理论: 2.1.多副本原则 存在一半以上的副本则集群访问不受影响( ...

  6. [转帖]Windows自带硬盘测试工具使用教程

    本教程主要讲解Windows自带的硬盘测试工具的使用,不用再安装第三方软件了.到底准不准就不知道啦,下面我们来看看如何使用吧~ 1. 进入cmd 快速进入cmd 主要如果进入后,使用命令直接闪退,就是 ...

  7. ARM 平台Docker运行RabbitMQ 以及迁移的简单办法

    公司网络很垃圾. 可以使用vps 进行下载和打包  放到 公司的机器上面进行使用. 1. 搜索有没有可用的镜像. [root@JNXLH ~]# docker search rabbitmq |gre ...

  8. 【原创】linux为什么不是实时操作系统

    一.什么是实时操作系统(RTOS)? 可参见本博客之前的文章: 什么是实时 实时的分类 常见的RTOS latency和jitter 总结一下,实时其实说的是系统响应事件需要的时间的确定性,时间必须确 ...

  9. API架构风格对比:SOAP vs REST vs GraphQL vs RPC

    API架构风格对比:SOAP vs REST vs GraphQL vs RPC 最近一段时间关于GraphQL的讨论很多,一些项目中也相继用到了这种风格,但使用是否合理,是否存在杀鸡用牛刀这样的问题 ...

  10. OpenIM集群(非k8s)部署文档

    自行部署etcd/zookeeper/mysql/kafka/mongo/redis集群,可以根据此性能评估服务器需求. 以下是针对一台华为云主机s3的压测数据:8核16G内存,普通磁盘(非SSD)( ...