1. 概述
1.1 应用场景
简道云表单中包含两个子表单,其中一个子表单中包含成员单选、部门单选控件。如下图所示:
已有数据如下图所示,现希望将该表单的数据落库。
1.2 实现思路
使用「简道云输入」算子读取表单数据,将「主表单」数据、「零部件明细」子表单、「负责人」子表单分别存储到三张表中。
注:简道云表单数据若存储到一张数据表中,会造成数据膨胀。
1.3 注意事项
注:本文方式适用于 4.1.6.2 及之后版本;4.1.6.2 之前版本,2.5.2 节JSON解析时请参见:历史版本 的 2.5.2 节内容。
本文示例场景中,若后续简道云表单中数据增加或更新时,子表单数据也想跟随增加/更新(本文示例选择的方案一):
1)方案一:
子表单数据落库前写入方式选择「清空目标表,再写入数据」。
2)方案二:
子表单数据解析后,保留子表单 id 字段作为落库后的主键(例如 2.4.2、2.5.2 节中 json 解析时勾选 _id 字段),落库前自动建表时,将 _id 作为主键,写入方式选择「追加写入数据」,设置主键冲突策略为「主键冲突,覆盖目标表的数据」。
2. 操作步骤
2.1 简道云表单字段处理
在简道云表单接入前,建议提前设置字段别名,否则接入到 FineDataLink 中时会使用字段原始名,不便于在 FineDataLink 中进行业务处理。
进入简道云应用,进入表单的编辑界面,点击「扩展功能>数据推送>设置字段别名」。如下图所示:
点击展开更多 |
2.2 新建简道云数据连接
需要 新建简道云数据连接,以便「简道云输入」算子读取简道云数据。
2.3 主表单数据落库
将主表单数据落库,主表单数据如下图所示:
2.3.1 读取简道云表单数据
1)新建定时任务,拖入「数据转换」节点,进入「数据转换」节点。
2)拖入「简道云输入」算子,选择要读取的简道云表单。
其中,数据连接处显示有权限的,且已配置的简道云数据连接,此处选择前面配置好的数据连接「简道云」;设置要读取的简道云表单及它所在的应用。如下图所示:
点击「数据预览」,可看到子表单数据为 JSON 格式,若想将子表单数据落库,落库前需要解析。如下图所示:
2.3.2 剔除不必要字段
由于我们要将主表单数据落库,一些不需要的字段需要在落库前剔除。
1)拖入「字段设置」算子,只保留number、date、equipment_name、total_price字段,其余字段都删除。如下图所示:
2)点击「数据预览」,如下图所示:
2.3.3 主表单数据输出
1)拖入「DB表输出」算子,将主表单数据输出。如下图所示:
2)「写入方式」Tab 下,写入方式选择「清空目标表,再写入数据」,将主表单数据全量写入目标表中。
注:为便于后续更新落库后的主表单数据、落库后的两个子表单数据,写入方式选择「清空目标表,再写入数据」。
3)点击右上角「保存」按钮。
2.3.4 效果查看
1)右键点击节点,选择「运行节点」。如下图所示:
2)运行成功后,可看到主表单数据已落库。如下图所示:
2.4 子表单-零部件明细数据落库
最终输出的数据应包括子表单数据(component_name、component_types、component_model、unit_price_of_components、number_of_components、prices)、number 字段(主表单主键字段,便于之后子表单与主表单数据关联)。如下图所示:
2.4.1 读取简道云表单数据
再拖入一个「数据转换」节点,进入「数据转换」节点,拖入「简道云输入」算子,选择要读取的简道云表单。
步骤与本文 2.3.1 节相同。
2.4.2 解析子表单数据
由于子表单字段(part_detail_information)为 JSON 格式数据,所以落库前需要进行解析。
拖入「JSON解析」算子,解析 part_detail_information 字段;由于要保留 number 字段(主表单主键字段,便于之后子表单与主表单数据关联),需要勾选「解析后保留所有上游输出字段」按钮。如下图所示:
2.4.3 剔除不必要字段
拖入「字段设置」算子,保留主表单主键字段(本文示例中为 number),便于之后可与主表单数据合并;保留解析后的子表单字段。
即保留:number、component_name、component_types、component_model、unit_price_of_components、number_of_components、prices 字段,删除其余字段。数据预览结果如下:
2.4.4 子表单数据输出
参考本文 2.3.3 节内容,将子表单数据输出。
2.4.5 效果查看
参考本文 2.3.4 节步骤,运行该数据转换节点,可看到子表单数据已落库。如下图所示:
2.5 子表单-负责人数据落库
最终输出的数据应包括子表单数据(level 字段,部门名称、成员名称字段)、number 字段(主表单主键字段,便于之后子表单与主表单数据关联)。
2.5.1 读取简道云表单数据
再拖入一个「数据转换」节点,进入「数据转换」节点,拖入「简道云输入」算子,选择要读取的简道云表单。
步骤与本文 2.3.1 节相同。
2.5.2 解析子表单数据
简道云表单中若包含部门单选字段、成员单选字段,使用「简道云输入」算子读取后,解析说明请参见:解析字段
由于子表单字段(head)为 JSON 格式数据,所以落库前需要进行解析,需要解析出 level 字段,部门名称、成员名称字段。
拖入「JSON解析」算子,解析 head 字段;由于我们要保留主表单的 number 字段,所以勾选「解析后保留所有上游输出字段」按钮;解析 level、department-name、member-name 字段。如下图所示:
点击「数据预览」,如下图所示:
2.5.3 剔除不必要字段
拖入「字段设置」算子,保留主表单主键字段(本文示例中为 number),便于之后可与主表单数据合并;保留解析后的子表单字段。
即保留:number、 level、name、name_1 字段,删除其余字段。
2.4.4 子表单数据输出
参考本文 2.3.3 节内容,将子表单数据输出。
2.4.5 效果查看
参考本文 2.3.4 节步骤,运行该数据转换节点,可看到子表单数据已落库。如下图所示: