在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.可选参数: 你想要将转换限制为某些列的列名列表

 


如何使用书签来延迟加载Power BI 视觉对象

● 如何设计卡片图突出显示与警告

●  Power BI 12月产品功能更新—视频上线

● Power BI 12月产品功能更新文档

Power BI数据集内存挑战—节省40%以上!

 

技术交流

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/ 
posted @ 2020-01-04 15:46  PowerBI365  阅读(3602)  评论(0编辑  收藏  举报