PQ 中一个技巧实现如何将数据自定义区间分组

文章介绍了如何在PowerBI中利用PowerQuery而不是DAX进行年龄分组,通过创建自定义函数在M表达式中实现数据按预定义区间划分。具体方法是使用Table.AddColumn结合each和自定义条件函数(x)=>...,确保对每行数据找到匹配的分组区间,最终达到分组的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在 Power BI 中很容易实现年龄分组,以及通过 DAX 也解决过年龄分组的问题,那么,如果一定要通过 Power Query 解决会是怎样的呢?

事实数据

首先,有一份事实数据,例如订单数据,如下:

outside_default.png

看不清?这不重要,这就是一张可能很大的表。

汇总数据

将原始数据汇总,可以得到汇总数据,如下:

outside_default.png

分组区间

希望将汇总数据按照分组区间去划分,需要提前准备一个分组区间。如下:

outside_default.png

现在要做的就是要把分组区间对接到汇总数据中。

用 PQ 新建列

这里需要一个 PQ 的自定义函数来解决,新建列,然后写出自定义函数,如下:

outside_default.png

其中,Power Query 的 M 表达式如下:

= Table.AddColumn(排序的行, "所在分组", each Table.SelectRows( Range , ( x )=> x[左边]<=[销售额] and [销售额]<x[右边] ) )

其中,Table.SelectRows 从预先定义的数据区间 Range 中找到满足条件的唯一行内容,

outside_default.png

这里需要理解的高级 Power Query M 函数概念就是 (x) => ... 的自定义函数机制。

在此处的含义是:

  • 对于当前汇总表的每行,因此,用了 each;

  • 考察 Range,检索 Range 中满足条件的行;

  • 应该有且只有一行满足条件。

再将其展开,就得到了结果:

outside_default.png

总结

在 Power Query 完成为数据分组区间也是一个有意义的场景,在这个场景中,还可以重复理解 each 和 (x)=> ... 联合运作的方式和后者的必要性。

outside_default.png

BI真经 - 让数据真正成为你的力量

点击“阅读原文”进入学习中心

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值