我有这样一个数据集:
ticker | value | year
A 1 2008
A 2 2008
A 5 2010
A 6 2006
B 7 2010
我正在尝试编写一个hivesql,它在ticker上返回一个groupby,其中的值是在一定范围内对应于每年的最大值列表。在本例中,如果范围是2008-2010,它将返回类似的值(不确定结果的结构实际上是什么样子,我希望您能够理解我的意思):
A [(year: 2008, value: 2), (year: 2009, value: 0 (found no value for this year)), (year: 2010, value: 5)]
B [(year: 2008, value: 0), (year: 2009, value: 0), (year: 2010, value: 7)]
特别是,我不明白如何要求hive返回与数据集中某个值的范围相对应的值列表。如果你能帮忙,我会很高兴的。
2条答案
按热度按时间kse8i1jr1#
如果只需要有效值,可以使用where-between
ckocjqey2#
如果你想为每一个股票代码和年份排一行,那么使用
cross join
生成行和left join
引入价值观。多年来,使用子查询生成值非常容易:对于较大的范围,可以使用如下子查询: