概述
通过上面的步骤,已经完成数据中台ODDA建模,接下来实战一下。
GMV(全称Gross Merchandise Volume),即商品交易总额,是成交总额(一定时间段内)的意思。多用于电商行业,一般包含拍下未支付订单金额。
在电商网站定义里面是网站成交金额。这个实际指的是拍下订单金额, 包含付款和未付款的部分。
需求
计算GMV,包含付款和未付款的部分。
建表
- ads_gmv_ddl.sql
-- 进入数据库
use mall;
-- 创建gmv表
drop table ads_gmv_sum_day;
create table ads_gmv_sum_day
(
dt string comment '统计日期 ' ,
gmv_count bigint comment '每日gmv订单个数',
gmv_amount decimal(16,2) COMMENT '每日gmv订单总金额',
gmv_payment decimal(16,2) COMMENT '当日支付金额'
) COMMENT '每日GMV统计'
row format delimited fields terminated by '\t'
location '/warehouse/mall/ads/ads_gmv_sum_day/'
- 执行建表文件
hive -f /home/warehouse/sql/ads_gmv_ddl.sql
脚本
- 编写脚本,完成dws的数据处理
#!/bin/bash
# 定义变量方便修改
APP=mall
hive=hive
# 如果是输入的日期按照取输入日期;如果没输入日期取当前时间的前一天
if [ -n $1 ] ;then
log_date=$1
else
log_date=`date -d "-1 day" +%F`
fi
sql="
set hive.exec.dynamic.partition.mode=nonstrict;
insert into table "$APP".ads_gmv_sum_day
select
'$log_date' dt ,
sum(order_count) gmv_count ,
sum(order_amount) gmv_amount ,
sum(payment_amount) payment_amount
from "$APP".dws_user_action
where dt ='$log_date'
group by dt
;
"
$hive -e "$sql"
- 执行脚本
[root@node03 shell]# ./ads_gmv.sh 2021-03-24
验证结果
hive> select * from ads_gmv_sum_day ;
OK
2021-03-24 300 160700 80931
Time taken: 0.109 seconds, Fetched: 1 row(s)