当前位置:首页 > 热水器 > 文章正文

Power BI中运用自定义M函数「打包」数据处理流程

编辑:[db:作者] 时间:2024-08-25 09:08:20

在实行从文件夹合并文件前须要对文件实行一些固定操作(提升标题等、删除空行、空列、更换值)时,可以先单独对一份文件进行洗濯,然后将洗濯流程定义成自定义函数。

Power BI中运用自定义M函数「打包」数据处理流程

对其他文件的转换操作就可以直接调用自定义函数一次性完成了。

假设一共有4个月的销量数据,现在须要将他们合并进行汇总剖析。

不雅观察1月份数据,第1、2行加载到Power Query后将会显示成null,须要通过筛选去掉,其余出于某种缘故原由D列是空列,因此须要删除。
同时为了更好地剖析各产品情形,我们须要将数据进行逆透视处理。

每个月的数据都符合以上特点,同样须要删除前2行、删除D列、逆透视。
不该用自定义函数的话,可以选择将 各月的数据分别实行以上步骤,再追加合并。
但既然流程是重复的,那么在Power Query中就可以实现自动化。

一、从文件夹

先实行从文件夹合并数据

↑ 获取数据>文件夹

↑ 点击“转换数据”进入PowerQuery编辑器

↑ 选择第1、2列,删除其他列

这里保留第 2 列文件名,由于示例中文件名包含了数据的月份。

↑ 添加自定义列Excel.Workbook([Content])

展开自定义列往后可以看到,每个月份的数据已经包含在【Data】列里面了

这时候我们可以保留【Name】和【Data】列,同时将1月份的数据添加为新的查询。

↑ 点击Table字样,右键弹出菜单中选择作为新查询添加

将1月份的数据添加为新的查询,是为建立自定义函数供应处理样本。
接下来我们对1月份的数据进行数据洗濯操作,然后将这些操作「打包」成自定义函数,方便重复调用。

二、运用数据清理流程

接下来在新天生的查询中,运用数据洗濯步骤:

↑ 利用删除行功能,删除最前面2行

↑ 将第一行提升为标题

↑ 选中【客户编号】右键选择逆透视其他列

经由以上步骤,1月份的数据处理整体流程就完成了。
从视图>高等编辑器中可以看到全体流程所产生的M代码

三、定义函数及调用

接下来只须要将1月份数据处理的流程定义成函数进行调用即可。

自定义函数的第一步是:在let 语句前方输入定义参数的语句:

(DataTable)=>找出参数 DataTable 能替代的地方,将之前的步骤删除,并用变量名替代之前的M代码部分。
修正后的M代码如下:

(DataTable)=>let 删除的顶端行 = Table.Skip(DataTable,2), 提升的标题 = Table.PromoteHeaders(删除的顶端行, [PromoteAllScalars=true]), 变动的类型 = Table.TransformColumnTypes(提升的标题,{{"客户编号", Int64.Type}, {"坚果", Int64.Type}, {"毛巾", Int64.Type}, {"Column4", type any}, {"沐浴露", Int64.Type}, {"巧克力", Int64.Type}, {"收纳盒", Int64.Type}, {"水杯", Int64.Type}, {"糖果", Int64.Type}, {"洗洁精", Int64.Type}, {"洗衣液", Int64.Type}}), 逆透视的其他列 = Table.UnpivotOtherColumns(变动的类型, {"客户编号"}, "属性", "值")in 逆透视的其他列

这里我们对所有月份数据的处理是从删除顶端行开始的,以是删除的顶端行之前的步骤都可以删除。
并将 Table.Skip 函数的第一个参数改为变量名 DataTable。

点击确定,可以看到对1月数据处理的流程已经被转变成了函数,函数名为【Data】。

在查询中通过自定义列调用 Data 函数提取1-4月份数据。

↑ 在自定义列中输入Data,智能添补会自动供应自定义函数

↑ 在自定义列中输入=Data([Data])

末了展开【自定义】列,删除【Data】列,提取【Name】列的日期数据即可。

本站所发布的文字与图片素材为非商业目的改编或整理,版权归原作者所有,如侵权或涉及违法,请联系我们删除,如需转载请保留原文地址:http://www.baanla.com/rsq/208707.html

XML地图 | 自定链接

Copyright 2005-20203 www.baidu.com 版权所有 | 琼ICP备2023011765号-4 | 统计代码

声明:本站所有内容均只可用于学习参考,信息与图片素材来源于互联网,如内容侵权与违规,请与本站联系,将在三个工作日内处理,联系邮箱:123456789@qq.com