1. 概述
1.1 背景
数据仓库的调度配置是实际业务中必不可少的一环。通过调度配置,可以实现数据的更新同步,从而让数据持续地应用在业务中。
例如,某销售公司当前情况如下:
当前有两个部门的数据:「销售」和「财务」,目前分别存储在接口数据和业务系统对应数据库中;在数据仓库的 ODS、DW、DM 三层中,ODS 层是由业务系统直接拉取过来的原始数据;DW 层是基于 ODS 层进行汇总处理的中间层数据;DM 层是基于 DW 层,并且根据报表展示诉求而加工获得的结果层数据。
现在希望能实现以下数仓调度任务:将接口和数据库中的底层数据落库至指定数据库,形成 ODS 层数据并定期(每周一次)更新数据, ODS 层定期(每周一次)同步更新的数据到 DW层,DW层定期(每周一次)同步更新的数据到 DM层,供给其他可视化报表展示工具使用。
1.2 思路
首先将各个业务系统的原始数据使用 FDL 抽取至数据仓库的 ODS层,由于读取的是业务系统的历史全量数据,所以选择「先清空目标表再写入数据」的写入方式,当抽取数据量较大时,此写入方式的执行效率最高、性能最佳;
其次将ODS层数据表中新增部分,写入到 DW 层数据表,由于示例中新增部分数据相比历史全量数据是比较少的,所以选择「直接将数据写入目标表」的写入方式;
最后将 DW 层的数据进行汇总,集中至 DM 层数据表,由于示例中 DM 层的计算逻辑需要基于历史全量数据进行,所以数据量较大,但是此类数据在 DM 层数据表中已经存在,所以我们选择「指定比对字段,比对字段遇相同值,覆盖目标表数据」的更新方式,形成可供直接分析的结果数据。
数据写入更新方式详情参见:数据更新专题,用户可以根据实际数据情况选择合适的更新方式,本文示例仅为参考。
1.3 效果预览
FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「场景案例>数据仓库场景」下的「01数据仓库调度示例一」文件夹。
任务设计效果如下图所示:
任务层级如下图所示:
2. 操作步骤
步骤 | 说明 |
---|---|
设置ODS层任务 | 设置 ODS 层任务需要将来自接口数据的「财务数据」和存储在固定数据库的「销售数据」通过 FineDataLink 落库至指定数据库,并通过使用参数和调度任务,实现 ODS 层任务定时更新,并发送消息通知。 |
设置DW层任务 | DW 层任务即将 ODS 层数据中更新的数据同步至 DW 层数据中。若已有的 ODS 层数据中最新更新时间(比如最新的销售时间)晚于 DW 层数据中的时间,即 ODS 层有新数据生成,需要将其同步至 DW 层中,同时记录更新的开始时间和结束时间,并发送消息通知。 |
设置DM层任务 | DM 层使用更新的数据进行数据处理,将 DW层的销售数据和财务数据进行关联,合并成宽表并输出至指定数据库,为其他报表等可视化工具提供数据源。 |
设置总调度任务 | 三个层级的数仓都已经设置完成,接下来就可以将 ODS、DW、DM 层的调度任务进行组合,通过调用任务的形式组合在一个任务中,方便后续的任务管理和触发。 |
设置好任务后,若你希望数仓调度任务可以定时执行,可以使用定时任务调度配置。
3. 结果查看
设置好以上任务后,即可运行任务「调度总任务」,消息通知任务运行情况:
任务执行日志中将出现任务运行的相关记录,如下图所示: