Power Query学习之Table.Group第四、五参数

本文详细解释了Table.Group函数的groupKind和comparer参数如何影响分组行为,以及它们在全局和局部分组中的应用,避免了重复分组错误。
摘要由CSDN通过智能技术生成

函数原型:Table.Group(table as table, key as any, aggregatedColumns as list, optional groupKind as nullable number, optional comparer as nullable function) as table

案例数据原表

一、可选参数分组类型groupKind对分组的影响

表示分组是局部分组还是全局分组

当groupKind=0时,不相连的”语文“分两组

当groupKind=1时,不相连的”语文“分到一组上。

二、第五个参数 optional comparer是一个可选函数类型参数,有2个参数通常用(x,y)=>Number.From()固定格式来处理所判断后的条件值。x表示分组的第一个记录,y表示剩余未分组的记录(不包括x记录)。现在讨论第五参数值,如果第五个参数为非零分组结束,如果为0那么归入分组。为了方便我们先将第四个参数设置为0,后面再讨论第四个参数为1时对第五个参数的影响。

我们先让第五个参数返回值恒为1既(x,y)=> 1,就起不到分组的作用了,当给定x值时,(x,y)=> 1都为1,就建立分组结束新建分组,既每条记录开始分组就结束了(每条记录一个分组)。

再让第五个参数返回值恒为0既(x,y)=> 0,也起不到分组的作用了,当给定x值时,(x,y)=> 0都为0,就归入分组,既所有记录都归入分组。

三、groupKind参数对第五个参数的影响

前面已经举过groupKind=0时的例子,如果groupKind=1分组会受到影响,如果groupKind=1,(x,y)=> 1,那么按分组每个记录一个分组,但是指定全局分组,那么在新分组的表中会出现一样的分组导致错误。数学只有1条记录,不会出现错误。

如果groupKind=1,(x,y)=> 0,所有记录分配到一个组中,没有相同的分组记录,也不会出现错误。

四、x,y的关系

为了避免出现错误,将groupKind=0,对x,y关系进行讨论。

先单独看看x,x表示新建分组的第一条记录,开始分组第一条记录x="语文",(x,y)=>Number.From(x="语文")返回值为1,结束分组;同理第二条语文也分为一组;第三条x=数学,对于这条x=”语文“返回值为0,后面所有的记录都归入数学这一组中,包括最后一条语文。

y与x的关系

x是新建组的第一条,y是除x外剩余的记录,当第一条x=语文,判断第二条语文是否加入第一条的分组时,(x,y)=> Number.From(y="语文")函数返回1,结束分组,新建第二个语文分组。当第二个语文分组建立起来后,y=“数学”“英语”根据(x,y)=> Number.From(y="语文")函数返回0归入第二分组中;如果y包含x,那么第二条语文时,(x,y)=> Number.From(y="语文")返回的值为1,就应该结束分组,所以y不包含x;当碰到第三个语文(x,y)=> Number.From(y="语文")函数返回1结束分组,新建第三个分组语文。从该案例也可以证明y是除x以外的剩余记录。

将groupKind=1时,结果出现重复的语文分组错误。

再举一个y不包含x的例子,compare函数Number.From(x = "语文" and y="语文"),判断第一条语文记录时,返回1,x是第一条语文记录,y是第二条语文记录,结束分组;判断第二条语文时,如果y包含x那么compare函数返回1,应该结束分组,然而并没有结束分组;如果y不包含x,x=”语文",y="数学",返回0,加入分组。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值