在Power Query中,如何一次对多个列进行高级转换
你在PQ中仅能使用UI界面将简单的转换应用于多个列,在本文中,将介绍如何一次对多个列应用高级转换。你也可以用它来使用自定义函数。最后,对于自定义M函数的老粉:你还将获得一个新的“ TranformAllMyColumnsAtOnceHowILikeIt”函数。
问题-我太难了
查询编辑器中的“转换”选项卡对你选择的列是很敏感的。因此如果你如示列般选择多列, 一些数字转换将显示为灰色,从而无法访问:
许多图标将变灰
所以,如果乘法图标变灰,如何对所选列乘以10?
解法-So Easy
只需检查要转换的列并选择一个可访问的虚设函数。理想情况下,它应包含与预期函数一样多的参数,但这不是强制性的。在我们的例子中,我选择了一个带有2个参数的函数(用于数字和乘法器):舍入->舍入非常适合这里。
我在小数位数字段中输入乘数(10)的数字;
数字区域
现在,你是否正在问自己在哪里填写数字本身的引用? 然后在编辑栏中签出自动生成的M代码:
自动生成的公式
查询编辑器已自动将引用设置为数字,并用下划线(_)表示。这表示自动创建的(唯一)函数参数,因此,它使用了语法“each”关键字。
如你所见,已经为表的每个字段创建了所有代码。因此,我们现在唯一需要调整的是函数本身。我改动“each Number.Round(_, 10)” 到 “each _ * 10” 通过将其复制粘贴到每个列表达式中:
编辑公式
使用自定义功能
如何将“RemoveHtmlTags”功能应用于整个表, 参考如下:
1.从GitHub复制功能代码
2.在查询编辑器中创建一个空白查询
3.在高级编辑器中编辑该查询,并将所有现有代码替换为复制的代码
4.命名查询“ fnRemoveHtmlTags”
5.现在,你应该检查所有列并应用虚拟转换
6.最后,将生成的代码的功能部分替换为“ fnRemoveHtmlTags”,如下所示:
删除HTML标签
你是否想知道“each”都去了哪里? 实际上,对于仅带有一个参数的函数来说,这是不必要的。
更高效率的函数
如果要将转换应用于表的所有列, 以下功能将派上用场。只需填写3个参数(表格,函数和类型),然后,最后可以使用可选的“ ColumnNames”参数 。如果只想将转换限制到这些列,则可以在其中提供列名称的列表。
必须如下使用参数:
1.参考表格本身
2.参考函数
3.要转换的列类型(注意:你必须使用正确的类型(无引号)且非文字表达式)
4.可选参数: 你想要将转换限制为某些列的列名列表
技术交流
1.Power BI免费下载:http://www.yeacer.com/
Microsoft Power BI Desktop中文最新版:下载地址
2.欢迎加入的Power BI技术群,目前正在学习阶段,有兴趣的朋友可以一起学习讨论。
Power Data技术交流群:702966126 (验证注明:博客园Power BI)
更多精彩内容请关注微信公众号:悦策PowerBI
如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,作者博客:https://www.cnblogs.com/yeacer/