天天看点

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

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

事实数据

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

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

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

汇总数据

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

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

分组区间

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

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

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

用 PQ 新建列

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

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

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

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

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

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

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

在此处的含义是:

  • 对于当前汇总表的每行,因此,用了 each;
  • 考察 Range,检索 Range 中满足条件的行;
  • 应该有且只有一行满足条件。

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

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

总结

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

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

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

继续阅读