1.1 应用场景
股权投资属于公司重要业务,投资中心即要关注企业本身工商信息,又要按照内部管理要求梳理其产权层级、管控分类等诸多维度,管理人员通过excel台账进行管理,信息变更不及时,出现错更、漏更等问题,本次通过FDL及启信宝API接口,以集团为一级公司,逐层循环获取二级、三级直到五级子公司,并存储到数据仓库,结合填报的管理数据,实现对股权投资的高效管理。
1.2 接口信息
为了获取对外投资的股权穿透关系,我们使用了“对外投资”接口,请求参数(Headers)里有4个参数,其中Auth-Version和参数appkey都是固定值,timestamp为精确到毫秒的13位时间戳,sign为由“appkey + timestamp + secret_key”构成的 32 位md5加密字符串。
图1.2-1 Header参数
请求参数name为对外投资公司名称,在获取第一层公司时以集团为初始值。
1.3 实现思路
步骤一:使用函数处理系统时间,获取13位毫秒级时间戳timestamp;
步骤二:将获取的timestamp以「参数赋值」形式传递给后续「数据转换」,并利用加密函数md5获取sign;
步骤三:以集团为一级节点获取集团公司信息,作为第一层级;
步骤四:以集团公司为节点获取其对外投资公司,作为第二层级;
步骤五:利用「参数赋值」、「循环容器」、「数据转换」,循环获取第二层级公司的对外投资公司,作为第三层级;
步骤六:重复步骤五,分别获取第四层级、第五层级公司;
图1.3流程图
1.4 任务展示
图1.4-1 任务展示
2. 操作步骤
2.1 生成timestamp 并设置为参数
timestamp既是请求参数(Headers)里有4个参数中之一,又是获取加密字符串sign的组合内容之一,在FIneDataLink数据平台新建ETL任务,使用参数赋值功能,通过获取当前系统时间及转换函数,获取精确到毫秒的13位timestamp。
图2.1-1 timestamp参数配置
点击「数据预览」即可看到获取的 timestamp,如下图所示:
图2.1-2 timestamp参数预览
2.2 生成sign 并设置为参数
参数sign由“appkey + timestamp + secret_key”构成的 32 位md5加密字符串,这里用到「数据转换」,将已经获取的timestamp以参数的形式传递给「数据转换」,后以参数形式传递给下一节点。
图2.2-1 sign参数获取配置
点击「数据预览」即可看到获取转换后的 sign,如下图所示:
图2.2-2 sign参数预览
2.3 获取第一层级公司
为获取第一层公司基本信息,需要以上一级主体作为参数,使用「数据转换」功能,其内分别使用「API输入」、「JSON解析」、「Spark SQL」、「DB表输出」。
图2.3-1 获取第一层
2.3.1 API输入
使用了“对外投资”接口,根据启信宝API参数要求配置如下:
图2.3-2 API输入-Header参数
2.3.2 JSON解析
对通过API从启信宝获取的数据做JSON解析,选择需要的JSON节点如下:这里我们需要用到公司名称、公司类型、经营状态、股权占比等字段。
图2.3-3 JSON解析配置
2.3.3 Spark SQL
选取集团有限公司作为第一层数据,并将数据输出到对应的DB表中。
图2.3-4 Spark SQL配置
2.3.4 DB表输出
将上节点Spark SQL处理后的数据存储到对应的目标数据库表中,并做好字段映射关系。
图2.3-5 DB表输出数据去向
2.4 获取第二层级公司
以第一层级中获取的集团公司名称为参数,重复2.3过程,获取第二层级公司。
2.5 获取第三层级公司
第三层级公司的获取应以第二层公司为基础,对第二层公司所有公司做遍历循环,分别获取对应的第三层公司信息,这里用到「参数赋值」、「循环容器」、「数据转换」
2.5.1 取二层公司为参数
在「参数赋值」节点的数据源中通过SQL查询所有第二层公司名称,并以参数的形式传递给后续的「循环容器」节点。
查询所有第二层公司
将第二层公司设置为参数:
2.5.2 循环获取第三层公司
在循环容器中拖入数据转换,并设置循环配置信息,根据参数name进行遍历。
图2.5-3 循环容器设置
循环容器设置完成后,执行“2.3 获取第一层级公司”中相同的API、JSON、Spark SQl、DB表输出操作,以此获取第二层公司对应的所有股权投资公司作为第三层公司上层节点存入数据库内。
图2.5-4 通过API接口取数设置
同样循环上述获取第三层公司的操作,依次获取第四层、第五层公司。
2.6 效果查看
|