首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用HiveQL从日期开始的特定季度数

问使用HiveQL从日期开始的特定季度数
EN

Stack Overflow用户
提问于 2017-06-30 13:33:17
回答 1查看 671关注 0票数 1

我正在尝试使用表格中的牵引日期带来特定的季度数(8)。日期格式为YYYYMMDD

我可以编写一个select using case来根据当前月份显示特定的季度。

我可以使用trunc函数找到月初,但找不到逻辑来带来最后8个季度的数据

EN

回答 1

Stack Overflow用户

发布于 2017-07-02 16:57:18

首先将日期转换为配置单元格式。然后使用DENSE_RANK()按季度对行进行编号(按年排序和按季度排序),然后按rnk<=8过滤:

代码语言:javascript
复制
select * from 
(
--calculate DENSE_RANK
select s.*, DENSE_RANK() over(order by year(your_date) desc, quarter(your_date) desc) as rnk
from
(
--convert date to YYYY-MM-DD format
  select t.*, from_unixtime(unix_timestamp(),'yyyyMMdd') your_date 
    from table_name t
--Also restrict your dataset to select only few last years here
--because you do not need to scan all data
--so add WHERE clause here
)s
)s where rnk<=8;

请参阅此处的函数手册:https://cwiki.apache.org/confluence/display/Hive/LanguageManual+UDF

您可以在了解数据和表的分区方式的情况下优化此查询,限制数据集。如果您需要查询每个键的最近8个季度,还需要在over()中添加partition by子句。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44839208

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档