hive數據分析

    最近在參與某toB項目,數據需離線統計出並推送至線上業務庫,其中用hive做的離線分析。總結寫下常見問題及心得吧。

一.流程類工作簡介:數據統計工作主要分爲四個步驟:指標統計、批量腳本、數據格式、異常流程;

    step1. 指標統計:通過創建表存儲每個指標的值,例如用hive表loan_apply_rate存儲申請通過率;複雜度在於:指標值多,且指標定義可能不明確;

    step2. 批量腳本:將step1創建的各張表綜合成批量執行的perl腳本;複雜度在於:若執行時間長,會影響業務方使用,可自行迭代出大小適中的perl腳本;

    step3.數據格式:新建一張總表,該表存儲所有的指標值;並且將step2生成的錶轉化成業務方期望的數據格式。示例如下:

                             

    step4.異常流程:包括批量腳本父子任務執行順序異常,今日統計的數據異常時數據回滾或重新統計等,數據去重以及數據備份等;

二.hive統計遇到的問題和常見函數

    1.指定爲月末:兩種方案:

     1.1.case
when split(statistics_date,'-')[1] in ('1','3','5','7','8','10','12') then concat(statistics_date,'-31')
when split(statistics_date,'-')[1] in ('4','6','9','11') then concat(statistics_date,'-30')
when cast(split(statistics_date,'-')[0] as int)%4=0 and split(statistics_date,'-')[1] in ('2') then concat(statistics_date,'-29')
when cast(split(statistics_date,'-')[0] as int)%4!=0 and  split(statistics_date,'-')[1] in ('2') then concat(statistics_date,'-28')

end as new_statistics_date

    1.2. date_sub(concat(substr(concat(substr(created_date, 1, 7), '-01'), 1, 7), '-01'), 1)

    2.常用函數:instr; months_between; select row_number()over(partition by cash_id order by modified_date desc) as rn
 from  table_a;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章