Hive - 如何从 Hive 获取最近几个月的数据?
Posted
技术标签:
【中文标题】Hive - 如何从 Hive 获取最近几个月的数据?【英文标题】:Hive - How do I get last months of data from Hive? 【发布时间】:2015-06-03 13:07:14 【问题描述】:如何从 Hive 获取最近 2 个月的数据?
这是我的尝试:
select (date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),
2 - month(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'))
));
这导致 2015-05-30。结果应该是:如果今天是“2015-06-03”,那么过去两个月的结果应该是:“2015-04-01”。请注意,我将每月的第一天作为结果。我在这里做错了什么?谢谢!
补充说明:
在 SQL 中是不是很容易得到:
select * from date_field >= DATEADD(MONTH, -2, GETDATE());
【问题讨论】:
为什么两个月前是 2015-04-01 而不是 2015-04-03? ***.com/questions/27567896/… 【参考方案1】:date_add 添加天数,而不是月数。下面的行计算为-4
2 - month(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'))
所以你基本上是从“2015-06-03”中减去 4 天,这就是为什么你会得到结果“2015-05-30”。
据我所知,在 Hive 中没有直接减去月份的方法。您可以考虑的解决方案:
-
减去 60 天,但这不会为您提供准确的结果。
编写自定义 UDF 以返回 2 个月前的日期。
在脚本中计算日期,并将其传递给 hive。
【讨论】:
以上是关于Hive - 如何从 Hive 获取最近几个月的数据?的主要内容,如果未能解决你的问题,请参考以下文章