在 Power BI 中很容易实现年龄分组,以及通过 DAX 也解决过年龄分组的问题,那么,如果一定要通过 Power Query 解决会是怎样的呢?
事实数据
首先,有一份事实数据,例如订单数据,如下:
看不清?这不重要,这就是一张可能很大的表。
汇总数据
将原始数据汇总,可以得到汇总数据,如下:
分组区间
希望将汇总数据按照分组区间去划分,需要提前准备一个分组区间。如下:
现在要做的就是要把分组区间对接到汇总数据中。
用 PQ 新建列
这里需要一个 PQ 的自定义函数来解决,新建列,然后写出自定义函数,如下:
其中,Power Query 的 M 表达式如下:
= Table.AddColumn(排序的行, "所在分组", each Table.SelectRows( Range , ( x )=> x[左边]<=[销售额] and [销售额]<x[右边] ) )
其中,Table.SelectRows 从预先定义的数据区间 Range 中找到满足条件的唯一行内容,
这里需要理解的高级 Power Query M 函数概念就是 (x) => ... 的自定义函数机制。
在此处的含义是:
- 对于当前汇总表的每行,因此,用了 each;
- 考察 Range,检索 Range 中满足条件的行;
- 应该有且只有一行满足条件。
再将其展开,就得到了结果:
总结
在 Power Query 完成为数据分组区间也是一个有意义的场景,在这个场景中,还可以重复理解 each 和 (x)=> ... 联合运作的方式和后者的必要性。
BI真经 - 让数据真正成为你的力量
↙