9. 数仓开发之 DWD 层
大家好,又见面了,我是你们的朋友全栈君。
9. 数仓开发之 DWD 层
- 1. 交易域
- 2. 工具域
- 3. 互动域
- 4. 流量域
- 5. 用户域
- 6. 数据装载脚本
DWD层设计要点:
- DWD 层的设计依据 : 维度建模理论,该层存储维度模型的事实表
- DWD 层的数据存储格式 : orc 列式存储 + snappy 压缩
- DWD 层表名的命名规范 : dwd_数据域_表名_单分区增量****全量标识( inc / full )
1. 交易域
数据域 | 业务过程 | 粒度 | 维度 | 度量 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
时间 | 用户 | 商品 | 地区 | 活动(具体规则) | 优惠券 | 支付方式 | 退单类型 | 退单原因类型 | 渠道 | 设备 | ||||
交易域 | 加购物车 | 一次加购物车的操作 | √ | √ | √ | 商品件数 | ||||||||
下单 | 一个订单中一个商品项 | √ | √ | √ | √ | √ | √ | 下单件数/下单原始金额/下单最终金额/活动优惠金额/优惠券优惠金额 | ||||||
取消订单 | 一次取消订单操作 | √ | √ | √ | √ | √ | √ | 下单件数/下单原始金额/下单最终金额/活动优惠金额/优惠券优惠金额 | ||||||
支付成功 | 一个订单中的一个商品项的支付成功操作 | √ | √ | √ | √ | √ | √ | √ | 支付件数/支付原始金额/支付最终金额/活动优惠金额/优惠券优惠金额 | |||||
退单 | 一次退单操作 | √ | √ | √ | √ | √ | √ | 退单件数/退单金额 | ||||||
退款成功 | 一次退款成功操作 | √ | √ | √ | √ | √ | 退款件数/退款金额 |
1.1 加购事务事实表
购物车表(cart_info):
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
user_id | 用户id | varchar(200) |
sku_id | skuid | bigint(20) |
cart_price | 放入购物车时价格 | decimal(10,2) |
sku_num | 数量 | int(11) |
img_url | 图片文件 | varchar(200) |
sku_name | sku名称 (冗余) | varchar(200) |
is_checked | int(1) | |
create_time | 创建时间 | datetime |
operate_time | 修改时间 | datetime |
is_ordered | 是否已经下单 | bigint(20) |
order_time | 下单时间 | datetime |
source_type | 来源类型 | varchar(20) |
source_id | 来源编号 | bigint(20) |
字典表(base_dic) :
建表
-- 加购事务事实表
DROP TABLE IF EXISTS dwd_trade_cart_add_inc;
CREATE EXTERNAL TABLE dwd_trade_cart_add_inc
(
`id` STRING COMMENT '编号',
`user_id` STRING COMMENT '用户id',
`sku_id` STRING COMMENT '商品id',
`date_id` STRING COMMENT '时间id',
`create_time` STRING COMMENT '加购时间',
`source_id` STRING COMMENT '来源类型ID',
`source_type_code` STRING COMMENT '来源类型编码',
`source_type_name` STRING COMMENT '来源类型名称',
`sku_num` BIGINT COMMENT '加购物车件数'
) COMMENT '交易域加购物车事务事实表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
LOCATION '/warehouse/gmall/dwd/dwd_trade_cart_add_inc/'
TBLPROPERTIES ('orc.compress' = 'snappy');
分区规划
数据流向
首日装载
-- 首日装载
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table dwd_trade_cart_add_inc partition (dt)
select id,
user_id,
sku_id,
date_format(create_time, 'yyyy-MM-dd') date_id,
create_time,
source_id,
source_type,
dic.dic_name,
sku_num,
date_format(create_time, 'yyyy-MM-dd') dt
from (
select data.id,
data.user_id,
data.sku_id,
data.create_time,
data.source_id,
data.source_type,
data.sku_num
from ods_cart_info_inc
where dt = '2020-06-14'
and type = 'bootstrap-insert'
) ci
left join
(
select dic_code,
dic_name
from ods_base_dic_full
where dt = '2020-06-14'
and parent_code = '24'
) dic
on
ci.source_type = dic.dic_code;
每日装载
-- 每日装载
insert overwrite table dwd_trade_cart_add_inc partition(dt = '2020-06-15')
select
id,
user_id,
sku_id,
date_id,
create_time,
source_id,
source_type_code,
dic.dic_name source_type_name,
sku_num
from (
select data.id,
data.user_id,
data.sku_id,
date_format(from_utc_timestamp(ts * 1000, 'GMT+8'), 'yyyy-MM-dd') date_id,
date_format(from_utc_timestamp(ts * 1000, 'GMT+8'), 'yyyy-MM-dd HH:mm:ss') create_time,
data.source_id,
data.source_type source_type_code,
if(type = 'insert', data.sku_num, data.sku_num - old['sku_num']) sku_num
from ods_cart_info_inc
where dt = '2020-06-15'
and (type = 'insert' or
(type = 'update' and old['sku_num'] is not null and data.sku_num > cast(old['sku_num'] as int)))
) cart
left join (
select dic_code,
dic_name
from ods_base_dic_full
where dt = '2020-06-14'
and parent_code = '24'
) dic
on cart.source_type_code = dic.dic_code;
1.2 下单事务事实表
订单明细表(order_detail)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单编号 | bigint(20) |
sku_id | sku_id | bigint(20) |
sku_name | sku名称(冗余) | varchar(200) |
img_url | 图片名称(冗余) | varchar(200) |
order_price | 购买价格(下单时sku价格) | decimal(10,2) |
sku_num | 购买个数 | bigint(20) |
create_time | 创建时间 | datetime |
source_type | 来源类型 | varchar(20) |
source_id | 来源编号 | bigint(20) |
split_total_amount | 分摊总金额 | decimal(16,2) |
split_activity_amount | 分摊活动减免金额 | decimal(16,2) |
split_coupon_amount | 分摊优惠券减免金额 | decimal(16,2) |
订单表(order_info)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
consignee | 收货人 | varchar(100) |
consignee_tel | 收件人电话 | varchar(20) |
total_amount | 总金额 | |
order_status | 订单状态 | varchar(20) |
user_id | 用户id | bigint(20) |
payment_way | 付款方式 | varchar(20) |
delivery_address | 送货地址 | varchar(1000) |
order_comment | 订单备注 | varchar(200) |
out_trade_no | 订单交易编号(第三方支付用) | varchar(50) |
trade_body | 订单描述(第三方支付用) | varchar(200) |
create_time | 创建时间 | datetime |
operate_time | 操作时间 | datetime |
expire_time | 失效时间 | datetime |
process_status | 进度状态 | varchar(20) |
tracking_no | 物流单编号 | varchar(100) |
parent_order_id | 父订单编号 | bigint(20) |
img_url | 图片路径 | varchar(200) |
province_id | 地区 | int(20) |
activity_reduce_amount | 促销金额 | decimal(16,2) |
coupon_reduce_amount | 优惠券 | decimal(16,2) |
original_total_amount | 原价金额 | decimal(16,2) |
freight_fee | 运费 | decimal(16,2) |
freight_fee_reduce | 运费减免 | decimal(16,2) |
refundable_time | 可退款日期(签收后30天) | datetime |
订单明细活动关联表(order_detail_activity)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单id | bigint(20) |
order_detail_id | 订单明细id | bigint(20) |
activity_id | 活动ID | bigint(20) |
activity_rule_id | 活动规则 | bigint(20) |
sku_id | skuID | bigint(20) |
create_time | 获取时间 | datetime |
订单明细优惠券关联表(order_detail_coupon)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单id | bigint(20) |
order_detail_id | 订单明细id | bigint(20) |
coupon_id | 购物券ID | bigint(20) |
coupon_use_id | 购物券领用id | bigint(20) |
sku_id | skuID | bigint(20) |
create_time | 获取时间 | datetime |
字典表(base_dic)
字段名 | 字段说明 | 类型 |
---|---|---|
dic_code | 编号 | varchar(10) |
dic_name | 编码名称 | varchar(100) |
parent_code | 父编号 | varchar(10) |
create_time | 创建日期 | datetime(0) |
operate_time | 修改日期 | datetime(0) |
建表
-- 交易域下单事务事实表
drop table if exists dwd_trade_order_detail_inc;
CREATE EXTERNAL TABLE dwd_trade_order_detail_inc
(
`id` STRING COMMENT '编号',
`order_id` STRING COMMENT '订单id',
`user_id` STRING COMMENT '用户id',
`sku_id` STRING COMMENT '商品id',
`province_id` STRING COMMENT '省份id',
`activity_id` STRING COMMENT '参与活动规则id',
`activity_rule_id` STRING COMMENT '参与活动规则id',
`coupon_id` STRING COMMENT '使用优惠券id',
`date_id` STRING COMMENT '下单日期id',
`create_time` STRING COMMENT '下单时间',
`source_id` STRING COMMENT '来源编号',
`source_type_code` STRING COMMENT '来源类型编码',
`source_type_name` STRING COMMENT '来源类型名称',
`sku_num` BIGINT COMMENT '商品数量',
`split_original_amount` DECIMAL(16, 2) COMMENT '原始价格',
`split_activity_amount` DECIMAL(16, 2) COMMENT '活动优惠分摊',
`split_coupon_amount` DECIMAL(16, 2) COMMENT '优惠券优惠分摊',
`split_total_amount` DECIMAL(16, 2) COMMENT '最终价格分摊'
) COMMENT '交易域下单明细事务事实表'
PARTITIONED BY (`dt` STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t'
STORED AS ORC
LOCATION '/warehouse/gmall/dwd/dwd_trade_order_detail_inc/'
TBLPROPERTIES ('orc.compress' = 'snappy');
首日装载
-- 首日装载 交易域下单事务事实表
set hive.exec.dynamic.partition.mode=nonstrict;
insert overwrite table dwd_trade_order_detail_inc
partition (dt)
select od.id,
order_id,
user_id,
sku_id,
province_id,
activity_id,
activity_rule_id,
coupon_id,
date_format(create_time, 'yyyy-MM-dd') date_id,
create_time,
source_id,
source_type,
dic_name,
sku_num,
split_original_amount,
split_activity_amount,
split_coupon_amount,
split_total_amount,
date_format(create_time, 'yyyy-MM-dd')
from (
select data.id,
data.order_id,
data.sku_id,
data.create_time,
data.source_id,
data.source_type,
data.sku_num,
data.sku_num * data.order_price split_original_amount,
data.split_total_amount,
data.split_activity_amount,
data.split_coupon_amount
from ods_order_detail_inc
where dt = '2020-06-14'
and type = 'bootstrap-insert'
) od
left join (
select data.id,
data.user_id,
data.province_id
from ods_order_info_inc
where dt = '2020-06-14'
and type = 'bootstrap-insert'
) oi
on od.order_id = oi.id
left join (
select data.order_detail_id,
data.activity_id,
data.activity_rule_id
from ods_order_detail_activity_inc
where dt = '2020-06-14'
and type = 'bootstrap-insert'
) act
on od.id = act.order_detail_id
left join (
select data.order_detail_id,
data.coupon_id
from ods_order_detail_coupon_inc
where dt = '2020-06-14'
and type = 'bootstrap-insert'
) cou
on od.id = cou.order_detail_id
left join (
select dic_name,
dic_code
from ods_base_dic_full
where dt = '2020-06-14'
and parent_code = '24'
) dic
on od.source_type = dic.dic_code;
每日装载
-- 每日装载 交易域下单事务事实表
insert overwrite table dwd_trade_order_detail_inc
partition (dt = '2020-06-15')
select od.id,
order_id,
user_id,
sku_id,
province_id,
activity_id,
activity_rule_id,
coupon_id,
date_id,
create_time,
source_id,
source_type,
dic_name,
sku_num,
split_original_amount,
split_activity_amount,
split_coupon_amount,
split_total_amount
from (
select data.id,
data.order_id,
data.sku_id,
date_format(data.create_time, 'yyyy-MM-dd') date_id,
data.create_time,
data.source_id,
data.source_type,
data.sku_num,
data.sku_num * data.order_price split_original_amount,
data.split_total_amount,
data.split_activity_amount,
data.split_coupon_amount
from ods_order_detail_inc
where dt = '2020-06-15'
and type = 'insert'
) od
left join (
select data.id,
data.user_id,
data.province_id
from ods_order_info_inc
where dt = '2020-06-15'
and type = 'insert'
) oi
on od.order_id = oi.id
left join (
select data.order_detail_id,
data.activity_id,
data.activity_rule_id
from ods_order_detail_activity_inc
where dt = '2020-06-15'
and type = 'insert'
) act
on od.id = act.order_detail_id
left join (
select data.order_detail_id,
data.coupon_id
from ods_order_detail_coupon_inc
where dt = '2020-06-15'
and type = 'insert'
) cou
on od.id = cou.order_detail_id
left join (
select dic_name,
dic_code
from ods_base_dic_full
where dt = '2020-06-15'
and parent_code = '24'
) dic
on od.source_type = dic.dic_code;
1.3 取消订单事务事实表
订单明细表(order_detail)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单编号 | bigint(20) |
sku_id | sku_id | bigint(20) |
sku_name | sku名称(冗余) | varchar(200) |
img_url | 图片名称(冗余) | varchar(200) |
order_price | 购买价格(下单时sku价格) | decimal(10,2) |
sku_num | 购买个数 | bigint(20) |
create_time | 创建时间 | datetime |
source_type | 来源类型 | varchar(20) |
source_id | 来源编号 | bigint(20) |
split_total_amount | 分摊总金额 | decimal(16,2) |
split_activity_amount | 分摊活动减免金额 | decimal(16,2) |
split_coupon_amount | 分摊优惠券减免金额 | decimal(16,2) |
订单表(order_info)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
consignee | 收货人 | varchar(100) |
consignee_tel | 收件人电话 | varchar(20) |
total_amount | 总金额 | |
order_status | 订单状态 | varchar(20) |
user_id | 用户id | bigint(20) |
payment_way | 付款方式 | varchar(20) |
delivery_address | 送货地址 | varchar(1000) |
order_comment | 订单备注 | varchar(200) |
out_trade_no | 订单交易编号(第三方支付用) | varchar(50) |
trade_body | 订单描述(第三方支付用) | varchar(200) |
create_time | 创建时间 | datetime |
operate_time | 操作时间 | datetime |
expire_time | 失效时间 | datetime |
process_status | 进度状态 | varchar(20) |
tracking_no | 物流单编号 | varchar(100) |
parent_order_id | 父订单编号 | bigint(20) |
img_url | 图片路径 | varchar(200) |
province_id | 地区 | int(20) |
activity_reduce_amount | 促销金额 | decimal(16,2) |
coupon_reduce_amount | 优惠券 | decimal(16,2) |
original_total_amount | 原价金额 | decimal(16,2) |
freight_fee | 运费 | decimal(16,2) |
freight_fee_reduce | 运费减免 | decimal(16,2) |
refundable_time | 可退款日期(签收后30天) | datetime |
订单明细活动关联表(order_detail_activity)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单id | bigint(20) |
order_detail_id | 订单明细id | bigint(20) |
activity_id | 活动ID | bigint(20) |
activity_rule_id | 活动规则 | bigint(20) |
sku_id | skuID | bigint(20) |
create_time | 获取时间 | datetime |
订单明细优惠券关联表(order_detail_coupon)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单id | bigint(20) |
order_detail_id | 订单明细id | bigint(20) |
coupon_id | 购物券ID | bigint(20) |
coupon_use_id | 购物券领用id | bigint(20) |
sku_id | skuID | bigint(20) |
create_time | 获取时间 | datetime |
字典表(base_dic)
字段名 | 字段说明 | 类型 |
---|---|---|
dic_code | 编号 | varchar(10) |
dic_name | 编码名称 | varchar(100) |
parent_code | 父编号 | varchar(10) |
create_time | 创建日期 | datetime(0) |
operate_time | 修改日期 | datetime(0) |
建表
首日装载
每日装载
1.4 支付成功事务事实表
支付表(payment_info)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | int(11) |
out_trade_no | 对外业务编号 | varchar(50) |
order_id | 订单编号 | bigint(50) |
user_id | 用户id | bigint(20) |
payment_type | 支付类型(微信 支付宝) | varchar(20) |
trade_no | 交易编号 | varchar(50) |
total_amount | 支付金额 | decimal(10,2) |
subject | 交易内容 | varchar(200) |
payment_status | 支付状态 | varchar(20) |
create_time | 创建时间 | datetime |
callback_time | 回调时间 | datetime |
callback_content | 回调信息 | text |
订单明细表(order_detail)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单编号 | bigint(20) |
sku_id | sku_id | bigint(20) |
sku_name | sku名称(冗余) | varchar(200) |
img_url | 图片名称(冗余) | varchar(200) |
order_price | 购买价格(下单时sku价格) | decimal(10,2) |
sku_num | 购买个数 | bigint(20) |
create_time | 创建时间 | datetime |
source_type | 来源类型 | varchar(20) |
source_id | 来源编号 | bigint(20) |
split_total_amount | 分摊总金额 | decimal(16,2) |
split_activity_amount | 分摊活动减免金额 | decimal(16,2) |
split_coupon_amount | 分摊优惠券减免金额 | decimal(16,2) |
订单表(order_info)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
consignee | 收货人 | varchar(100) |
consignee_tel | 收件人电话 | varchar(20) |
total_amount | 总金额 | |
order_status | 订单状态 | varchar(20) |
user_id | 用户id | bigint(20) |
payment_way | 付款方式 | varchar(20) |
delivery_address | 送货地址 | varchar(1000) |
order_comment | 订单备注 | varchar(200) |
out_trade_no | 订单交易编号(第三方支付用) | varchar(50) |
trade_body | 订单描述(第三方支付用) | varchar(200) |
create_time | 创建时间 | datetime |
operate_time | 操作时间 | datetime |
expire_time | 失效时间 | datetime |
process_status | 进度状态 | varchar(20) |
tracking_no | 物流单编号 | varchar(100) |
parent_order_id | 父订单编号 | bigint(20) |
img_url | 图片路径 | varchar(200) |
province_id | 地区 | int(20) |
activity_reduce_amount | 促销金额 | decimal(16,2) |
coupon_reduce_amount | 优惠券 | decimal(16,2) |
original_total_amount | 原价金额 | decimal(16,2) |
freight_fee | 运费 | decimal(16,2) |
freight_fee_reduce | 运费减免 | decimal(16,2) |
refundable_time | 可退款日期(签收后30天) | datetime |
订单明细活动关联表(order_detail_activity)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单id | bigint(20) |
order_detail_id | 订单明细id | bigint(20) |
activity_id | 活动ID | bigint(20) |
activity_rule_id | 活动规则 | bigint(20) |
sku_id | skuID | bigint(20) |
create_time | 获取时间 | datetime |
订单明细优惠券关联表(order_detail_coupon)
字段名 | 字段说明 | 类型 |
---|---|---|
id | 编号 | bigint(20) |
order_id | 订单id | bigint(20) |
order_detail_id | 订单明细id | bigint(20) |
coupon_id | 购物券ID | bigint(20) |
coupon_use_id | 购物券领用id | bigint(20) |
sku_id | skuID | bigint(20) |
create_time | 获取时间 | datetime |
字典表(base_dic)
字段名 | 字段说明 | 类型 |
---|---|---|
dic_code | 编号 | varchar(10) |
dic_name | 编码名称 | varchar(100) |
parent_code | 父编号 | varchar(10) |
create_time | 创建日期 | datetime(0) |
operate_time | 修改日期 | datetime(0) |
建表
首日装载
每日装载
1.5 退单事务事实表
建表
首日装载
每日装载
1.6 退款成功事务事实表
建表
首日装
每日装载
1.7 购物车周期快照事实表
建表
首日装载
每日装载
2. 工具域
数据域 | 业务过程 | 粒度 | 维度 | 度量 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
时间 | 用户 | 商品 | 地区 | 活动(具体规则) | 优惠券 | 支付方式 | 退单类型 | 退单原因类型 | 渠道 | 设备 | ||||
工具域 | 领取优惠券 | 一次优惠券领取操作 | √ | √ | √ | 无事实(次数1) | ||||||||
使用优惠券(下单) | 一次优惠券使用(下单)操作 | √ | √ | √ | 无事实(次数1) | |||||||||
使用优惠券(支付) | 一次优惠券使用(支付)操作 | √ | √ | √ | 无事实(次数1) |
2.1 优惠券领取事务事实表
建表
首日装载
每日装载
2.2 优惠券使用(下单)事务事实表
建表
首日装载
每日装载
2.3 优惠券使用(支付)事务事实表
建表
首日装载
每日装载
3. 互动域
数据域 | 业务过程 | 粒度 | 维度 | 度量 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
时间 | 用户 | 商品 | 地区 | 活动(具体规则) | 优惠券 | 支付方式 | 退单类型 | 退单原因类型 | 渠道 | 设备 | ||||
互动域 | 收藏商品 | 一次收藏商品操作 | √ | √ | √ | 无事实(次数1) | ||||||||
评价 | 一次取消收藏商品操作 | √ | √ | √ | 无事实(次数1) |
3.1 收藏商品事务事实表
建表
首日装载
每日装载
3.2 评价事务事实表
建表
首日装载
每日装载
4. 流量域
数据域 | 业务过程 | 粒度 | 维度 | 度量 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
时间 | 用户 | 商品 | 地区 | 活动(具体规则) | 优惠券 | 支付方式 | 退单类型 | 退单原因类型 | 渠道 | 设备 | ||||
流量域 | 页面浏览 | 一次页面浏览记录 | √ | √ | √ | √ | √ | 浏览时长 | ||||||
动作 | 一次动作记录 | √ | √ | √ | √ | √ | √ | √ | 无事实(次数1) | |||||
曝光 | 一次曝光记录 | √ | √ | √ | √ | √ | √ | √ | 无事实(次数1) | |||||
启动应用 | 一次启动记录 | √ | √ | √ | √ | √ | 无事实(次数1) | |||||||
错误 | 一次错误记录 | √ | √ | √ | √ | 无事实(次数1) |
4.1 页面浏览事务事实表
建表
首日装载
每日装载
4.2 启动事务事实表
建表
首日装载
每日装载
4.3 动作事务事实表
建表
首日装载
每日装载
4.4 曝光事务事实表
建表
首日装载
每日装载
4.5 错误事务事实表
建表
首日装载
每日装载
5. 用户域
数据域 | 业务过程 | 粒度 | 维度 | 度量 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
时间 | 用户 | 商品 | 地区 | 活动(具体规则) | 优惠券 | 支付方式 | 退单类型 | 退单原因类型 | 渠道 | 设备 | ||||
用户域 | 注册 | 一次注册操作 | √ | √ | 无事实(次数1) | |||||||||
登录 | 一次登录操作 | √ | √ | √ | √ | √ | 无事实(次数1) |
5.1 用户注册事务事实表
建表
首日装载
每日装载
5.2 用户登录事务事实表
建表
首日装载
每日装载
6. 数据装载脚本
6.1 首日装载脚本
创建 ods_to_dwd_init.sh
vim ods_to_dwd_init.sh
脚本执行权限
chmod 777 ods_to_dwd_init.sh
6.2 每日装载脚本
创建 ods_to_dwd.sh
vim ods_to_dwd.sh
脚本执行权限
chmod 777 ods_to_dwd.sh
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153233.html原文链接:https://javaforall.cn
相关文章
- webApp开发心得「建议收藏」
- 基于微信小程序云开发(校园许愿墙app)妄想替代学校的表白墙
- 微服务架构开发实战:微服务的高级主题,自动扩展的常见模式
- Chrome扩展插件的开发--获取网页Cookies
- 测试开发之前端系列!Vue 通信方式 slot (插槽)的分类
- 一款基于代码生成器的Java快速开发平台【jeecg-boot】
- 浅谈软件安全开发
- 【开发经验】SpringBoot与Vue-cli解决前后端交互跨域问题
- 【Android 应用开发】Android之Bluetooth编程
- 【Android 应用开发】Android UI 设计之 TextView EditText 组件属性方法最详细解析
- Flink 1.17发布后数据开发领域需要关注的一些点
- Solidity 智能合约开发 - 基础
- NFT质押借贷交易平台开发智能合约系统搭建
- iOS全屏滑动代码详解手机开发
- equals()和hashCode()区别详解手机开发
- Linux下的嵌入式开发与应用(linux下的嵌入式开发)
- Redis实现长连接:PHP开发入门(redis长连接php)
- 实现idea开发MySQL应用:借助MySQL驱动(ideamysql驱动)
- Linux驱动笔记:掌握Linux驱动开发,让你的设备运行更加高效稳定。(linux驱动笔记)