数据仓库搭建方案二

  • 文档创建者:Wendy123456
  • 历史版本:4
  • 最近更新:FineDataLink 于 2022-05-30
  • 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.2 调度配置

    使用调用任务节点,将参数赋值、条件分支、数仓-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


    附件列表


    主题: 数据开发-定时任务
    • 有帮助
    • 没帮助
    • 只是浏览
    • 评价文档,奖励 1 ~ 100 随机 F 豆!