PowerBI技巧之power query Function.ScalarVector函数优化调用 M 函数.pdfVIP

PowerBI技巧之power query Function.ScalarVector函数优化调用 M 函数.pdf

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
今天学习一下在power query 中使用Function.ScalarVector函数来优化我们调用的M函数公式。本例来自老外 的博客文章 https://blog.crossjoin.co.uk/201 / 11/ 16/function-scalarvector-optimise-power-query-m- functions/ ,我想试着按照原英文的步骤,来熟悉一下这个函数的使用。我们先看一下这个函数的基本解释 这个函数能够使你将批量的函数请求和单行请求结合起来。下面我会跟着老外的例子来走一遍,熟悉理解下。 下面是一个叫SingleValueUpper的函数,作用很简单,英文小写转大写: (InputText as text) = Text.Upper(InputText) 现在创建一个名叫Product的表(table): #table( type table [Fruit=text], {{apples},{oran es},{pears}} ) 平常一般做法就是Table.AddColumn(Product, Fruit Upper, each SingleValueUpper([Fruit]))实现大小写转换。 日常代码 let Sin leValueUpper=(InputText as text) =Text.Upper(InputText), Product = #table( type table [Fruit=text], {{apples},{oran es},{pears}} ), res=Table.AddColumn(Product, Fruit Upper, each Sin leValueUpper([Fruit])) in res 结果 在上面的例子里,SingleValueUpper函数被调用了3次,每一行调用了一次。如果是这样调用网络服务的话,效率 会非常的低。 现在来看看ListUpper函数 (InputText as list) = List.Transform( InputText, each Text.Upper(_) ) 这个函数接受一个文本列表,并把里面的每个值转化为大写并返回一个列表结果。上面的例子我们可以通过 ListUpper(Product[Fruit])就获得了水果的列表并完成转换了。 如果你是这样调用网络服务,会更高效。 Function.ScalarVector可以像这样通过引发函数开关来调用函数。来看下自定义一个ScalarVectorUpper函函 数数 Function.ScalarVector( type function(Fruit as text) as text, (InputTable) = let BufferTable = Table.Buffer(InputTable), InputList = BufferTable[Fruit], CallFunction = ListUpper(InputList) in CallFunction ) 我们这里可以看到Function.ScalarVector的两个参数了 第一个参数,匹配我们在调用的表的列的函数类型。 第二个参数,传递一个和函数类型(第一参数)相同列的表。文档里面说这个函数不能对表枚举超过一次。所以需 要使用 Table.Buffer() 函数将表缓冲到内存里面,隔壁外部环境。 查询的代码如下; let ListUpper=(InputText as list) = List.Transform( InputText, each Text.Upper(_) ), ScalarVectorUpper=Function.ScalarVector( type function(Fruit as text) as text, (InputTable) = let

您可能关注的文档

文档评论(0)

精通微软Word、Excel、PowerPoint、PowerBI,资料达人。

1亿VIP精品文档

相关文档