文章目录
- day03_开发前准备和匹配类标签
- 一、标签体系(了解)
- 二、数据导入(操作)
-
- 1、背景介绍(重要)
- 2、创建Hive表
-
- 2.1 dwm_sold_goods_sold_dtl_i
- 2.2 dwm_sell_o2o_order_i
- **2.3 dwd_mem_member_union_i**
- 2.4 dwm_mem_member_behavior_day_i
- **2.5 dwm_mem_first_buy_i**
- 3、数据同步
- 4、数据核对问题
- 三、标签计算流程(熟悉)
-
- 1、四级标签和Spark任务的对应关系(了解)
- 2、标签计算的元数据
- 3、Spark任务开发流程
- 四、通用开发(掌握)
-
- 1、环境准备
- 2、设置开发模板
- 3、复习Spark与Hive整合
- 4、MySQL规则处理
-
- 4.1 复习Spark与MySQL整合
- 4.2 标签配置表rule字段内容解析
- 5、创建索引和逗号分词器
- 五、年龄段标签开发(掌握)
-
- 1、需求分析
- 2、代码开发
- Spark与Hive整合.py
- Spark与MySQL整合.py
- match
-
- age_tag_sql.py
- age_tag_v1.py
- 六、课后作业
-
- 1、独立实现年龄段标签开发
- 2、参考年龄段标签,实现性别、职业标签的开发
day03_开发前准备和匹配类标签
一、标签体系(了解)
在数据产品经理与业务部门的沟通下,最终将小兔智购的标签体系划分为如下:
开发时项目建包原则,可以按照类型划分statices,match,ml,streaming划分项目的package
规则匹配标签:只需要进行简单的规则匹配就可以得到用户画像结果
统计性标签:在计算时候要进行聚合统计可以得到画像结果
算法挖掘类标签:在计算需要使用用到机器学习算法得到画像结果
实时标签:需要实时处理数据计算实时标签
开发时间:挖掘性标签一周1个,匹配和统计2-3天1个(需要熟悉业务、处理数据等)
二、数据导入(操作)
同学们自己写简历的项目结构可以是怎样?
1- 方案一(顺丰优选公司实际的做法): 你可以说你们在开发用户画像之前,你们公司已经开发好了Hive离线数仓的项目,用户画像的业务数据来源自Hive数仓
2- 方案二: 提前没有Hive离线数仓的项目,你们从MySQL中使用SeaTunnel将业务数据同步到Hive的ODS层,接着开发用户画像,并且没有建设Hive离线数仓
1、背景介绍(重要)
因为本项目是建立在离线数仓的基础上,也就是说,在用户画像项目开始前,已经有部分数据进行了加工处理,所以在实际开发时,可以直接使用存储在Hive数仓中的数据,避免重复加工。
2、创建Hive表
2.1 dwm_sold_goods_sold_dtl_i
CREATE DATABASE IF NOT EXISTS dwm;
CREATE TABLE IF NOT EXISTS dwm.dwm_sold_goods_sold_dtl_i(
trade_date_time STRING COMMENT '核销时间',
trade_date STRING COMMENT '交易日期',
week_trade_date STRING COMMENT '周一日期',
month_trade_date STRING COMMENT '月一日期',
hourly BIGINT COMMENT '交易小时(0-23)',
quarter BIGINT COMMENT '刻钟:1.0-15,2.15-30,3.30-45,4.45-60',
quarters BIGINT COMMENT '刻钟数:hourly*4+quarters',
parent_store_no STRING COMMENT '母店编码',
store_no STRING COMMENT '店铺编码',
store_name STRING COMMENT '店铺名称',
store_sale_type BIGINT COMMENT '店铺销售类型',
store_type_code BIGINT COMMENT '分店类型',
worker_num BIGINT COMMENT '员工人数',
store_area DECIMAL(27, 2) COMMENT '门店面积',
city_id BIGINT COMMENT '城市ID',
city_name STRING COMMENT '城市名称',
region_code STRING COMMENT '区域编码',
region_name STRING COMMENT '区域名称',
is_day_clear BIGINT COMMENT '是否日清:0否,1是',
trade_type BIGINT COMMENT '结算类型(0.正常交易,1.赠品发放,2.退货,4.培训,5.取消交易)',
source_type BIGINT COMMENT '交易来源1:线下POS;2:三方平台;3:传智鲜商城;4:优选团;5:传智大客户;6:传智其他;7:优选;8:优选海淘;9:优选大客户;10:优选POS;11:优选APP;12:优选H5;13:店长工具线下;14:店长工具线上;15:其他',
source_type_name STRING COMMENT '交易来源名称',
sale_type BIGINT COMMENT '销售类型 1.实物,2.代客,3.优选小程序,4.离店,5.传智鲜小程序,6.第三方平台,7.其他,8.大客户',
is_online_order BIGINT COMMENT '是否为线上单:0否,1是',
member_type BIGINT COMMENT '会员类型:0非会员,1线上会员,2实体卡会员',
is_balance_consume BIGINT COMMENT '是否有余额支付:0否,1是',
order_type BIGINT COMMENT '配送类型(真正的订单类型由业务类型来决定):1-及时送;2-隔日送;3-自提单;4-线下单',
express_type BIGINT COMMENT '配送方式:0-三方平台配送;1-自配送;2-快递;3-自提;4-线下',
parent_order_no STRING COMMENT '母订单编号',
order_no STRING COMMENT '订单编号',
create_time STRING COMMENT '创建时间',
is_cancel BIGINT COMMENT '是否取消',
cancel_time STRING COMMENT '取消时间',
last_update_time STRING COMMENT 'pos_sale表最后一次更新时间',
zt_id BIGINT COMMENT '中台ID',
member_id BIGINT COMMENT '会员ID',
card_no STRING COMMENT '卡号',
share_user_id STRING COMMENT '分享人用户ID',
commission_amount DECIMAL(27, 2) COMMENT '佣金',
is_tuan_head BIGINT COMMENT '是否为团长订单',
store_leader_id BIGINT COMMENT '团长id',
order_group_no STRING COMMENT '团单号',
first_category_no STRING COMMENT '一级分类编码',
first_category_name STRING COMMENT '一级分类名称',
second_category_no STRING COMMENT '二级分类编码',
second_category_name STRING COMMENT '二级分类名称',
third_category_no STRING COMMENT '三级分类编码',
third_category_name STRING COMMENT '三级分类名称',
goods_no STRING COMMENT '商品编码',
goods_name STRING COMMENT '商品名称',
supply_team BIGINT COMMENT '供应链团队 1.平台商品,2.优选标品,3.传智鲜标品,4.传智鲜生鲜,5优选POS商品',
dc_no STRING COMMENT '采购仓库编号',
dc_name STRING COMMENT '采购仓库名称',
group_no STRING COMMENT '采购柜组编号',
group_name STRING COMMENT '采购柜组名称',
trade_mode_id BIGINT COMMENT '结算方式:1购销,2联营',
vendor_id BIGINT COMMENT '供应商ID',
contract_no STRING COMMENT '合同编号',
is_clean BIGINT COMMENT '商品是否日清:0否,1是',
is_daily_clear BIGINT COMMENT '商品是否参加日清活动:0否,1是',
sale_qty DECIMAL(27, 3) COMMENT '商品销售数量',
sale_amount DECIMAL(27, 2) COMMENT '商品销售金额',
dis_amount DECIMAL(27, 2) COMMENT '商品折扣金额',
sale_cost DECIMAL(27, 2) COMMENT '商品销售成本',
balance_amount DECIMAL(27, 2) COMMENT '余额支付',
order_total_amount DECIMAL(27, 2) COMMENT '订单总金额(平摊)',
order_discount_amount DECIMAL(27, 2) COMMENT '订单优惠金额=商家承担优惠金额+平台补贴金额(平摊)',
order_paid_amount DECIMAL(27, 2) COMMENT '实付金额(平摊)'
)
COMMENT '商品销售明细(核销)'
partitioned by(dt STRING COMMENT '核销日期')
row format delimited fields terminated by ','
stored as orc
tblsql ('orc.compress'='SNAPPY');
2.2 dwm_sell_o2o_order_i
CREATE DATABASE IF NOT EXISTS dwm;
CREATE TABLE IF NOT EXISTS dwm.dwm_sell_o2o_order_i (
create_time STRING COMMENT '订单创建时间',
trade_date STRING COMMENT '交易日期',
week_trade_date STRING COMMENT '周一日期',
month_trade_date STRING COMMENT '月一日期',
hourly BIGINT COMMENT '交易小时(0-23)',
quarter BIGINT COMMENT '刻钟:1.0-15,2.15-30,3.30-45,4.45-60',
quarters BIGINT COMMENT '刻钟数:hourly*4+quarters',
parent_order_no STRING COMMENT '父单订单号/源单号',
order_no STRING COMMENT '订单编号',
trade_type BIGINT COMMENT '结算类型(0.正常交易,1.赠品发放,2.退货,4.培训,5.取消交易)',
source_type BIGINT COMMENT '交易来源1:线下POS;2:三方平台;3:传智鲜商城;4:优选团;5:传智大客户;6:传智其他;7:优选;8:优选海淘;9:优选大客户;10:优选POS;11:优选APP;12:优选H5;13:店长工具线下;14:店长工具线上;15:其他',
source_type_name STRING COMMENT '交易来源名称',
sale_type BIGINT COMMENT '销售类型 1.实物,2.代客,3.优选小程序,4.离店,5.传智鲜小程序,6.第三方平台,7.其他,8.大客户',
is_online_order BIGINT COMMENT '是否为线上单:0否,1是',
member_type BIGINT COMMENT '会员类型:0非会员,1线上会员,2实体卡会员',
is_balance_consume BIGINT COMMENT '是否有余额支付:0否,1是',
order_type BIGINT COMMENT '配送类型(真正的订单类型由业务类型来决定):1-及时送;2-隔日送;3-自提单;4-线下单',
express_type BIGINT COMMENT '配送方式:0-三方平台配送;1-自配送;2-快递;3-自提;4-线下',
store_no STRING COMMENT '店铺编码',
store_name STRING COMMENT '店铺名称',
store_sale_type BIGINT COMMENT '店铺销售类型',
store_type_code BIGINT COMMENT '分店类型',
worker_num BIGINT COMMENT '员工人数',
store_area DECIMAL(27, 2) COMMENT '门店面积',
city_id BIGINT COMMENT '城市ID',
city_name STRING COMMENT '城市名称',
region_code STRING COMMENT '区域编码',
region_name STRING COMMENT '区域名称',
is_day_clear BIGINT COMMENT '是否日清:0否,1是',
is_cancel BIGINT COMMENT '是否取消',
cancel_time STRING COMMENT '取消时间',
cancel_reason STRING COMMENT '取消原因',
last_update_time TIMESTAMP COMMENT '最新更新时间',
cashier_no STRING COMMENT '收银员编码',
cashier_name STRING COMMENT '收银员名称',
zt_id BIGINT COMMENT '中台ID',
member_id BIGINT COMMENT '会员ID',
card_no STRING COMMENT '卡号',
r_name STRING COMMENT '收货人姓名',
r_province STRING COMMENT '收货人省份',
r_city STRING COMMENT '收货人城市',
r_district STRING COMMENT '收货人区域',
is_tuan_head BIGINT COMMENT '是否为团长订单',
store_leader_id BIGINT COMMENT '团长id',
order_group_no STRING COMMENT '团单号',
settle_amount DECIMAL(27, 2) COMMENT '结算金额',
share_user_id BIGINT COMMENT '分享人用户ID',
commission_amount DECIMAL(27, 2) COMMENT '佣金',
order_total_amount DECIMAL(27, 2) COMMENT '订单总金额',
product_total_amount DECIMAL(27, 2) COMMENT '商品总金额(原价)',
pack_amount DECIMAL(27, 2) COMMENT '餐盒费/打包费',
delivery_amount DECIMAL(27, 2) COMMENT '配送费',
discount_amount DECIMAL(27, 2) COMMENT '订单优惠金额=商家承担优惠金额+平台补贴金额',
seller_discount_amount DECIMAL(27, 2) COMMENT '商家承担优惠金额',
platform_allowance_amount DECIMAL(27, 2) COMMENT '平台补贴金额',
real_paid_amount DECIMAL(27, 2) COMMENT '实付金额',
product_discount DECIMAL(27, 2) COMMENT '商品优惠金额',
real_product_amount DECIMAL(27, 2) COMMENT '商品实际金额',
round_amount DECIMAL(27, 2) COMMENT '舍分金额',
wechat_amount DECIMAL(27, 4) COMMENT '微信支付',
ali_pay_amount DECIMAL(27, 4) COMMENT '支付宝支付',
cash_amount DECIMAL(27, 4) COMMENT '现金支付',
balance_amount DECIMAL(27, 4) COMMENT '余额支付',
point_amount DECIMAL(27, 4)