hivesql---分析兩張表的指定資料整合到第三張表的指定欄位上
阿新 • • 發佈:2021-01-27
技術標籤:Hive
本文主要講解利用hivesql分析兩張表的指定資料整合到第三張表的指定欄位上
背景說明:從表一中拿取四種任務的總數作為表三中任務總數,表二中拿取task_id的總數作為表三中任務失敗的總數,再在表三中算出告警率=任務失敗告警總數/任務總數
表一:dm_rtc_task_statistics_sum_mf
序號 | 欄位名 | l型別 | s說明 |
1 | task_type | string | 任務型別 |
2 | task_num_0 | string | 未執行 |
3 | task_num_1 | string | 執行中 |
4 | task_num_3 | string | 已終止 |
5 | task_num_6 | string | 啟動失敗 |
表二:dm_rtc_server_log_wf
序號 | 欄位英文名 | 欄位中文名 | 欄位型別 |
---|---|---|---|
1 | date | 日期 | varchar(50) |
2 | ip | ip | varchar(50) |
3 | task_id | 任務id | varchar(50) |
4 | alarm_type | 告警型別 | int |
表三:dm_rtc_server_log_alarm_rate_rel_mf
序號 | 欄位英文名 | 欄位中文名 | 欄位型別 |
1 | task_total_qty | 任務總數 | string |
2 | task_fail_all | 任務失敗總數 | string |
3 | task_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 別名=欄位名