假设我有以下数据:
Year Day Amount
2015 1 2
2015 2 3
2015 3 4
2015 4 5
使用窗口函数或聚合,我想为每一行获得一个数字,表示"基于前n行的线性"。在这个简单的例子中,对于具有day = 4
的行,由于明显的原因,基于之前的n天,其中n是3,线性度将相当高。
当以前的一些日子不存在时,问题就会弹出,在这种情况下,我只想使用默认值-1,例如,以表示其他情况。
我没有一个确切的值来表示线性,但作为一个例子,类似于相关系数,1可以表示高线性,而0没有。
编辑:
作为一个临时用例,我所做的是在每行中添加一列,表示日期(并考虑年份),并使用一个窗口函数,带滞后来查找之前的4个值(如果存在的话)。在得到(或没有得到这些值)后,我做了一个简单的计算来计算每个点组合的差异,并使用除法来查看它们之间的距离(1将是最好的)。很抱歉,由于代码共享协议,我无法共享任何代码。
- 生成包含要估计的所有日期的序列
- 左外部将其与输入连接
- 将
Amount
的null
值替换为要估计的值 - 转换为RDD
- 为
2015 4
生成具有下界的密钥->生成密钥[2015 4
,2015 3
,2015 2
]并压平 - groupByKey
- 组的估计