Power Query 数据规范利器:Table.AddFuzzyClusterColumn

本文介绍了Power Query的Table.AddFuzzyClusterColumn函数,用于对数据进行模糊匹配和分组,实现数据规范。通过基本用法和进阶示例,展示了如何处理英文和中文的不规范数据,包括单词大小写、拼写错误、中文混杂拼音等问题,并解释了Culture、Threshold和TransformationTable参数的应用。
摘要由CSDN通过智能技术生成

本文讲解新M函数Table.AddFuzzyClusterColumn的强大功能以及用法。

关于Table.AddFuzzyClusterColumn

Table.AddFuzzyClusterColumn是Power Query的表函数之一,它可以对数据进行模糊匹配并分组,从而规范数据源中的数据,什么意思呢?

一个简单的例子,比如地名“北京”,在数据源中它可能是“北 京”,“北京市”,“Beijing” 甚至“北平”,而该函数需要解决的,就是由数据录入不规范,数据本身的标准不统一等原因导致的这种数据杂乱的问题。为解决此问题,多数情况下,简单替换的方法显然不切实际,而该M函数可以使其规范化,这在数据清洗中特别实用。幸运的是,自Power BI Desktop上次更新(2020年8月)以来,已增加了对该函数的支持。下文讲解其具体用法。

注:在CDS版本的PQ编辑器也可使用,但在Excel的PQ编辑器中暂不受支持(以Excel 2016为例)。

基本用法

对于基本用法,我想引用文档中的举例的数据进行说明。首先我们有一个简单的表,里面包含英文城市温哥华和西雅图(如下),你可以留意到其中的单词大小写不一,且存在拼写错误(如seattl):

在这里插入图片描述
现在,我们回到Table.AddFuzzyClusterColumn函数,其用法如下:

Table.AddFuzzyClusterColumn(
源表【必要】,目标列列名【必要】,规整后的列名【必要】,其他参数【可选】
)

因此,针对以上数据,编写M语句如下:

= Table.AddFuzzyClusterColumn(
        #"Changed Type","Location","Locati
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
可以使用循环遍历来实现这个转换过程,具体步骤如下: 1. 创建一个新的空数组 result 用于存储最终结果; 2. 使用数组的 forEach 方法遍历 time 数组,对于每个时间,都创建一个空对象 obj; 3. 然后再使用数组的 forEach 方法遍历 arr 数组,对于每个设备,都在 obj 中添加一个属性,属性名为设备名称,属性值先设置为空字符串; 4. 接下来再遍历 arr_1 数组,对于每个设备,找到对应的时间和数据,将数据中的 power 属性值赋值给 obj 中对应设备的属性值; 5. 最后将 obj 添加到 result 数组中; 6. 返回 result 数组即可。 代码示例如下: ```javascript let result = []; time.forEach(timeVal => { let obj = { time: timeVal }; arr.forEach(device => { obj[device] = ""; }); arr_1.forEach(data => { if (data.key === device) { let mdData = data.mdData; mdData.forEach(item => { if (item.power !== undefined && item.power !== "") { if (timeVal === "2023-05-30 " + item.time) { obj[device] = item.power; } } }); } }); result.push(obj); }); console.log(result); ``` 输出结果如下: ```javascript [ { time: '2023-05-30 17', power_lift: '417.48', power_all: '117.48', power_dianti: '217.48', power_lighting: '317.48' }, { time: '2023-05-30 18', power_lift: '417.5', power_all: '117.5', power_dianti: '217.5', power_lighting: '317.5' }, { time: '2023-05-30 19', power_lift: '417.68', power_all: '1417.68', power_dianti: '2417.68', power_lighting: '3417.68' }, { time: '2023-05-30 20', power_lift: '417.88', power_all: '1417.88', power_dianti: '2417.88', power_lighting: '3417.88' } ] ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DAVIS-BI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值