手把手教你如何进行数仓搭建

楼主
我是社区第1753786位番薯,欢迎点我头像关注我哦~

1. 概述

1.1 问题描述

很多客户希望采用FineDataLink搭建数据仓库,数据仓库中ETL任务的调度配置是非常关键的一方面。我们希望数仓层级中的ODS层、DW层和DM层,层层相关,并且每个层级的ETL任务都是以最高的效率来执行的。

 

1.2 目标场景

客户需要搭建包含ODS、DW、DM3层的数据仓库

  • ODS层是由业务系统直接拉取过来的原始数据。
  • DW层是基于ODS层进行汇总处理的中间层数据。
  • DM层是基于DW层,并且根据报表展示诉求而加工获得的结果层数据。

其中业务系统有3套,OA、ERP和线下Excel数据

  • ERP和线下Excel数据每天固定更新一次。
  • OA数据不定期更新。
  • 为提高执行效率,当OA系统数据有变化时,对应ODS层ETL任务才需要运行。

 

1.3 解决方案

通过参数赋值节点获取OA系统最新的更新时间,再通过数设置功能条件分析节点进行控制。

  • 若ETL任务执行的当天OA系统有数据更新,ODS层则执行OA、ERP和Excel。
  • 若OA系统当天未更新,ODS层则仅执行ERP和Excel数据,DW层和DM层基于ODS层数据进行处理。

由于每个层级内的ETL任务比较多,为方便查看,可以通过调用任务节点进行管理,形成数仓调度任务

注意:由于DW层ETL任务需要引用OA系统对应ODS层数据,当数仓调度任务首次执行时,恰好当天OA系统数据并没有更新,此时DW层对应任务将会执行失败。

为避免此报错的产生,数仓调度任务开启运行前,需要单独运行ODS层中获取OA系统数据的同步任务一次,具体设计方法见下方。

2.png

 

2. 任务开发流程

我们累计需要创建4个ETL任务,分别是:数仓-ods层、数仓-dw层、数仓-dm层、数仓调度层。

2.1 数仓-ODS层

由于ODS层中OA系统相关数据表仅有1张,所以此表的数据抽取,创建于数仓调度层ETL任务中,通过独立的数据同步节点完成。

ERP和线下Excel数据预计有6张表,如果在数仓调度层的ETL任务中使用6个数据同步节点,会使ETL任务显示比较臃肿,所以我们创建一个ETL任务,命名:数仓-ODS层,在数仓调度层ETL任务中引用数仓-ODS层ETL任务即可。

为提高ODS层内多个ETL任务的执行效率,我们设置该层所有任务可并行运行,我们运用虚拟节点指向多个数据同步节点,完成此思路,具体设置见下方。

1647500576497562.png

 

2.2 数仓-DW层

参考ODS层任务设计,我们再创建一个ETL任务,命名:数仓-DW层,该层中的3个数据同步节点,分别从ODS层的ERP、OA、Excel3类数据表汇总加工数据,并存储至DW层中间表。

1647500647166077.png

 

2.3 数仓-DM层

参考ODS层、DW层任务设计,我们再创建一个ETL任务,命名数仓-DM层,数据同步中获取的数据,均来源于DW层数据表,具体设置见下方。

5.png

 

2.4 数仓调度层

2.4.1 获取OA最新更新时间

创建数仓调度层ETL任务,命名:数仓调度层,使用参数赋值节点,max()函数获取OA系统中更新时间的最大值,并将此时间点赋值给updatetime参数,sql语法和节点显示效果见下方。

select date_format(max(starttime),'%Y-%m-%d') from updatetime

6.png

2.4.2 判断OA系统今日是否更新

1)参数设置

使用自定义参数功能,创建today参数,类型选择日期,值为yyyy-mm-dd,含义为ETL任务运行时的日期。

1647500706285488.png

2)条件分支

使用条件分支数据同步调用任务节点,将条件分支节点分别连向ODS层的2个流程;

条件分支节点中,进行设置:

  • 当updatetime参数和today参数数值相等时,即OA系统最新更新时间为今日时,执行ODS层-OA、1-ODS层-ERP流程。
  • 当两个参数数值不等时,即今天OA系统没有进行数据更新,执行2-ODS层-ERP流程。

具体设置如下:

8.png

9.png

2.4.3 调度配置

使用调用任务节点,将参数赋值、条件分支、数仓-ODS层、数仓-DW层、数仓-DM层衔接起来,设置调度配置,设置ETL任务的更新频率,数仓-ODS层、数仓-DW层、数仓-DM层,3个ETL任务不再需要设置单独的调度配置频率,跟随数仓调度层ETL任务的更新频率即可。

10.png

 

2.5 任务运行

为保证ODS层中OA数据表不为空,所以任务正式运行前,需要单独运行一次ODS层-OA节点;

11.png

若ETL任务运行当天,恰好OA系统进行了数据更新,运行日志效果如下,其中【2-ODS层-ERP、EXCEL】节点被跳过执行。

12.png

 

 

点击此处,直接体验

想要学习更多技术和功能,请点击FineDataLink文档

由0到1,带您进入FineDataLink的世界

分享扩散:

沙发
发表于 2023-9-26 11:17:12
没有客服吗
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

1回帖数 1关注人数 3057浏览人数
最后回复于:2023-9-26 11:17

返回顶部 返回列表