整理了一下PQ笔记,将常用部分单独提出来,有备无患
永远需要拜读官方文档_url
由于主要用作爬虫,所以更多与网络请求相关
为什么要用pq而不用python?因为数据过程更直观,且移植性较强,不需要切换环境
常用语句请单
//发起post请求-表单
Json.Document(
Web.Contents(
"https://example.com",
[
Headers=[#"Content-Type"="application/x-www-form-urlencoded; charset=UTF-8"],
Content=Text.ToBinary("")//若是get请求,则不要此项
]))
//发起post请求-json
Json.Document(
Web.Contents(
"https://example.com",
[
Headers=[#"Content-Type"="application/json;charset=UTF-8"],
Content=Text.ToBinary("")//这里需要注意,传入参数需要在txt中先单引号转为双引号,以避免引号冲突
]))
//Content也可以使用记录构建
Content=Json.FromValue([key="v",key2=1,key3=null,key4=""])
//处理返回的数据:使用web.contents()请求数据后,得到的数据是binary二进制数据。
Web.page(binary)//转为表格
Json.document(binary)//以json读取
Table.FromRows(源)//当请求结果为rows时
Text.FromBinary(源)//解析为html
//获取当前文件中的查询列表
Record.FieldNames(#sections[Section1])
//常用表达式
//格式化日期,今天20200101
Date.ToText(Date.From(DateTime.LocalNow()),"yyyyMMdd")
//格式化日期,今天前N天:-N,昨天后N天:N
Date.ToText(Date.AddDays(Date.From(DateTime.LocalNow()),n),"yyyyMMdd")
//当前时间戳
Duration.TotalSeconds(DateTime.LocalNow()-#datetime(1970, 1, 1, 0, 0, 0))
//缓存表格,以保持排序。在pq中,用Table.Distinct去重时,往往不会按先后顺序去重。这时可先将原表缓存Table.Buffer,即可按先后顺序去重
Table.Buffer(源)//缓存表格
List.Buffer(源)//缓存列表
//创建一个函数
(x,y)=> let 源=(x+1)*y in 源 //匿名函数(无参函数)其实没有必要,可以直接引用
Demo之获取飞书表格数据
let
fstk="******",
token="*****",
sheet="t7xCaR",
range="A:L",
rsp = Table.FromRows(
Json.Document(
Web.Contents(
"https://open.feishu.cn/open-apis/sheets/v2/spreadsheets/"&token&"/values/"&sheet&"!"&range,
[Headers=[#"Authorization"="Bearer "&fstk]]
))[data][valueRange][values]),
table= Table.PromoteHeaders(rsp, [PromoteAllScalars=true])
in
table