SQL_ODPS-D2-离线数仓-7-临时查询

SQL_ODPS-D2-离线数仓-7-临时查询

包括ods dwd dws ads数仓的建表语句 以及 手动导入数据语句

test

--odps sql 
--********************************************************************--
--author:i
--create time:0000-00-00 00:00:00
--********************************************************************--
SELECT  *
FROM    ods_base_log
WHERE   ds = '00000000'
;

--测试FlatEventUDTF自定义函数 一进多出
SELECT  FLATEVENTUDTF(GET_JSON_OBJECT(log_string,'$.et')) AS (event_time,event_name,event_json)    --$.et 就是事件
FROM    ods_base_log
WHERE   ds = '00000000'
;

--手动将ods层数据导入到dwd层
INSERT OVERWRITE TABLE dwd_start_log PARTITION(ds,hh,mm)
SELECT  GET_JSON_OBJECT(log_string,'$.cm.mid') mid
        ,GET_JSON_OBJECT(log_string,'$.cm.uid') user_id
        ,GET_JSON_OBJECT(log_string,'$.cm.vc' ) version_code
        ,GET_JSON_OBJECT(log_string,'$.cm.vn') version_name
        ,GET_JSON_OBJECT(log_string,'$.cm.l') lang
        ,GET_JSON_OBJECT(log_string,'$.cm.sr') source
        ,GET_JSON_OBJECT(log_string,'$.cm.os') os
        ,GET_JSON_OBJECT(log_string,'$.cm.ar') area
        ,GET_JSON_OBJECT(log_string,'$.cm.md') model
        ,GET_JSON_OBJECT(log_string,'$.cm.ba') brand
        ,GET_JSON_OBJECT(log_string,'$.cm.sv') sdk_version
        ,GET_JSON_OBJECT(log_string,'$.cm.hw') height_width
        ,GET_JSON_OBJECT(log_string,'$.cm.g') email
        ,GET_JSON_OBJECT(log_string,'$.cm.hw') sv
        ,GET_JSON_OBJECT(log_string,'$.cm.ln') ln
        ,GET_JSON_OBJECT(log_string,'$.cm.la') la
        ,GET_JSON_OBJECT(event_view.event_json,'$.entry') entry
        ,GET_JSON_OBJECT(event_view.event_json,'$.loading_time') loading_time
        ,GET_JSON_OBJECT(event_view.event_json,'$.action') action
        ,GET_JSON_OBJECT(event_view.event_json,'$.open_ad_type') open_ad_type
        ,GET_JSON_OBJECT(event_view.event_json,'$.detail') detail
        ,event_view.event_time
        ,ds
        ,hh
        ,mm
FROM    ods_base_log
LATERAL VIEW FLATEVENTUDTF(GET_JSON_OBJECT(log_string,'$.et')) event_view AS event_time,event_name,event_json
WHERE   ds = '00000000'
AND     event_view.event_name = 'start'
;

--查看导入结果
SELECT  *
FROM    dwd_start_log
WHERE   ds = '00000000'
LIMIT   3
;
-- mid	user_id	version_code	version_name	lang	source	os	area	model	brand	sdk_version	email	height_width	network	lng	lat	entry	open_ad_type	action	loading_time	detail	event_time	ds	hh	mm
-- 0	0	9	1.0.7	es	V	8.1.1	MX	HTC-0	HTC	V2.5.9	640*960	QED8OB5D@gmail.com	640*960	-112.5	29.2	3	13	1	2		1000001265269	00000000	01	15
--手动将dwd层数据导入到dws层

INSERT OVERWRITE TABLE dws_uv_detail_d PARTITION(ds,hh,mm)
SELECT  mid
        ,user_id
        ,version_code
        ,version_name
        ,lang
        ,source
        ,os
        ,area
        ,model
        ,brand
        ,sdk_version
        ,email
        ,height_width
        ,network
        ,lng
        ,lat
        ,event_time
        ,ds
        ,hh
        ,mm
FROM    (
            SELECT  *
                    ,row_number() OVER(PARTITION BY mid ORDER BY event_time ASC) rn
            FROM    dwd_start_log
            WHERE   ds = '00000000'
        ) 
WHERE   rn = 1
;

--查看导入结果
SELECT  *
FROM    dws_uv_detail_d
WHERE   ds = '00000000'
LIMIT   5
;
-- mid	user_id	version_code	version_name	lang	source	os	area	model	brand	sdk_version	email	height_width	network	lng	lat	event_time	ds	hh	mm
-- 999	999	16	1.2.0	es	W	8.1.0	MX	sumsung-4	Sumsung	V2.2.9	1080*1920	W4ZM4MEQ@gmail.com	1080*1920	-86.9	12.8	1583581530558	00000000	01	15
-- 1	1	11	1.2.0	es	R	8.1.4	MX	Huawei-4	Huawei	V2.1.7	640*1136	QF4951T5@gmail.com	640*1136	-101.2	21.8	1583553705570	00000000	01	15
-- 10	10	16	1.2.2	en	E	8.0.8	MX	sumsung-10	Sumsung	V2.7.8	750*1134	K3ZL1FP0@gmail.com	750*1134	-96.7	0.8	1583514130824	00000000	01	15
-- 100	100	18	1.0.5	pt	G	8.1.6	MX	HTC-11	HTC	V2.7.3	640*960	W5920706@gmail.com	640*960	-84.8	25.9	1583564803755	00000000	01	15
-- 101	101	14	1.2.1	en	L	8.2.0	MX	Huawei-0	Huawei	V2.5.5	750*1134	1Q2V0YZ5@gmail.com	750*1134	-72.9	-4.6	1583574821599	00000000	01	15

--ods层原数据层建表语句
CREATE TABLE `ods_order_info_di` 
(
    `id` STRING COMMENT '订单编号'
    ,`total_amount` DOUBLE COMMENT '订单金额'
    ,`order_status`STRING COMMENT '订单状态'
    ,`user_id` STRING COMMENT '用户id'
    ,`payment_way` STRING COMMENT '支付方式'
    ,`out_trade_no` STRING COMMENT '支付流水号'
    ,`create_time` STRING COMMENT '创建时间'
    ,`operate_time` STRING COMMENT '操作时间'
    ,`province_id`STRING COMMENT '省份'
)
COMMENT '订单表'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_order_deatail_di` 
(
    `id` STRING COMMENT '明细id'
    ,`order_id` STRING COMMENT '订单id'
    ,`sku_id` DOUBLE COMMENT '商品id'
    ,`sku_name` STRING COMMENT '商品名称'
    ,`order_price` DOUBLE COMMENT '购买价格'
    ,`sku_num` BIGINT COMMENT '购物数量'
    ,`create_time` STRING COMMENT '创建时间'
)
COMMENT '订单明细'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_sku_info_df` 
(
    `id` STRING COMMENT 'skuid'
    ,`spu_id` STRING COMMENT '订单id'
    ,`price` DOUBLE COMMENT '价格'
    ,`sku_name` STRING COMMENT '商品名称'
    ,`sku_desc` STRING COMMENT '商品描述'
    ,`weight` DOUBLE COMMENT '重量(千克)'
    ,`tm_id` STRING COMMENT '品牌 id'
    ,`category3_id` STRING COMMENT '品类id'
    ,`create_time` STRING COMMENT '创建时间'
)
COMMENT '商品信息'
PARTITIONED BY 
(
    ds STRING
)
;

drop table `ods_user_info_df` ;

CREATE TABLE `ods_user_info_df` 
(
    `id` STRING COMMENT '用户id'
    ,`name` STRING COMMENT '姓名'
    ,`birthday` STRING COMMENT '生日'
    ,`gender` STRING COMMENT '性别'
    ,`email` STRING COMMENT '邮箱'
    ,`user_level` STRING COMMENT '用户等级'
    ,`create_time` STRING COMMENT '创建时间'
)
COMMENT '用户信息'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_base_category3_df` 
(
    `id` STRING COMMENT '三级品类id'
    ,`name` STRING COMMENT '名称'
    ,`category2_id` STRING COMMENT '二级品类id'
)
COMMENT '三级品类信息'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_base_trademark_df` 
(
    `tm_id` STRING COMMENT '品牌id'
    ,`tm_name` STRING COMMENT '名称'
)
COMMENT '品牌信息'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_base_category1_df` 
(
    `id` STRING COMMENT '一级品类id'
    ,`name` STRING COMMENT '名称'
)
COMMENT '一级品类信息'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_base_category2_df` 
(
    `id` STRING COMMENT '二级品类id'
    ,`name` STRING COMMENT '名称'
    ,`category1_id` STRING COMMENT '一级品类id'
)
COMMENT '二级品类信息'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_payment_info_di` 
(
    `id` BIGINT COMMENT '编号'
    ,`out_trade_no` STRING COMMENT '对外业务编号'
    ,`order_id` STRING COMMENT '订单编号'
    ,`user_id` STRING COMMENT '用户编号'
    ,`alipay_trade_no` STRING COMMENT '支付宝交易流水号'
    ,`total_amount` DOUBLE COMMENT '支付类型'
    ,`subject` STRING COMMENT '交易内容'
    ,`payment_type` STRING COMMENT '支付类型'
    ,`payment_time` STRING COMMENT '支付时间'
)
COMMENT '支付流水表'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_base_region_df` 
(
    `id` BIGINT COMMENT '地区id'
    ,`region_name` STRING COMMENT '地区名称'
)
COMMENT '地区'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ods_base_province_df` 
(
    `id` BIGINT COMMENT '品牌id'
    ,`name` STRING COMMENT '名称'
    ,`region_id` STRING COMMENT '地区id'
)
COMMENT '省份'
PARTITIONED BY 
(
    ds STRING
)
;

--dwd明细数据层:清洗,维度退化。
--如ods地区+ods省份=>dwd省份地区
--dwd明细数据层建表语句
CREATE TABLE `dwd_order_info_di` (
    `id` STRING COMMENT '订单id',
    `total_amount` STRING COMMENT '订单总额',
    `order_status` STRING COMMENT ' 1 未支付 2 已支付 3 已发货 4 已收货 5 已完成',
    `user_id` STRING COMMENT '用户id',
    `payment_way` STRING COMMENT '付款方式',
    `out_trade_no` STRING COMMENT '订单流失号',
    `province_id` STRING COMMENT '省市id',
    `create_time` STRING COMMENT '创建时间',
    `operate_time` STRING COMMENT '修改时间'
)
COMMENT '订单表'
PARTITIONED BY (ds STRING);

CREATE TABLE `dwd_order_detail_di` (
    `id` STRING COMMENT '明细id',
    `order_id` STRING COMMENT '订单id',
    `user_id` STRING COMMENT '用户id',
    `sku_id` STRING COMMENT '商品id',
    `sku_name` STRING COMMENT '商品名称',
    `order_price` STRING COMMENT '购买价格',
    `sku_num` STRING COMMENT '购物数量',
    `province_id` STRING COMMENT '省市id',
    `create_time` STRING COMMENT '创建时间'
)
COMMENT '订单明细'
PARTITIONED BY (ds STRING )
;

CREATE TABLE `dim_sku_info_df`
(
    `id` STRING COMMENT '商品id'
    ,`spu_id` STRING COMMENT 'spuid'
    ,`price` DOUBLE COMMENT '商品价格'
    ,`sku_name` STRING COMMENT '商品名称'
    ,`sku_desc` STRING COMMENT '商品描述'
    ,`weight` DOUBLE COMMENT '重量'
    ,`tm_id` STRING COMMENT '品牌id'
    ,`tm_name` STRING COMMENT '品牌名称'
    ,`category3_id` STRING COMMENT '三级分类id'
    ,`category2_id` STRING COMMENT '二级分类id'
    ,`category1_id` STRING COMMENT '一级分类id'
    ,`category3_name` STRING COMMENT '三级分类名称'
    ,`category2_name` STRING COMMENT '二级分类名称'
    ,`category1_name` STRING COMMENT '一级分类名称'
    ,`create_time` STRING COMMENT '创建时间'
)
COMMENT '商品信息'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `dim_user_info_df` 
(
    `id` STRING COMMENT 'id'
    ,`name` STRING COMMENT '用户名称'
    ,`birthday` STRING COMMENT '生日'
    ,`gender` STRING COMMENT '性别'
    ,`email` STRING COMMENT '邮箱'
    ,`user_level` STRING COMMENT '等级'
    ,`create_time` STRING COMMENT '注册时间'
)
COMMENT '用户信息表'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `dim_base_province_df` 
(
    `id` STRING COMMENT 'id'
    ,`province_name` STRING COMMENT '省市id'
    ,`region_id` STRING COMMENT '地区id'
    ,`region_name` STRING COMMENT '地区名称'
)
COMMENT '地区省市表'
PARTITIONED BY 
(
    ds STRING
)
;

--手动将数据导入dwd层  --why 有的insert后面跟的分区有加值 有的不加
INSERT OVERWRITE TABLE dwd_order_info_di PARTITION(ds)
SELECT  id
        ,total_amount
        ,order_status
        ,user_id
        ,payment_way
        ,out_trade_no
        ,province_id
        ,create_time
        ,operate_time
        ,ds
FROM    ods_order_info_di
WHERE   ds = '${bizdate}'
AND     id IS NOT NULL
;

SELECT * FROM dwd_order_info_di WHERE ds='00000000';

INSERT OVERWRITE TABLE dwd_order_detail_di PARTITION(ds)
SELECT  od.id
        ,order_id
        ,oi.user_id
        ,sku_id
        ,sku_name
        ,order_price
        ,sku_num
        ,oi.province_id
        ,od.create_time
        ,od.ds
FROM    ods_order_deatail_di od
JOIN    ods_order_info_di oi
ON      od.order_id = oi.id
AND     oi.ds = '${bizdate}'
AND     od.ds = '${bizdate}'
AND     od.id IS NOT NULL
;

SELECT * FROM dwd_order_detail_di WHERE ds='00000000' LIMIT 10;

INSERT OVERWRITE TABLE dim_sku_info_df PARTITION(ds)
SELECT  sku.id
        ,sku.spu_id
        ,sku.price
        ,sku.sku_name
        ,sku.sku_desc
        ,sku.weight
        ,sku.tm_id
        ,tm.tm_name
        ,sku.category3_id
        ,c2.id category2_id
        ,c1.id category1_id
        ,c3.name category3_name
        ,c2.name category2_name
        ,c1.name category1_name
        ,sku.create_time
        ,sku.ds
FROM    (
            SELECT  *
            FROM    ods_sku_info_df
            WHERE   ds = '${bizdate}'
            AND     id IS NOT NULL
        ) sku
JOIN    ods_base_category3_df c3
ON      sku.category3_id = c3.id
AND     c3.ds = '${bizdate}'
JOIN    ods_base_category2_df c2
ON      c3.category2_id = c2.id
AND     c2.ds = '${bizdate}'
JOIN    ods_base_category1_df c1
ON      c2.category1_id = c1.id
AND     c1.ds = '${bizdate}'
JOIN    ods_base_trademark_df tm
ON      tm.tm_id = sku.tm_id
AND     tm.ds = '${bizdate}'
;

SELECT * FROM dim_sku_info_df WHERE ds='00000000' LIMIT 10;

INSERT OVERWRITE TABLE dim_user_info_df PARTITION(ds)
SELECT  id
        ,name
        ,birthday
        ,gender
        ,email
        ,user_level
        ,create_time 
        ,ds
FROM    ods_user_info_df
WHERE   ds = '${bizdate}'
AND     id IS NOT NULL
;
SELECT * FROM dim_user_info_df WHERE ds='00000000' LIMIT 10;

INSERT OVERWRITE TABLE `dim_base_province_df` PARTITION(ds)
SELECT  P.id
        ,P.name
        ,P.region_id
        ,r.region_name
        ,P.ds
FROM    ods_base_province_df P
JOIN    ods_base_region_df r
ON      P.region_id = r.id
AND     P.ds = '${bizdate}'
AND     r.ds = '${bizdate}'
;

SELECT * FROM dim_base_province_df WHERE ds='00000000' LIMIT 10;


--dws层针对明细粒度的数据进行短周期汇总。
--如最近一天某个类目、某个地区、某类人群购买商品销售总额、购买力分布。

--dws层建表语句
DROP TABLE IF EXISTS `dws_trade_detail_di` ;
-- CREATE TABLE `dws_trade_detail_di` 
-- (
--     `user_id` STRING COMMENT '用户'
--     ,`sku_id` STRING COMMENT '商品id'
--     ,`user_gender` STRING COMMENT '用户性别'
--     ,`user_age` STRING COMMENT '用户年龄'
--     ,`user_level` STRING COMMENT '用户等级'
--     ,`sku_price` DOUBLE  COMMENT '商品当日价格'
--     ,`sku_name` STRING COMMENT '商品名称'
--     ,`sku_category3_id` STRING COMMENT '商品三级品类id'
--     ,`sku_category2_id` STRING COMMENT '商品二级品类id'
--     ,`sku_category1_id` STRING COMMENT '商品一级品类id'
--     ,`sku_category3_name` STRING COMMENT '商品三级品类名称'
--     ,`sku_category2_name` STRING COMMENT '商品二级品类名称'
--     ,`sku_category1_name` STRING COMMENT '商品一级品类名称'
--     ,`spu_id`STRING COMMENT '商品的spu'
--     ,`tm_id` STRING COMMENT '品牌id'
--     ,`tm_name` STRING COMMENT '品牌名称'
--     ,`province_id` STRING COMMENT '省市id'
--     ,`province_name` STRING COMMENT '省市名称'
--     ,`region_id` STRING COMMENT '地区id'
--     ,`region_name` STRING COMMENT '地区名称'
--     ,`sku_num` BIGINT COMMENT '购买个数'
--     ,`order_count` BIGINT COMMENT '当日下单单数'
--     ,`order_amount` DOUBLE COMMENT '当日下单金额'
-- )
-- COMMENT '用户单日交易行为宽表'
-- PARTITIONED BY 
-- (
--     ds STRING
-- )
-- ;
CREATE TABLE `dws_trade_detail_di` 
(
    `user_id` STRING COMMENT '用户 id'
    ,`sku_id` STRING COMMENT '商品 Id'
    ,`user_gender` STRING COMMENT '用户性别'
    ,`user_age` STRING COMMENT '用户年龄'
    ,`user_level` STRING COMMENT '用户等级'
    ,`sku_price` DOUBLE COMMENT '商品当日价格'
    ,`sku_name` STRING COMMENT '商品名称'
    ,`sku_category3_id` STRING COMMENT '商品三级品类 id'
    ,`sku_category2_id` STRING COMMENT '商品二级品类 id'
    ,`sku_category1_id` STRING COMMENT '商品一级品类 id'
    ,`sku_category3_name` STRING COMMENT '商品三级品类名称'
    ,`sku_category2_name` STRING COMMENT '商品二级品类名称'
    ,`sku_category1_name` STRING COMMENT '商品一级品类名称'
    ,`spu_id` STRING COMMENT '商品 spu'
    ,`tm_id` STRING COMMENT '品牌 id'
    ,`tm_name` STRING COMMENT '品牌名称'
    ,`province_id` STRING COMMENT '省市 id'
    ,`province_name` STRING COMMENT '省市名称'
    ,`region_id` STRING COMMENT '地区 id'
    ,`region_name` STRING COMMENT '地区名称'
    ,`sku_num` BIGINT COMMENT '购买个数'
    ,`order_count` BIGINT COMMENT '当日下单单数'
    ,`order_amount` DOUBLE COMMENT '当日下单金额'
)
COMMENT '用户单日交易行为宽表'
PARTITIONED BY 
(
    ds STRING
)
;


--手动将数据导入dws层
-- WITH
--     tmp_trade AS ( SELECT od.user_id ,od.sku_id ,od.province_id ,sum(sku_num) sku_num ,COUNT(*) order_count ,sum(od.order_price*sku_num) order_amount FROM dwd_order_detail_di od WHERE od.ds='${bizdate}' GROUP BY od.user_id,od.sku_id,od.province_id )
-- INSERT OVERWRITE TABLE `dws_trade_detail_di` PARTITION( ds='${bizdate}' )
-- SELECT  tmp_trade.user_id
--         ,tmp_trade.sku_id
--         ,u.gender
--         ,months_between(
--             TO_CHAR(TO_DATE('${bizdate}','yyyymmdd'),'yyyy-mm-dd')
--             ,u.birthday
--         )/12 age
--         ,u.user_level
--         ,price
--         ,sku_name
--         ,category3_id
--         ,category2_id
--         ,category1_id
--         ,category3_name
--         ,category2_name
--         ,category1_name
--         ,spu_id
--         ,tm_id
--         ,tm_name
--         ,P.id
--         ,P.province_name
--         ,P.region_id
--         ,P.region_name
--         ,tmp_trade.sku_num
--         ,tmp_trade.order_count
--         ,tmp_trade.order_amount
-- FROM    tmp_trade
-- LEFT JOIN dim_user_info_df u
-- ON      u.id = tmp_trade.user_id
-- AND     u.ds = '${bizdate}' LEFT
-- JOIN    dim_sku_info_df s
-- ON      tmp_trade.sku_id = s.id
-- AND     s.ds = '${bizdate}'
-- LEFT JOIN dim_base_province_df P
-- ON      tmp_trade.province_id = P.id
-- AND     P.ds = '${bizdate}'
-- ;

WITH
    tmp_trade AS ( SELECT od.user_id,od.sku_id,od.province_id, sum(sku_num) sku_num, COUNT(*) order_count, sum(od.order_price*sku_num) order_amount FROM dwd_order_detail_di od WHERE od.ds='${bizdate}' GROUP BY od.user_id, od.sku_id, od.province_id )
INSERT OVERWRITE TABLE dws_trade_detail_di PARTITION(ds='${bizdate}')
SELECT  tmp_trade.user_id
        ,tmp_trade.sku_id
        ,u.gender
        ,months_between(
            to_char(to_date('${bizdate}','yyyymmdd'),'yy yy-mm-dd')
            ,u.birthday
        )/12 age
        ,u.user_level
        ,price
        ,sku_name
        ,category3_id
        ,category2_id
        ,category1_id
        ,category3_name
        ,category2_name
        ,category1_name
        ,spu_id
        ,tm_id
        ,tm_name
        ,pp.id
        ,pp.province_name
        ,pp.region_id
        ,pp.region_name
        ,tmp_trade.sku_num
        ,tmp_trade.order_count
        ,tmp_trade.order_amount
FROM    tmp_trade
LEFT JOIN dim_user_info_df u ON u.id = tmp_trade.user_id AND u.ds = '${bizdate}' 
LEFT JOIN dim_sku_info_df s ON tmp_trade.sku_id = s.id AND s.ds = '${bizdate}'
LEFT JOIN dim_base_province_df pp ON tmp_trade.province_id = pp.id AND pp.ds = '${bizdate}'
;

SELECT * FROM dws_trade_detail_di WHERE ds='00000000' LIMIT 10;
desc dws_trade_detail_di;
drop table if exists tmp_trade; --临时表不能drop    
SELECT * FROM dwd_order_detail_di WHERE ds='00000000' LIMIT 10;




--ADS层:针对某个维度,进行汇总。
--如针对年龄、地区、商品进行汇总统计,统计下单数、购买商品数、销售额、平均客单价四个指标。
CREATE TABLE `ads_trade_age_d` (
    `age` BIGINT COMMENT '年龄'
    ,`sku_num` BIGINT COMMENT '购买商品个数'
    ,`order_count` BIGINT COMMENT '订单个数'
    ,`order_amount` DOUBLE COMMENT '销售额'
    ,`avg_amount` DOUBLE COMMENT '平均客单价'
)
COMMENT '年龄销售统计'
PARTITIONED BY (ds STRING )
;

CREATE TABLE `ads_trade_province_d` 
(
    `province` STRING COMMENT '省份id'
    ,`province_name` STRING COMMENT '省市名称'
    ,`region_id` STRING COMMENT '地区id'
    ,`region_name` STRING COMMENT '地区名称'
    ,`sku_num` BIGINT COMMENT '购买商品个数'
    ,`order_count` BIGINT COMMENT '订单个数'
    ,`order_amount` DOUBLE COMMENT '销售额'
    ,`avg_amount` DOUBLE COMMENT '平均客单价'
)
COMMENT '地区销售统计'
PARTITIONED BY 
(
    ds STRING
)
;

CREATE TABLE `ads_trade_sku_d` 
(
    `sku_id` STRING COMMENT '商品id'
    ,`sku_name` STRING COMMENT '商品名称'
    ,`sku_num` BIGINT COMMENT '购买商品个数'
    ,`category3_id` STRING COMMENT '三级分类id'
    ,`category2_id` STRING COMMENT '二级分类id'
    ,`category1_id` STRING COMMENT '一级分类id'
    ,`category3_name` STRING COMMENT '三级分类名称'
    ,`category2_name` STRING COMMENT '二级分类名称'
    ,`category1_name` STRING COMMENT '一级分类名称'
    ,`order_count` BIGINT COMMENT '订单个数'
    ,`order_amount` DOUBLE COMMENT '销售额'
    ,`avg_amount` DOUBLE COMMENT '平均客单价'
)
COMMENT '商品销售统计'
PARTITIONED BY 
(
    ds STRING
)
;

--手动将数据导入ADS层
INSERT OVERWRITE TABLE `ads_trade_age_d` PARTITION(ds='${bizdate}')
SELECT  round(td.user_age) age
        ,sum(sku_num) sku_num
        ,sum(order_count) order_count
        ,sum(order_amount) order_amount
        ,round(avg(order_amount),2) avg_amount
FROM    dws_trade_detail_di td
WHERE   ds = '${bizdate}'
GROUP BY ROUND(td.user_age)
;

SELECT *  FROM ads_trade_age_d WHERE ds='00000000' LIMIT 10;

INSERT OVERWRITE TABLE ads_trade_province_d PARTITION(ds='${bizdate}')
SELECT  td.province_id
        ,td.province_name
        ,td.region_id
        ,td.region_name
        ,sum(sku_num) sku_num
        ,sum(order_count) order_count
        ,sum(order_amount) order_amount
        ,round(AVG(order_amount),2) avg_amount
FROM    dws_trade_detail_di td
WHERE ds='${bizdate}'
GROUP BY td.province_id
         ,td.province_name
         ,td.region_id
         ,td.region_name
;
SELECT *  FROM ads_trade_province_d WHERE ds='00000000' LIMIT 10;


INSERT OVERWRITE TABLE ads_trade_sku_d PARTITION (ds='${bizdate}')
SELECT 
    td.sku_id
    ,td.sku_name
    ,td.sku_category3_id
    ,td.sku_category2_id
    ,td.sku_category1_id
    ,td.sku_category3_name
    ,td.sku_category2_name
    ,td.sku_category1_name
    ,SUM(sku_num) sku_num
    ,SUM(order_count) order_count
    ,SUM(order_amount) order_amount
    ,ROUND(AVG(order_amount),2) avg_amount
FROM dws_trade_detail_di td 
WHERE ds='${bizdate}'
GROUP BY td.sku_id
    ,td.sku_name
    ,td.sku_category3_id
    ,td.sku_category2_id
    ,td.sku_category1_id
    ,td.sku_category3_name
    ,td.sku_category2_name
    ,td.sku_category1_name
;
SELECT *  FROM ads_trade_age_d WHERE ds='00000000' LIMIT 10; --这里有\n原因在上


--全流程调度完成后 查询一下
SELECT * FROM ads_trade_age_d WHERE ds='00000000' LIMIT 10;
SELECT * FROM ads_trade_sku_d WHERE ds='00000000' LIMIT 10; --因为上面的原因一直\n但调度上没有问题
SELECT * FROM ads_trade_province_d WHERE ds='00000000' LIMIT 10;

离线同步test

--odps sql 
--********************************************************************--
--author:i
--create time:0000-00-00 00:00:00
--********************************************************************--

--每日全量表同步测试
SELECT * FROM ods_user_info_df WHERE ds='00000000';
SELECT * FROM ods_base_category1_df WHERE ds='00000000';
SELECT * FROM ods_base_category2_df WHERE ds='00000000';
SELECT * FROM ods_base_category3_df WHERE ds='00000000';
SELECT * FROM ods_base_province_df WHERE ds='00000000';
SELECT * FROM ods_base_region_df WHERE ds='00000000';
SELECT * FROM ods_base_trademark_df WHERE ds='00000000';
SELECT * FROM ods_sku_info_df WHERE ds='00000000';
--每日增量表同步测试
-- rename ods_order_deatail_di TO ods_order_detail_di;
SELECT * FROM ods_order_deatail_di WHERE ds='00000000';
SELECT * FROM ods_order_info_di WHERE ds='00000000';


注:仅做笔记学习使用。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
数据分析职业是一个多金的职业,数据分析职位是一个金饭碗的职位,前景美好,但是要全面掌握大数据分析技术,非常困难,大部分学员的痛点是不能快速找到入门要点,精准快速上手。本课程采用项目驱动的方式,以Spark3和Clickhouse技术为突破口,带领学员快速入门Spark3+Clickhouse数据分析,促使学员成为一名高效且优秀的大数据分析人才。学员通过本课程的学习,不仅可以掌握使用Python3进行Spark3数据分析,还会掌握利用Scala/java进行Spark数据分析,多语言并进,力求全面掌握;另外通过项目驱动,掌握Spark框架的精髓,教导Spark源码查看的技巧;会学到Spark性能优化的核心要点,成为企业急缺的数据分析人才;更会通过Clickhouse和Spark搭建OLAP引擎,使学员对大数据生态圈有一个更加全面的认识和能力的综合提升。真实的数据分析项目,学完即可拿来作为自己的项目经验,增加面试谈薪筹码。课程涉及内容:Ø  Spark内核原理(RDD、DataFrame、Dataset、Structed Stream、SparkML、SparkSQL)Ø  Spark离线数据分析(千万简历数据分析、雪花模型离线数仓构建)Ø  Spark特征处理及模型预测Ø  Spark实时数据分析(Structed Stream)原理及实战Ø  Spark+Hive构建离线数据仓库(数仓概念ODS/DWD/DWS/ADS)Ø  Clickhouse核心原理及实战Ø  Clickhouse engine详解Ø  Spark向Clickhouse导入简历数据,进行数据聚合分析Ø  catboost训练房价预测机器学习模型Ø  基于Clickhouse构建机器学习模型利用SQL进行房价预测Ø  Clickhouse集群监控,Nginx反向代理Grafana+Prometheus+Clickhouse+node_exporterØ  Spark性能优化Ø  Spark工程师面试宝典       课程组件:集群监控:福利:本课程凡是消费满359的学员,一律送出价值109元的实体书籍.

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值