第三章 基于dolphinscheduler的明细模型设计之一致性事实表(DWD)建设

1、DWD层概述

1.1、DWD层定义
  • 数据明细层:此层数据需要按照主题域存放
1.2、DWD层数据组成

(1)DWD层一般是对ODS层的业务主题进行加工和划分,表中记录的仍然是明细数据

(2)从ODS层抽取需要的数据where,数据量级会减少,但不会做聚合操作

1.3、DWD层表结构&生命周期

(1)表结构:通用字段+通用扩展字段

(2)命名规则:dwd_业务表名称__1h

  • 前缀统一为dwd,后缀统一(小时级别为h,天级别为1d,月级别为1m)

(3)生命周期:92天

2、DWD层数据处理方式

2.1、异常数据处理

​ 包括但不限于空值,脏值,超过尝试极限范围值。

2.2、参数解析

​ 将常用字段从JSON或者文本中解析成独立的可使用字段,同时保留原始Json字段,供临时需求分析使用

2.3、原子指标加工

​ 将埋点的事件转换为原子指标,方便下游筛选或者汇总累加,比如eventcode=dt_click,转化为clk_pv=1,

注意:不做任何程度聚合,只是进行最基本指标加工

2.4、生成部分DIM表

​ 对于依赖客户端&后台上报的维度属性,生成同一的维度表

3、DWD层开发样例

绪论、需求说明
  • 将ODS上报数据增量量抽取到DWD层,按天分区
create table ods.ods_ios_di(
p_date string 
,etl_time string 
,server_ip      string  
,log_time       string
,guid           string
,search_words    string
,age            String 
,city           String 
,phone         string
,appid          string
,msgid          string
,httpcode       string
,httpcontent    string
,msg            string
)
partitioned by (`pt` string)
row format delimited fields terminated by ',';
3.1、创建Hive目标表

(1)编写建表脚本

CREATE TABLE dwd.dwd_ios_di(
p_date STRING COMMENT '分区日期',
etl_time STRING COMMENT '数据加载时间',
guid STRING COMMENT '客户端唯一标识',
guid_pv STRING COMMENT 'qv',
msgid STRING COMMENT '客户端消息id',
prod_type BIGINT COMMENT '产品类型{1:产品A;2:产品B;99:其他}',
 busi_type BIGINT COMMENT '业务类型{1:xs;2:zx;3:sp;4:xcx;......99:其他}',
 server_ip STRING COMMENT '服务器ip',
 log_time STRING COMMENT '日志时间',
 phone STRING COMMENT '手机相关信息',
 httpcode STRING COMMENT 'http返回码',
 httpcontent STRING COMMENT '下发状态码(0代表成功,其余代表失败,具体失败原因因厂商不同而不同)'
)
partitioned by (`pt` string)
row format delimited fields terminated by ',';

(2)配置SQL组件创建表

  • 数据源:hive(dwd)
  • sql类型:非查询

在这里插入图片描述
(3)部署上线运行

  • 部署上线

在这里插入图片描述

  • 进入画布单独运行建表脚本

在这里插入图片描述

3.2、测试数据

(1)编写业务处理逻辑脚本

  • 处理逻辑:数据转换(加密、标准化)、异常值处理
insert overwrite table dwd.dwd_ios_di partition (pt=${pt})
select
 ${pt}      as pt
 ,from_unixtime(unix_timestamp(),'yyyy-MM-dd HH:mm:ss')  as etl_time
 -- 进行md5加密
 ,md5(guid,msgid)      as push_id
 ,guid  as guid
 --  进行原子指标加工
 ,"1" as guid_pv
 ,msgid  as msgid
 -- 进行数据标准化
 ,case when appid not in ('11','12','13','14','22') then 1 else 2 end as prod_type
 ,case
  when appid ='111' and length(msgid)=7 then 1      
  when appid in ('10','11','12') and length(msgid) >7 then 2         
  when appid ='13'  then 3          
  when appid ='13'  then 4          
  when appid in ('20','21','22','23') then 5        
  else 99
  end as busi_type
 ,appid  as appid
 ,server_ip  as server_ip
 ,log_time   as log_time
 ,phone as phone
 ,httpcode   as httpcode
 ,httpcontent   as httpcontent
 ,msg    as msg
from
(
select
server_ip
,log_time
,guid
,module
,appid
,msgid
,httpcode
,httpcontent
,msg
,row_number() over(partition by guid,msgid order by log_time asc) as rank
from ods.ods_ios_di
where pt=${pt} and guid RLIKE '^[4-9A-Z]{24}$' 
-- 进行数据过滤,将非本业务集市数据剔除
and  httpcode = 200 and module not in (1,2,3)
) t1
where rank=1

在这里插入图片描述
(3)配置依赖

  • 告警策略:超时告警、超时失败。
  • 依赖周期:日、今天

在这里插入图片描述

(4)运行调试

  • 部署上线

在这里插入图片描述

  • 进入画布,运行链路

在这里插入图片描述

  • 补数,跑一周数据后进行对数
    • 串行执行:资源不足时使用
    • 并行执行:资源充足时使用

在这里插入图片描述

3.3、定时调度

(1)调度周期

  • 每天凌晨6点调度前一天数据
    在这里插入图片描述

(2)失败策略

  • 失败策略:结束

在这里插入图片描述

(3)通知策略

  • 通知策略:失败发

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

随缘清风殇

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值