历史版本2 :数仓调度场景概述 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 背景

数据仓库的调度配置是实际业务中必不可少的一环。通过调度配置,可以实现数据的更新同步,从而让数据持续的应用在业务中。

例如,某销售公司当前情况如下:

当前有两个部门的数据:「销售」和「财务」;在 ODS、DW、DM 3层中,ODS层是由业务系统直接拉取过来的原始数据,目前分别存储在接口数据和数据库中;DW 层是基于 ODS 层进行汇总处理的中间层数据;DM 层是基于 DW 层,并且根据报表展示诉求而加工获得的结果层数据。

现在希望能实现以下数仓调度任务:将分散在接口和数据库中的底层数据落库至指定数据库,形成 ODS 层数据并定期(每周一次)更新数据, ODS 层定期(每周一次)同步更新的数据到 DW层,然后最终 DM 层使用更新的最新数据进行数据处理和落库,供给其他可视化报表展示工具使用。

1.2 思路

  • 首先需要将分散在其他系统的 ODS 数据落库至 FineDataLink 指定的数据库;

  • 将 ODS 层数据中更新的数据同步至 DW 层数据中。若已有的 DW 层数据中最新更新时间(比如最新的销售时间)晚于 ODS 层数据中的时间,即 ODS 层有新数据生成,需要将其同步至 DW 层中;

  • 然后 DM 层使用 DW 层数据进行数据处理和业务分析并落库。

1.3 效果预览

任务层级如下图所示:

任务设计效果如下图所示:

2. 操作步骤编辑

2.1 设置 ods 层任务

首先需要设置 ODS 层任务,将来自接口数据的「财务数据」和存储在固定数据库的「销售数据」通过 FineDataLink 落库至指定数据库,并通过使用参数和调度任务,实现 ODS 层任务定时更新,并发送消息通知。

首先创建「ODS」文件夹,存放ODS层任务。

2.1.1 设置财务数据同步任务

由于财务数据包含了三个区「华北」、「华东」和「华南」,同时财务数据是需要通过接口取数,因此可以通过三个「数据转换」进行取数落库。

新建 ETL 任务,命名任务为「ODS_财务数据」,在画布中拖入数据转换节点,命名为「华北财务数据」,如下图所示:

进入数据转换界面后,使用 RestAPI 输入将接口数据取出,如下图所示:

添加「JSON解析」并将RestAPI 输入连接,点击「选择JSON节点」,选择需要进行解析的JSON,点击「确定」,如下图所示:

在数据预览界面,即可看到解析完成的华北财务数据,如下图所示:

取出数据后即可将数据同步至指定的数据库,由于我们需要实现定时更新,比如每周更新一次,让落库的 ODS 层数据保持时效性,因此需要通过设置自定义参数进行控制。

点击「确定」保存华北财务数据做的设置,然后在数据转换节点界面设置参数,即 「date」参数显示任务执行时间前7天的时间,如下图所示:

新增「Spark SQL」,连接上一个算子后,判断「订单生成时间」字段值是否晚于指定参数值,如果是,则说明接口数据中有新数据生成,需要同步至指定数据库,如下图所示:

此时已经选好需要输出的数据,新增 DB 表输出算子,连接上一个节点,然后选择需要数据同步的目标数据表,如下图所示:

其他两个地区「华东」和「华南」的财务数据同理。

为了控制三个数据转换任务的执行,可以使用虚拟节点将其连接,如下图所示:

2.1.2 设置销售数据同步任务

销售数据也是包含三个区「华北」、「华东」和「华南」,并且存储在数据库 FRDemo 中,希望将该数据和 2.1.1 节中的接口数据存放到同一个数据库中,因此使用数据同步功能。

以华北销售数据为例。

新建 ETL 任务,命名任务为「ODS_销售数据」,在画布中拖入数据同步节点,命名为「华北财务数据」,如下图所示:

由于我们需要实现定时更新,比如每周更新一次,让落库的 ODS 层数据保持时效性,因此需要通过设置自定义参数进行控制。

设置参数 date,即 「date」参数显示任务执行时间前7天的时间,如下图所示:

在数据同步节点的「数据来源」界面,选择来源的数据库,并查询需要同步的数据,判断「销售时间」值是否晚于指定参数值,如果是,则说明来源数据库中有新数据生成,需要同步至指定数据库,如下图所示:

将需要输出数据同步至指定的目标数据库中即可,如下图所示:

其他两个地区「华东」和「华南」的销售数据同理。

为了控制三个数据同步任务的执行,可以使用虚拟节点将其连接,如下图所示:

2.1.3 设置 ODS 层调度任务

ODS 层的数据同步任务已经完成,此时需要通过新建「ODS调度」任务,将财务数据和销售数据的两个任务组合起来同时执行,并发送执行后的结果通知。

新建 ETL 任务命名为「ODS 调度」,添加调用任务节点,选择 2.1.1 节创建的财务数据任务,如下图所示:

同理,销售数据也进行调用。

然后新增消息通知节点,ODS 层执行成功则发消息通知,如下图所示:

2.1.4 进行调度配置


2.2 设置 DW 层任务

DW 层任务即将 ODS 层数据中更新的数据同步至 DW 层数据中。若已有的 DW 层数据中最新更新时间(比如最新的销售时间)晚于 ODS 层数据中的时间,即 ODS 层有新数据生成,需要将其同步至 DW 层中,同时记录更新的开始时间和结束时间,并发送消息通知。

2.2.1 设置财务数据任务

首先为了便于记录数据更新的日志,因此需要获取任务开始时间并将其设置为参数,当任务开始执行的时候就记录当前时间。

新建 ETL 任务,命名为「DW_财务」,然后添加「参数赋值」功能,设置 SQL 语句显示当前时间,并将其设置为参数 time1,如下图所示:

然后开始进行任务设置。

判断 DW 层中 dx_caiwu 数据中最晚的订单生成时间是否晚于 ODS 层中财务数据的订单时间,也就是将 ods层新增的数据同步至DW 层中 dx_caiwu 数据表中。

使用参数赋值,取出dx_caiwu中最晚订单生成时间,并设置为 time 参数,如下图所示:

新建数据同步节点,将2.1 节中落库的 ODS 华北财务数据取出,并使用time参数,如果华北财务数据中「订单生成时间」晚于 DW 层中 dx_caiwu 数据中最晚订单时间,则将这部分新增的数据同步至 dx_caiwu 数据表中,如下图所示:

「华东财务」和「华南财务」同理。

数据同步完成后就需要再次记录结束的时间,来写入日志中,因此和获取开始时间一样,需要新建参数赋值节点,获取结束时间并设置时间参数,如下图所示:

在任务获取开始和结束时间后,即可通过SQL脚本将时间写入准备好的日志数据表 dw_logs 中,如下图所示:

然后设置消息通知,当DW_财务数据任务执行成功,则发送通知,如下图所示:

2.2.2 设置销售数据任务

销售数据的任务同理。

2.2.3 设置 DW 调度任务

DW 层的数据同步任务已经完成,此时需要通过新建「DW调度」任务,将财务数据和销售数据的两个任务组合起来同时执行,并发送执行后的结果通知。

新建 ETL 任务命名为「DW调度」,添加调用任务节点,选择 2.2.1 节创建的财务数据任务,如下图所示:

同理,销售数据也进行调用。

然后新增消息通知节点,DW 层执行成功则发消息通知,如下图所示:

2.3 设置 DM 层任务


2.3.1 进行数据处理

2.3.2 进行消息通知

2.4 设置总数仓调度任务