1. 概述
1.1 版本
FineDataLink 版本 | 功能变更 |
---|---|
4.1.6.4 | 定时任务支持写入 MongoDB |
1.2 应用场景
有些用户业务系统的数据库是 MongoDB,需要通过定时任务将数仓或其他业务系统的数据输出到 MongoDB 。
1.3 功能简介
定时任务支持写入 MongoDB。如下图所示:
2. 使用说明
1)使用该功能前,需要确保数据平台已经注册了「NoSQL」功能点,注册事项详情参见:注册简介
2)需要先创建 MongoDB数据连接
3)可使用 to_json 函数,构建 MongoDB 集合中的 json 字段。
3. 操作步骤
3.1 场景模拟
本文示例:将本地表 jihe 中的数据同步到包含 array 字段类型的 MongoDB 集合中。
示例数据(源数据):jihe.xlsx
如下图所示:
MongoDB 集合数据(info 字段为 array 类型):
需要使用「Spark SQL」算子,将二维表的多个字段拼成一个 json 对象数组。
3.2 读取本地数据
1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。
2)拖入「DB表输入」算子,读取本地数据。如下图所示:
3.3 处理数据
1)拖入「Spark SQL」算子,将本地数据的 date、time 字段拼成一个 json 对象数组,便于后续同步到包含 array 字段类型的 MongoDB 集合中。如下图所示:
注:语句中表名和表字段需要点击生成;to_json、struct 函数具体介绍请参见:to_json、struct 函数
SELECT username, concat("[",concat_ws(",",collect_list(to_json(struct(date,time)))),"]")as kaoqin
FROM DB表输入 GROUP BY username
点击「数据预览」,如下图所示:
3.4 数据输出
1)拖入「MongoDB输出」算子,将处理后的数据输出到 MongoDB 集合中,写入方式选择「直接将数据写入目标集合」即可。如下图所示:
注:数据同步到 MongoDB 集合的数组字段时,源表字段值中需要带中括号[]
各设置项介绍如下表所示:
设置项 | 说明 |
---|---|
数据连接 | 已配置过且有使用权限的 MongoDB 数据连接 |
数据库 | 选择数据连接后,备选项为对应数据连接下所有数据库 |
目标集合 | 已存在集合: 选择数据库后,备选项为对应数据库下所有集合 自动建集合: 1)支持配置目标集合字段名称、字段类型 2)4.1.6.1 之前版本集合名称支持包含英文、数字、下划线,4.1.6.1 及之后版本,集合名称支持包含英文、中文、数字、下划线 3)支持配置字段的非空属性 4)不支持配置主键字段:因为 MongoDB 集合的主键,默认为「_id」字段,不支持自定义 5)不支持「手动建表」功能 |
字段映射 | 1)不展示字段的「主键」字段(即_id字段) 2)支持给已存在集合的「_id」字段配置映射。如下图所示: |
写入方式 | 1)写入方式支持清空目标集合,再写入数据 2)写入方式支持直接将数据写入目标集合
3)写入方式支持:基于标识字段,追加/更新/删除数据
|
2)点击右上角「保存」按钮。
3.5 效果查看
运行后,MongoDB 集合数据如下图所示: