【发布时间】:2020-05-07 18:21:48
【问题描述】:
例如,我想在请求中列出两个日期之间缺少的日期
我的数据:
YEAR_MONTH | AMOUNT
202001 | 500
202001 | 600
201912 | 100
201910 | 200
201910 | 100
201909 | 400
201601 | 5000
我希望请求返回
201912 | 100
201911 | 0
201910 | 300
201909 | 400
201908 | 0
201907 | 0
201906 | 0
.... | 0
201712 | 0
我想要从执行之日起的最后 24 个月
我对日期做了类似的事情,但不是 YEAR MONTH yyyyMM
select date_sub(s.date_order ,nvl(d.i,0)) as date_order, case when d.i > 0 then 0 else s.amount end as amount
from
(--find previous date
select date_order, amount,
lag(date_order) over(order by date_order) prev_date,
datediff(date_order,lag(date_order) over(order by date_order)) datdiff
from
( --aggregate
select date_order, sum(amount) amount from your_data group by date_order )s
)s
--generate rows
lateral view outer posexplode(split(space(s.datdiff-1),' ')) d as i,x
order by date_order;
我使用带有 Apache Hive 连接器的 Cassandra 数据库
有人可以帮我吗?
【问题讨论】:
标签: sql hive cassandra hiveql date-range