在这篇文章中,我们将学习如何在power query中构建一个自定义查询函数,它将复制Excel的查询函数修剪功能!
如果你发现你总是在做相同的变换或计算,为什么不把它变成一个函数呢?这可以简化查询中的步骤,并允许重用解决方案。
表的内容
这个问题
不久前,我写了一篇关于删除不需要的空格字符的4种方法从文本数据。
我研究的两个解决方案是修剪函数,并使用电源查询。
Excel的修剪函数是易于使用的,做了一个伟大的工作。它将删除文本字符串开头和结尾的所有空格字符,以及单词之间的多余空格。因此,当一个单词之间有多个空格时,它将用单个空格替换它们。
还有一个文本。修剪函数,但它只从文本字符串的开头和结尾去掉空格。单词之间没有空格。
我在帖子中的解决办法是应用修剪命令,然后使用替换值命令将双空格实例替换为单空格。然后重复这个过程,直到没有更多的双空格。
老实说,这不是个好办法。
这意味着重复一个需要更多努力的步骤。但更重要的是,如果新数据进入那时的数量替换值步骤可能不够足够了。
所以我们要创建一个电源查询函数来复制Excel的superior修剪功能。
视频教程
用于查询函数的M代码
让ExcelTrim = (TextToTrim) =>
让
ReplacedText =文本。替换(TextToTrim, " ", " "),
Result = if not(文本。包含(ReplacedText”、“))
然后ReplacedText
其他@ExcelTrim (ReplacedText)
在
text.trim(结果)
在
ExcelTrim
这个函数接受一个文本字符串,将双空格替换为单空格,并重复该过程递归直到它找不到更多的双空格。然后应用文本。修剪函数来处理任何前导或尾随空间字符。
创建递归函数可以解决手动应用重复的问题替换值删除双色空间的步骤,是一个更优雅和可用的解决方案。
创建空白查询
创建查询函数的第一步是创建一个新的空查询。这是我们放置M代码为我们的功能。
去吧数据点击➜然后进入获取数据➜选择从其他来源➜然后选择空白的查询.
这将打开电源查询编辑器。
属性可以为查询指定一个名称的名字盒子的特性部分。这将用于引用查询函数,因此我们应该给它一个好的描述性名称。
向高级编辑器添加M代码
现在我们需要添加M代码到查询,我们可以在高级编辑器中完成。
要打开高级编辑器,请到家标签并按高级编辑器按钮。
将代码复制并粘贴到编辑器中,然后按完成按钮。
我们可以关闭和装载查询保存查询功能。
使用查询功能
关闭并加载查询功能后,我们将看到列出的查询查询和连接窗玻璃。图标将是一个小的FX.表示它是一个函数的符号。
现在,我们如何使用此功能?我们可以通过创建自定义列在任何查询中使用它。
去吧添加一列选项卡并选择自定义列.
我们可以给新列一个名称,然后在公式编辑器中添加公式。
fExcelTrim([文本调整)
这将适用fExcelTrim的每一行的查询函数(文本调整)列。
结论
在电源查询中构建查询函数是简化和重用查询的一种很好的方法。
我们还可以构建仅使用强大的查询编辑器UI无法实现的解决方案。
在UI中,没有办法递归地添加转换步骤,但在M代码和函数中这是相当容易的。
很丰富! !
我只是想问一下,我不明白你为什么要在最后使用Text.Trim(Result)。
如果它的目的是什么。
你能解释一下吗?
谢谢你!
代码用单个空格替换双倍空间字符,因此字符串的开始或结尾可能有一个空格字符。
text.trim(结果)需要从开始或结束中删除这些。
感谢您的回复!!
我只需要请求,
请详细解释其中一个博客中let语句的作用域嵌套let语句。
它将帮助我们编写自己的自定义功能,这是如此强大。
这是天才。太棒了,谢谢分享!