9(13)6.2.2 ADS層加載數據腳本13

6.2.2 ADS層加載數據腳本

1)在hadoop102的/home/atguigu/bin目錄下創建腳本
[atguigu@hadoop102 bin]$ vim ads_uv_log.sh
在腳本中編寫如下內容
#!/bin/bash

定義變量方便修改

APP=gmall
hive=/opt/module/hive/bin/hive

如果是輸入的日期按照取輸入日期;如果沒輸入日期取當前時間的前一天

if [ -n “$1” ] ;then
do_date=$1
else
do_date=date -d "-1 day" +%F
fi

sql="
set hive.exec.dynamic.partition.mode=nonstrict;

insert into table “APP".adsuvcountselectAPP".ads_uv_count select 'do_date’ dt,
daycount.ct,
wkcount.ct,
mncount.ct,
if(date_add(next_day(‘dodate,MO),1)=do_date','MO'),-1)='do_date’,‘Y’,‘N’) ,
if(last_day(‘dodate)=do_date')='do_date’,‘Y’,‘N’)
from
(
select
'dodatedt,count()ctfrom"do_date' dt, count(*) ct from "APP”.dws_uv_detail_day
where dt=‘dodate)daycountjoin(selectdo_date' )daycount join ( select 'do_date’ dt,
count () ct
from "APP".dwsuvdetailwkwherewkdt=concat(dateadd(nextday(APP".dws_uv_detail_wk where wk_dt=concat(date_add(next_day('do_date’,‘MO’),-7),’_’ ,date_add(next_day(‘dodate,MO),1)))wkcountondaycount.dt=wkcount.dtjoin(selectdo_date','MO'),-1) ) ) wkcount on daycount.dt=wkcount.dt join ( select 'do_date’ dt,
count (
) ct
from "APP".dwsuvdetailmnwheremn=dateformat(APP".dws_uv_detail_mn where mn=date_format('do_date’,‘yyyy-MM’)
)mncount on daycount.dt=mncount.dt;
"

hivee"hive -e "sql"
2)增加腳本執行權限
[atguigu@hadoop102 bin]$ chmod 777 ads_uv_log.sh
3)腳本使用
[atguigu@hadoop102 module]$ ads_uv_log.sh 2019-02-11
4)腳本執行時間
企業開發中一般在每日凌晨30分~1點
5)查詢導入結果
hive (gmall)> select * from ads_uv_count;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章