1、数据比对后更新目标表时间列
1.1 应用场景
用户希望来源表的增删改同步到目标表的同时,目标表的 update 字段能记录数据变化时间。
例如:来源表中删除了「甘蔗」和「冻梨」的数据,增加了「葡萄」的数据,更新了「菠萝」的数据。希望将最新数据同步到目标表表中,且数据变化的时间更新到目标表的 update 字段。
1.2 实现思路
1)将来源表的增删改同步到目标表。
使用「数据比对」算子。
2)目标表的 update 字段能记录数据变化时间。
「数据比对」算子中会自动生成 fdl_comparison_type 标记列,记录标识值。标记值被记录在 fdl_comparison_type 字段中,无法更新目标表中的 update 字段。
因此使用「新增计算列」算子,新增 update 字段,值为当次任务运行时间;使用「数据分发」算子,把标记 Added、Changed 的数据在「DB 表输出」算子中做插入更新;把标记 Removed 的数据在「DB 表输出」算子中做更新操作。如下图所示:
最后效果如下图所示:
注:本文方案,目标表中的删除数据,除逻辑主键、update、fdl_comparison_type 字段外,其他字段值为空(下图 ID 为1005、1006 的数据)。用户根据实际需求选择是否使用本文方案。
1.3 实现过程
请参见文档:数据比对后更新目标表时间列
2、提取简道云表单多值字段并显示为一行
2.1 应用场景
公司人员信息保存在简道云表单中,在公司内部,有些人可能会同时担任多个职位,如王小明既是总经理又在财务部工作。在王小明出差时,为了方便报销,需要将他所在的多个部门展示出来,方便后续各部门的报销费用分摊。
2.2 实现思路
若一个人担任多个职位,使用「简道云输入」算子读取表单数据后,字段值示例如下:
若使用「JSON 解析」算子直接解析该字段,一个人有多个部门时,数据将会被拆成多行,例如:
因此本文使用 regexp_replace 函数提取 department 字段中的中文即可,将部门名称提取出来。
注:若部门名称包含英文,本文方案不适用。
2.3 实现过程
请参见文档:提取简道云表单多值字段并显示为一行
3、专题文档更新
3.1 数据更新模块
根据用户的数据结构和更新需求,整理了不同场景下 FineDataLink 推荐的更新方案,方便用户更好地进行数据处理和维护。
参见文档:数据更新专题概述
3.2 数据清洗模块
说明 |
文档 |
在搭建数据仓库时,可能需要对重复的脏数据进行去重 |
数据去重 |
在进行数据处理时,经常需要对数据进行排序,介绍如何使用 Spark SQL 进行排序 |
数据排序 |
进行数据处理时,经常需要将数据表进行连接,本文介绍在 FineDataLink 中的多种连接方式 |
表连接与联合 |
数仓需要接收来自不同源的大量数据,数据之间可能存在格式、口径、数值上的差异。
因此不可避免会出现缺失数据,本文介绍如何对缺失值进行处
|
缺失值处理 |
用户有时需清洗掉数据中的一些不需要的字符。
例如,括号型(负数),特殊货币符号(¥),千分位(数值型自带千分位)等
|
字符串清洗 |
用户需要需要根据某些条件对数据进行分类赋值处理,形成新增列
|
新增列_条件赋值 |
新增列_条件赋值 支持根据指定条件进行赋值,形成新的数据列。
如果用户只想对已有数据进行分组赋值,不需要设置判断条件,可以直接使用内置公式 SWITCH-分组赋值
|
新增列_分组赋值 |
在进行数据处理时,数据的截取、合并必不可少。
数据中有字段结构为用某些分隔符连接起来的字符串,使用时需要拆分开只提取固定位置的字符串,或者整体拆分为多列。FineDataLink 支持使用「新增计算列」对数据进行截取拆分和拼接
|
字符串拼接和截取
|
|