小猫咪不是猫 2023-06-18 21:48 采纳率: 0%
浏览 16
已结题

hiveSQL如何查看跑了100天的分区表的全量数据

hiveSQL中,如何查看分区表的全量数据?我写的代码的问题是什么?
加入分区表已经运行了100天,我现在要输出这100天的所有数据,也就是全量。

我写的代码:

set hive.dynamic.partition=true;
set hive.dynamic.partition.mode=nonstrict;

select t.*
from 
(
    select *
    from table_a
  where etl_dt<=date_sub(current_date, 100)
  union all
    select *
    from table_b
  where etl_dt<=date_sub(current_date, 99)
) t

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-06-19 08:19
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:
    • 你可以看下这个问题的回答https://ask.csdn.net/questions/7778009
    • 这篇博客也不错, 你可以看下HiveSql一天一个小技巧:多指标累计去重问题
    • 除此之外, 这篇博客: HiveSQL一天一个小技巧:如何精准计算非连续日期累计值【闪电快车面试题】中的 问题补充:如何将缺失日期及缺失值补充完整呢? 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

      直接根据相邻日期缺失的时间间隔,利用posexplode()函数将缺失日期及数据展开补齐,具体SQL如下:

      with data as
               (
                   select 'AAAA' as contract, '2018-12-21' as value_date, 9439.30 as amount, 12 as term
                   union all
                   select 'AAAA' as contract, '2019-03-21' as value_date, 9439.30 as amount, 12 as term
                   union all
                   select 'AAAA' as contract, '2019-06-21' as value_date, 9439.30 as amount, 12 as term
                   union all
                   select 'AAAA' as contract, '2019-09-21' as value_date, 9439.30 as amount, 12 as term
                   union all
                   select 'BBBB' as contract, '2018-12-02' as value_date, 9439.30 as amount, 10 as term
                   union all
                   select 'BBBB' as contract, '2019-02-02' as value_date, 9439.30 as amount, 10 as term
                   union all
                   select 'BBBB' as contract, '2019-06-02' as value_date, 9439.30 as amount, 10 as term
                   union all
                   select 'BBBB' as contract, '2019-09-02' as value_date, 9439.30 as amount, 10 as term
               )
      select contract,
             add_months(value_date, pos) value_date,
             amount
      from (
               select contract,
                      value_date,
                      amount,
                      term,
                      lead(value_date, 1, value_date) over (partition by contract order by value_date) next_value_date
               from data) tmp lateral view  posexplode (
              split (space( cast(months_between(next_value_date, value_date) as int)), " (?!$)")
      ) tmp AS pos,val;

      结果如下:

    • 您还可以看一下 CSDN就业班老师的第六章:Hive数据仓库基础知识课程中的 HiveHQL-Part1小节, 巩固相关知识点

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 6月21日
  • 创建了问题 6月18日

悬赏问题

  • ¥15 使用MATLAB进行余弦相似度计算加速
  • ¥15 服务器安装php5.6版本
  • ¥15 我想用51单片机和数码管做一个从0开始的计数表 我写了一串代码 但是放到单片机里面数码管只闪烁一下然后熄灭
  • ¥20 系统工程中,状态空间模型中状态方程的应用。请猛男来完整讲一下下面所有问题
  • ¥15 我想在WPF的Model Code中获取ViewModel Code中的一个参数
  • ¥15 arcgis处理土地利用道路 建筑 林地分类
  • ¥20 使用visual studio 工具用C++语音,调用openslsx库读取excel文件的sheet问题
  • ¥100 寻会做云闪付tn转h5支付链接的技术
  • ¥15 DockerSwarm跨节点无法访问问题
  • ¥15 使用dify通过OpenAI 的API keys添加OpenAI模型时报了“Connection Error”错误