dynamic GroubyCumcount函数,计算结果与预期不符

对于dynamic GroubyCumcount函数,我的mebersip设置为[0, 0, 0, 1, 0, 1, 1],那么0号组累计计数结果应该是 [1, 2, 3, 3, 4, 4]吗?实际得到的是 [1, 1, 1, 0, 1, 0, 0],没理解这个函数含义。

请先 登录 后评论

1 个回答

Hao Jia

给您详细介绍一下这个函数。
dynamicGroupCumcount输出的是每个组中元素的数量。
他的实际计算原理是根据membership和prevmembership的变化来计算的。
如果membership=b  prevmembership=a 表示这个元素从a组变成b组,那么a组的累计数就要-1,b组的累计数就要+1。
如果membership=a prevmembership=a 表示这个元素保持a组不变,那么组的累计计数都不用变。

您给的样例是 0 0 0 1 0 1 1 ,其含义表示这个元素的分组变化是 0组,0组,0组,0组->1组,1组->0组,0组->1组,1组 
所以得到的结果如下图

attachments-2022-05-YQQjUmVn627b6b5249514.png
attachments-2022-05-lF2nI2tt627b6b449b96b.png

data = table(0 0 0 1 0 1 1 as `groupID)
select groupID,prev(groupID),dynamicGroupCumcount(groupID, prev(groupID),2) as `Group0`Group1 from data

实际使用中,一般还有一列用来标记它是那个元素,并配合context by使用,这里没有指定他是哪个元素,所以只有一个元素

请先 登录 后评论
  • 1 关注
  • 0 收藏,893 浏览
  • banxianer 提出于 2022-05-11 15:51

相似问题