SparkSQL电商用户画像之用户画像开发(订单宽表)

Posted 大码王

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SparkSQL电商用户画像之用户画像开发(订单宽表)相关的知识,希望对你有一定的参考价值。

7.3 用户画像开发--订单表宽表

--订单宽表模型

create database if not exists gdm;

create  table if not exists gdm.itcast_gdm_order(

order_id   string,--订单ID

order_no   string,--订单号

order_date string,--订单日期

user_id string,--用户ID

user_name string,--登录名

order_money double,--订单金额

order_type string,--订单类型

order_status       string,--订单状态

pay_status string,--支付状态

pay_type string,--支付方式  1、在线支付,2、货到付款

order_source       string,--订单来源

consignee string,--收货人姓名

area_id string,--收货人地址ID

area_name string,--地址ID对应的地址段(粒度到县)

address string,--收货人地址(手工填写的地址)

mobile string,--收货人手机号

telphone string,--收货人电话

coupon_id bigint,--使用代金券ID

coupon_money double,--使用代金券金额

carriage_money double,--运费

create_time timestamp,--创建时间

update_time timestamp,--更新时间

dw_date timestamp

) partitioned by (dt string);
--订单主要信息表BDM层

create database if not exists bdm;

create external table if not exists bdm.itcast_bdm_order(

order_id string, --订单ID

order_no string, --订单号

order_date string, --订单日期

user_id  string, --用户ID

user_name string, --登录名

order_money double, --订单金额

order_type string, --订单类型

order_status string,       --订单状态

pay_status string, --支付状态

pay_type string, --支付方式  1、在线支付,2、货到付款

order_source string,       --订单来源

update_time timestamp, --订单更新时间

dw_date timestamp

) partitioned by (dt string)

row format delimited fields terminated by \',\'

lines terminated by \'\\n\';

alter table bdm.itcast_bdm_order add partition (dt=\'2017-01-01\') location \'/business/itcast_bdm_order/2017-01-01\';

hdfs dfs -put fdm_order.txt /business/itcast_bdm_order/2017-01-01
--订单主要信息表FDM层

create database if not exists fdm;

create  table if not exists fdm.itcast_fdm_order(

order_id string, --订单ID

order_no string, --订单号

order_date string, --订单日期

user_id  string, --用户ID

user_name string, --登录名

order_money double, --订单金额

order_type string, --订单类型

order_status string,       --订单状态

pay_status string, --支付状态

pay_type string, --支付方式  1、在线支付,2、货到付款

order_source string,       --订单来源

update_time timestamp, --订单更新时间

dw_date timestamp

) partitioned by (dt string);

 

--加载数据

insert overwrite table fdm.itcast_fdm_order partition(dt=\'2017-01-01\')

select

t.order_id, --订单ID

t.order_no, --订单号

t.order_date,       --订单日期

t.user_id, --用户ID

t.user_name,       --登录名

t.order_money, --订单金额

t.order_type,       --订单类型

t.order_status,       --订单状态

t.pay_status,       --支付状态

t.pay_type, --支付方式

t.order_source,       --订单来源

t.update_time timestamp,--订单更新时间

from_unixtime(unix_timestamp())  dw_date

from bdm.itcast_bdm_order t where dt=\'2017-01-01\';
-------订单详细信息表BDM层----------------

create database if not exists bdm;

create external table if not exists bdm.itcast_bdm_order_desc(

order_id string, --订单ID

order_no string, --订单号

consignee string, --收货人姓名

area_id string, --收货人地址ID

area_name string, --地址ID对应的地址段

address string, --收货人地址

mobile string, --收货人手机号

telphone string, --收货人电话

coupon_id bigint, --使用代金券ID

coupon_money double, --使用代金券金额

carriage_money double, --运费

create_time timestamp, --创建时间

update_time timestamp, --更新时间

dw_date timestamp

)partitioned by (dt string)

row format delimited fields terminated by \',\';

alter table bdm.itcast_bdm_order_desc add partition (dt=\'2017-01-01\') location \'/business/itcast_bdm_order_desc/2017-01-01\';

hdfs dfs -put itcast_bdm_order_desc.txt /business/itcast_bdm_order_desc/2017-01-01
-----订单主要信息表FDM层

create database if not exists fdm;

create table if not exists fdm.itcast_fdm_order_desc(

order_id string, --订单ID

order_no string, --订单号

consignee string, --收货人姓名

area_id string, --收货人地址ID

area_name string, --地址ID对应的地址段

address string, --收货人地址

mobile string, --收货人手机号

telphone string, --收货人电话

coupon_id bigint, --使用代金券ID

coupon_money double, --使用代金券金额

carriage_money double, --运费

create_time timestamp, --创建时间

update_time timestamp, --更新时间

dw_date timestamp

) partitioned by (dt string);

 

------加载数据

insert overwrite table fdm.itcast_fdm_order_desc partition(dt=\'2017-01-01\')

select

t.order_id, --订单ID

t.order_no, --订单号

t.consignee,       --收货人姓名

t.area_id, --收货人地址ID

t.area_name,       --地址ID对应的地址段

t.address, --收货人地址

t.mobile, --收货人手机号

t.telphone, --收货人电话

t.coupon_id,       --使用代金券ID

t.coupon_money, --使用代金券金额

t.carriage_money,       --运费

t.create_time,       --创建时间

t.update_time,       --更新时间

from_unixtime(unix_timestamp())  dw_date

from bdm.itcast_bdm_order_desc t where dt=\'2017-01-01\';
--------订单宽表模型表GDM

create database if not exists gdm;

create external table if not exists gdm.itcast_gdm_order(

order_id string, --订单ID

order_no string, --订单号

order_date string, --订单日期

user_id string, --用户ID

user_name string, --登录名

order_money double, --订单金额

order_type string, --订单类型

order_status string,--订单状态

pay_status string, --支付状态

pay_type string, --支付方式  1、在线支付,2、货到付款

order_source string,--订单来源

consignee string, --收货人姓名

area_id string, --收货人地址ID

area_name string, --地址ID对应的地址段(粒度到县)

address string, --收货人地址(手工填写的地址)

mobile string, --收货人手机号

telphone string, --收货人电话

coupon_id bigint, --使用代金券ID

coupon_money double,--使用代金券金额

carriage_money double,--运费

create_time timestamp,--创建时间

update_time timestamp,--更新时间

dw_date timestamp

) partitioned by (dt string);

 

---加载数据生成订单宽表

insert overwrite table gdm.itcast_gdm_order partition(dt=\'2017-01-01\')

select

a.order_id, --订单ID

a.order_no, --订单号

a.order_date,       --订单日期

a.user_id, --用户ID

a.user_name,       --用户名

a.order_money, --订单金额

a.order_type,       --订单类型

a.order_status,    --订单状态

a.pay_status,       --支付类型

a.pay_type, --支付方式

a.order_source, --订单来源

b.consignee,       --收货人姓名

b.area_id, --收货人地址ID

b.area_name,       --地址ID对应的地址段

b.address, --收货人地址

b.mobile,          --收货人手机号

b.telphone,         --收货人电话

b.coupon_id,       --使用代金券ID

b.coupon_money,   --使用代金券金额

b.carriage_money,  --运费

b.create_time,     --创建时间

b.update_time,     --更新时间

from_unixtime(unix_timestamp()) dw_date

from (select *  from fdm.itcast_fdm_order where dt=\'2017-01-01\') a

join (select * from fdm.itcast_fdm_order_desc where dt=\'2017-01-01\') b on a.order_id=b.order_id;

 

以上是关于SparkSQL电商用户画像之用户画像开发(订单宽表)的主要内容,如果未能解决你的问题,请参考以下文章

SparkSQL电商用户画像之用户画像开发(客户购买类目表)

SparkSQL电商用户画像之电商用户画像数据可视化

用SparkSQL构建用户画像

DMP用户画像系统(SparkGraphX SparkCore SparkSQL)

DMP用户画像系统(SparkGraphX SparkCore SparkSQL)

企业级360用户画像