【发布时间】:2021-06-24 12:43:29
【问题描述】:
我正在编写自定义 M 语言(Excel 中的 PowerQuery)函数来查询 RESTful 接口。该接口有大量可选参数。
从一个简单的案例开始——我处理一个作为简单(原始)值传递的可选limit,如下所示——
/*
* RESTful API Get from the named endpoint
*/
(endpoint as text, optional limit) =>
let
// query limit
// If limit is supplied as a number, it will be converted to text
// If limit is not supplied it will be set to the value "1000"
limit = if limit <> null then Text.From(limit) else "1000",
由于完整的 API 有许多参数,我想使用 Record 将它们传递给函数,但后来我意识到我不知道如何说服 M 将默认值写入参数记录。
我尝试了几个选项。
- 直接访问-
(endpoint as text, optional params as record) =>
let
params[limit] = if (params[limit] = null) then "1000",
结果是语法错误-'Token equal expected'
- 将limit的新值合并为带有“&”的记录
(endpoint as text, optional params as record) =>
let
params = params & if params[limit] = null then [limit = "1000"] else [],
结果语法错误-'Token Literal expected'
我显然遗漏了一些关于 let 语句的语法规则的内容,我知道我需要一个 variable = value 赋值,而且看起来好像在 LHS 上放置了除普通变量名之外的任何东西来将元素写入不允许使用结构化值,但我不确定如何实现这一点?
【问题讨论】:
标签: excel powerquery m let