hivesql---分析两张表的指定数据整合到第三张表的指定字段上

本文主要讲解利用hivesql分析两张表的指定数据整合到第三张表的指定字段上

背景说明:从表一中拿取四种任务的总数作为表三中任务总数,表二中拿取task_id的总数作为表三中任务失败的总数,再在表三中算出告警率=任务失败告警总数/任务总数


表一:dm_rtc_task_statistics_sum_mf

序号字段名l类型s说明
1task_typestring任务类型
2task_num_0 string未运行
3task_num_1 string运行中
4task_num_3string已终止
5task_num_6 string启动失败

表二:dm_rtc_server_log_wf

序号

字段英文名

字段中文名

字段类型

1date日期varchar(50)
2ipipvarchar(50)
3task_id任务idvarchar(50)
4alarm_type告警类型int

表三:dm_rtc_server_log_alarm_rate_rel_mf

序号字段英文名字段中文名字段类型
1task_total_qty任务总数string
2task_fail_all任务失败总数string
3task_alarm_rate任务告警率string

代码示例:

-- 计算任务总量,失败告警数量以及任务失败告警率
insert
  overwrite table dm_rtc_server_log_alarm_rate_rel_mf partition (inc_month = '$[time(yyyyMM,-1M)]') 表为月分区增量表,分区格式为$[time(yyyyMM,-1M)]
select
  task_total_qty,
  task_fail_all,
  round((task_fail_all / task_total_qty), 4) as task_alarm_rate
from
  (
    select
      sum(
        task_num_1 + task_num_0 + task_num_3 + task_num_6
      ) as task_total_qty
    from
      dm_rtc_task_statistics_sum_mf
    where
      task_type = '15'  此处表示对表中全部任务,表中全部任务的task_type=15
      and inc_month =  '$[time(yyyyMM,-1M)]'
  ) tb,
  (
    select
      count(distinct task_id) as task_fail_all
    from
      dm_rtc_server_fail_log_mi
      where inc_month =  '$[time(yyyyMM,-1M)]'  #此处表示分区,表中的分区格式为$[time(yyyyMM,-1M)]
  ) t2;

查询示例:

 

几个函数说明:

 

1.round函数

round(x,d)
x,表示要处理的数,d表示保留的小数的个数

2.distinct :去重

SELECT DISTINCT 字段名  FROM 表名;

关键词 DISTINCT 用于返回唯一不同的值。

3.count()函数

COUNT(column_name) 函数返回指定列的值的数目(NULL 不计入)

用法:

SELECT COUNT(column_name) FROM table_name;

查询总记录数:
SELECT COUNT(*) AS nums FROM access_log;

4.as:别名关键词

select 字段 as 别名  ==  select 字段名  别名    ==  select 别名=字段名

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值