历史版本2 :第一个定时开发任务 返回文档
编辑时间: 内容长度:图片数:目录数: 修改原因:

目录:

1. 概述编辑

1.1 版本说明

报表服务器版本
插件版本功能变动
11.0V1.9
  • 日志新增:写入数据行数、更新数据行数,详情参见本文 3.1 节

  • ETL 任务适配集群,详情参见本文 3.2 节

1.2 应用场景

本文将设计一个简单的 ETL 任务,将一个数据库中的数据迁移到另外一个数据库中,并对迁移过去的数据进行筛选处理。

希望您通过这个案例可以了解设计任务时的各种操作,掌握 ETL 任务开发的基本方法。

2. 示例编辑

2.1 创建任务

1)打开决策系统,进入「数据平台」模块,在「ETL作业>数据开发」中新建一个 ETL 任务,如下图所示:

16.png

2)光标悬浮在该任务上方,点击右侧的设置按钮,将任务重命名为「简单示例」,如下图所示:

17.png

2.2 设计任务

2.2.1 数据跨库迁移

实现将 SQLite 数据库下销量表中华东地区的数据全部抽取到 MySQL 数据库下,MySQL 数据库需要新建一张表来保存这些数据。

1)数据跨库迁移通过「数据同步」节点实现。从节点列表处将一个「数据同步」节点拖到设计界面,点击该节点后下方会显示该节点的设置项。

2.gif

2)先设置数据从哪里抽取,设置项选择「数据来源」,数据源类型选择「SQLite」,数据连接选择「FRDemo」。使用 SQL 语句将销量表中所有华东地区的数据取出来:

select * from 销量 where 地区='华东'

注:在「ETL作业」中使用到的所有数据连接不要随意改名字,改名字会导致「ETL作业」中选择的数据连接和数据表丢失。

18.png

SQL 语句写好后可以通过数据预览按钮查看取数效果,如下图所示:

3.gif

3)再设置数据抽取后保存到哪里去,设置项选择「数据去向」,数据源类型选择「MySQL」,数据连接选择「数仓测试dwTest2」。

还需要设置数据保存到哪张表里去,此处直接新建一个表来保存这些数据,目标表选择「自动建表」,表名称填写「salecopy」,如下图所示:

19.png

4)字段映射是调整源表跟目标表字段关系的,此处采用默认设置即可,至此数据同步节点已经设置好。

2.2.1 数据筛选处理

实现将 salecopy 中销量大于 600 的数据保存到 MySQL 另一张表中,这张表也要新建,此处用 SQL 语句来建表。

1)将一个「SQL脚本」节点拖到设计界面,数据源类型选择「MySQL」,数据连接选择「数仓测试dwTest2」,并在下方填写建表「salesum」的语句。

20.png

建表 SQL 语句如下:

CREATE TABLE IF NOT EXISTS `salesum` (
`地区` varchar(255) NULL DEFAULT NULL,
`销售员` varchar(255) NULL DEFAULT NULL,
`销量` float NULL DEFAULT NULL 
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Compact;

2)再拖一个「SQL脚本」节点,数据源类型选择「MySQL」,数据连接选择「数仓测试dwTest2」,填写 SQL 语句将 salecopy 中销量大于 600 的数据插入到 salesum 中去。

21.png

SQL 语句如下:

insert into salesum(地区,销售员,销量)
select 地区,销售员,销量 
    from salecopy 
    where 销量>600

2.2.3 建立节点运行顺序

通过连线和箭头指向,定义好节点在任务中的运行顺序,操作如下图所示:

4.gif

2.2.4 节点重命名

为了方便以后的节点管理,可以给这些节点都重命名下,这样可以直观看出节点的作用。

右键节点弹出的选项中,选择「重命名」,然后修改名字点击确定即可,操作如下图所示:

6.gif

示例节点最终重命名完的效果如下图所示:

22.png

2.3 运行任务

点击右上角「保存并运行」,底部日志会显示节点运行情况,如下图所示:

7.gif

2.4 效果查看

MySQL 数据库中生成了两个表:

salecopy:

1647483653984525.png

salesum:

1647483667320463.png

3. 功能变动编辑

3.1 运行日志优化

1.9 版本日志新增:写入数据行数、更新数据行数,这两个日志点仅在比对字段非主键时显示,比对字段为主键时不显示。

25.png

3.2 集群适配

1)认定主节点

对于纯 FineReprot 集群工程,默认以"文件同步基准节点"为主节点。

对于 FineBI+FineReprot 集群工程,以 Spider 的主节点作为主节点。

2)所以请求都转发到主节点

前端请求:查看任务文件和配置、文件增删改、配置增删改、手动触发 ETL 任务运行、查看日志、下载日志,会被拦截并转发至主节点处理。

3)主节点宕机处理策略

如果系统中认定的主节点从集群中消失,则按照节点启动顺序,将备用节点上升为任务运行节点。

若主节点恢复,则待当前队列中的任务运行完毕后,将新的任务继续交由主节点运行。

4. 注意事项编辑

4.1 迁移和删除任务

ETL 作业中的任务保存在路径:FineReport_10.0\webapps\webroot\WEB-INF\dpworks 下,如下图所示:

  • 若用户想迁移任务,可将 dpworks 下对应任务文件夹从 A 工程复制到 B 工程对应路径下,迁移后需要重新进行调度配置

  • 用户不能通过删除任务文件夹的方式来删除任务,直接删除任务文件夹会导致 ETL作业 前端报错。

1647483693564701.png

4.2 FineDB配置相关

在 FineDB 中, fine_dp_conf_entity 表记录任务配置信息,fine_dp_execute_record 表记录任务执行信息,其他数据平台工具相关的表包括:fine_dp_conf_entity_valuefine_dp_data_slicefine_dp_dateset,注意不要操作以上表的数据或者误删表,否则会影响 ETL 作业工具的使用。