1. 概述
1.1 背景
某集团人员长期使用 FineBI 进行数据分析,FineBI的使用流程为:
IT人员在FineBI中直接连接数据库数据,通过自助数据集对原始数据进行数据清洗和处理,形成业务人员可用的数据宽表;
IT人员做好数据宽表后,业务人员进行自助分析(直接制作仪表板或者对数据进行简单加工后进行数据分析)。
开发人员小A 在使用过程中发现一些问题:
IT人员在 FineBI 中直接连接数据库数据,进行分层处理数据,由于做了大量的数据清洗和处理工作,产生了大量的中间表,导致自助数据集冗余且杂乱。
由于制作宽表数据也是在 BI 中进行处理的,大量的中间表和父子表引用导致数据更新时间长、且数据更新失败问题日益凸显,维护困难。
本文主要介绍业务系统数据经过FDL处理落库后,FineBI 调用该数据进行自助分析的全流程,通过FDL+BI的组合方案解决以上两个问题。
1.2 思路
IT 人员通过 FineDataLink 对数据进行清洗整合等处理,形成业务宽表,并输出到应用数据库;
业务人员直接使用处理好的数据在 FineBI 中进行数据分析和仪表板制作;
使用 FineDataLink 可视化的操作界面和便捷的功能,将宽表数据直接输出到业务数据库,减少了 BI 中的中间表,解决了自助数据集冗余和更新时间长的问题,提高 FineBI 性能;同时 FineDataLink 处理并输出到数据库中的数据表也可以被其他工具使用。
2. 实现方法
2.1 场景说明
FRDemo 数据库中存放着「CUSTOMER」、「DEMO_CAPITAL_RETURN」、「DEMO_CONTRACT」、「DEMO_PRODUCT」四张表。
简道云表单中也存放着与FRDemo 数据库结构相同的数据表「CUSTOMER」、「DEMO_CAPITAL_RETURN」、「DEMO_CONTRACT」、「DEMO_PRODUCT」。
现在希望对这些数据进行数据关联,生成业务宽表,直接在 BI 或者其他分析工具中使用,进行业务分析和仪表板制作。
数据表 | 说明 | 重要字段 |
---|---|---|
「DEMO_CONTRACT」 | 合同事实表 | 合同ID(主键)、客户ID、购买的产品(产品ID) |
「DEMO_CAPITAL_RETURN」 | 合同回款事实表 | 合同ID |
「DEMO_PRODUCT」 | 产品名称维度表 | 产品ID |
「CUSTOMER」 | 客户维度表 | 客户ID |
2.2 方案说明
1)将 FRDemo 数据库中的数据接入至 FineDataLink ,通过数据关联和数据清洗,生成业务宽表并输出到 FDLDemo 数据库。
2)将简道云中的表单数据接入至 FineDataLink ,通过数据关联和数据清洗,生成业务宽表并输出到 FDLDemo 数据库。
3)将两张宽表进行连接,合并成一张大宽表,并输出到 FDLDemo 应用库。
4)业务人员和其他用户使用 FineBI 或者其他工具连接 FDLDemo 应用库,使用业务数据进行数据分析和仪表板制作。
3. 操作步骤
在进行操作之前,请将数据库与 FineDataLink 建立连接,详情参见:配置数据连接。
3.1 构建数据库宽表
将 FRDemo 数据库中的「DEMO_CONTRACT」数据表与「CUSTOMER」根据「客户ID」关联、与「DEMO_CAPITAL_RETURN」根据「合同ID」关联、与「DEMO_PRODUCT」根据「产品ID」关联,生成一张业务宽表。
1)新建 ETL 任务命名为「数据库数据关联构建宽表」,使用数据转换,将 FRDemo 业务库中的「DEMO_CONTRACT」数据取出,便于后续进行数据关联,如下图所示:
同理,将「CUSTOMER」、「DEMO_CAPITAL_RETURN」、「DEMO_PRODUCT」数据也通过DB表输入取出,如下图所示:
2)新增「数据关联」算子,将四个数据表输入算子连接至数据关联,进行数据关联制作新的数据宽表,设置连接方式和连接字段,如下图所示:
点击预览即可查看跨数据库关联后的数据表,如下图所示:
注:预览效果展示不全,建议以数据库输出的数据为准。
3)对关联好的数据表进行字段设置,比如去掉重复的合并依据「合同ID1」等等,如下图所示:
4)将制作好的数据宽表命名为「SJK_kuanbiao」并输出到「FDLDemo」数据库中,如下图所示:
5)保存并执行任务,如下图所示:
3.2 构建简道云宽表
将简道云中的表单数据接入至 FineDataLink ,通过数据关联和数据清洗,生成业务宽表并输出到 FDLDemo 数据库。
简道云数据接入 FineDataLink 可参考简道云输入。
注意在简道云表单接入前,可提前设置字段别名,否则接入到 FineDataLink 中时会使用字段原始名,不便于你的业务处理。
1)新建 ETL 任务命名为「简道云数据表关联构建宽表」,使用数据转换,将简道云表单中的「DEMO_CONTRACT」数据取出,便于后续进行数据关联,如下图所示:
同理,将「CUSTOMER」、「DEMO_CAPITAL_RETURN」、「DEMO_PRODUCT」数据也通过简道云输入取出,如下图所示:
2)本示例中没有在简道云设置别名,因此可以在字段设置中调整字段名称,如下图所示:
3)新增「数据关联」算子,将四个数据表输入算子连接至数据关联,进行数据关联制作新的数据宽表,设置连接方式和连接字段,如下图所示:
点击预览即可查看跨数据库关联后的数据表。
注:预览效果展示不全,建议以数据库输出的数据为准。
3)对关联好的数据表进行字段设置,比如去掉重复的合并依据「合同ID1」、修改字段名称等等,如下图所示:
4)将制作好的数据宽表命名为「JDY_kuanbiao」并输出到「FDLDemo」数据库中,如下图所示:
注意可以通过字段映射调整数据表输出时的字段排列顺序。
由于下一步要进行 union 操作,因此需要保证输出的两张宽表字段排列顺序和字段类型一致。
5)保存并执行任务,如下图所示:
3.3 跨数据源表连接
将两张宽表进行连接,合并成一张大宽表,并输出到 FDLDemo 应用库。
1)新建 ETL 任务命名为「调用」,添加调用任务,命名为简道云宽表构建,即调用了操作步骤中简道云宽表构建的任务,如下图所示:
2)同理,调用 FRDemo 数据库宽表构建的任务,如下图所示:
3)新增「数据转换」节点,将已经存放至 FDLDemo 数据集中的「JDY_kuanbiao」和「SJK_kuanbiao」数据通过DB表输入取出,方便后续通过 SQL 进行 union 连接,如下图所示:
4)添加「Spark SQL」节点,使用 union 语句对数据表进行连接,如下图所示:
5)此时跨数据源合并的宽表已经完成,通过 DB 表输出,将数据表落库至 FDLDemo 即可,如下图所示:
6)保存并执行任务,如下图所示:
3.4 数据使用
业务人员在 BI 中直接接入 FDLDemo 数据库数据,进行仪表板制作和数据分析。
同时数据也可被其他应用使用。
4. 效果查看
FineDataLink 中的数据处理过程,详情参见:https://demo.finedatalink.com/ 「FineDataLink&FineBI组合方案」。