Hive 用于从当前分区日期获取数据的配置单元等效于

Hive 用于从当前分区日期获取数据的配置单元等效于,hive,Hive,我一直在尝试在Hive中自动生成一个报告,该报告要求获取过去30天的数据 SQL中的等效项: select * from som_table where part >= Sysdate-30 and part < sysdate-1 我正在使用下面的查询,但我无法启动MR作业 select * from some_table where part >= date_add(date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd

我一直在尝试在Hive中自动生成一个报告,该报告要求获取过去30天的数据

SQL中的等效项:

select * from som_table where part >=  Sysdate-30 and part < sysdate-1
我正在使用下面的查询,但我无法启动MR作业

select *
from some_table
where part >= date_add(date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),-1),1 - day(date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),-1)))
and part < date_add(FROM_UNIXTIME(UNIX_TIMESTAMP(), 'yyyy-MM-dd'),-1)

我搜索了,但它说我必须通过脚本找到解决方案,但我需要在另一个作业中运行此查询。

我认为您在Hive版本中的公式比需要的更复杂。请尝试以下操作:

Select
Date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP()), 30) as thirty_days_ago,
Date_sub(FROM_UNIXTIME(UNIX_TIMESTAMP()), 1) as one_day_ago

我搜索了,但它说我必须通过脚本找到解决方案,但我需要在另一个作业中运行此查询。请解释一下这是什么意思?您看到的具体错误是什么?我简直无法理解为什么要将SysDate-30转换为一个非常复杂的公式,最终生成SysDate-daysdate。无论如何,SysDate-30是Oracle方言,而不是标准的SQL.Sub-1=Add+1,即明天,而不是昨天-