使用轻易云实现MySQL数据向金蝶云星空的ETL处理

  • 轻易云集成顾问-曹润
### MySQL数据集成到金蝶云星空的技术实现案例分享:GM广东天一模具费应收单新增-广东天一 在本案例中,我们致力于实现在MySQL数据库中的应收单数据自动化、批量地集成到金蝶云星空系统。为此,我们使用了轻易云提供的数据集成平台,通过其强大的高吞吐量数据写入能力和实时监控特性,确保大量数据能够快速、安全地完成从MySQL到金蝶云星空的传输与转化。 #### 前期准备与环境搭建 首先,我们需要确定所需的数据接口并进行基础配置: 1. 从MySQL获取数据的API接口 `select` 的使用; 2. 向金蝶云星空写入数据的API接口 `batchSave`。 通过可视化的数据流设计工具,可以直观地定义每个步骤。在这里特别详细介绍两项关键操作: **高效抓取与分页处理** 为了保证我们从MySQL中抓取的大量记录不丢失且效率最优,需要设置定时任务来可靠地调用`select` API,从而实现对新增加记录的连续抓取。对于大规模分页查询,这种机制尤为必要,它不仅控制了服务器负载,还能减少网络带宽占用。 **自定义转换逻辑及适配业务需求** 由于MySQL和金蝶云星空的数据库结构有所不同,自定义的数据转换逻辑至关重要。这一步骤主要针对字段映射和格式变换,以确保最终存储在金蝶系统中的信息符合业务要求。例如,某些日期格式或数值类型可能需要在导入前进行调整,此处我们利用了轻易云平台内置的数据清洗功能,实现标准化处理并公平保障每条记录的一致性。 接下来的部分将具体说明各种API调用细节、异常处理策略以及监控手段,包括如何全面掌握Data Pipeline状态。通过这些方案,不仅优化了工作流,还提升了整体运维效率。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/D30.png~tplv-syqr462i7n-qeasy.image) ### 调用MySQL接口select获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统MySQL中调用接口获取并加工数据。本文将详细探讨如何通过轻易云数据集成平台配置元数据,实现对MySQL数据库的查询操作,并对获取的数据进行初步加工。 #### 元数据配置解析 首先,我们来看一下元数据配置的具体内容: ```json { "api": "select", "effect": "QUERY", "method": "POST", "id": "单据编号", "idCheck": true, "request": [ { "field": "main_params", "label": "main_params", "type": "object", "describe": "主参数", "value": "1", "children": [ { "field": "limit", "label": "limit", "type": "string", "value": "100" }, { "field": "offset", "label": "offset", "type": "string" } ] } ], "otherRequest": [ { "field": "main_sql", "label": "main_sql", "type": "string", "describe": "", "value": " select concat('AR_',a.id) as 单据编号, CONCAT('采购单号:',c.pur_no,' 图号:',a.pic_no) as 备注, curdate() as 日期, a.pic_no as 图号, a.part_no as 物料编号, a.bom_no as 计划跟踪号, DATE_ADD(CURDATE(), INTERVAL 30 DAY) as 到期日, a.id as sourceid, a.purchase_num as 数量, a.pur_price as 单价 from mbs_pur_record_detail a left join mbs_pur_record_detail b on a.pur_record_uuid=b.pur_record_uuid and a.part_no=b.part_no left join mbs_pur_record c on a.pur_record_uuid=c.pur_record_uuid where b.send_status<>'1' and b.supplier_uuid='804842' and b.if_mold='Y' and a.outsourced_way='开模' and a.is_success='0' limit :limit offset :offset" } ], ... } ``` #### 配置解析与实现 1. **API调用类型与方法**: - `api`字段指定了调用类型为`select`,表示我们将执行一个查询操作。 - `method`字段为`POST`,表示我们将使用POST方法来发送请求。 2. **主参数配置**: - `request`字段定义了请求参数,其中包含一个名为`main_params`的对象,该对象包含两个子参数:`limit`和`offset`。 - `limit`用于限制返回记录的数量,默认值为100。 - `offset`用于指定查询结果的偏移量,便于分页处理。 3. **SQL查询语句**: - `otherRequest`字段中定义了实际执行的SQL查询语句,通过占位符`:limit`和`:offset`实现动态参数绑定。 - 查询语句从多个表中关联查询,并对结果进行了一定的格式化处理,例如使用concat函数生成自定义的单据编号和备注信息。 #### 实际应用案例 假设我们需要从MySQL数据库中获取广东天一模具费应收单新增的数据,并进行初步加工。以下是具体步骤: 1. **配置请求参数**: 根据业务需求设置请求参数,例如: ```json { main_params: { limit: '50', offset: '0' } } ``` 2. **执行SQL查询**: 使用配置好的SQL语句,通过POST方法发送请求到MySQL数据库。系统会自动替换占位符`:limit`和`:offset`,生成最终的SQL语句: ```sql select concat('AR_',a.id) as 单据编号, CONCAT('采购单号:',c.pur_no,' 图号:',a.pic_no) as 备注, curdate() as 日期, a.pic_no as 图号, a.part_no as 物料编号, a.bom_no as 计划跟踪号, DATE_ADD(CURDATE(), INTERVAL 30 DAY) as 到期日, a.id as sourceid, a.purchase_num as 数量, a.pur_price as 单价 from mbs_pur_record_detail a left join mbs_pur_record_detail b on a.pur_record_uuid=b.pur_record_uuid and a.part_no=b.part_no left join mbs_pur_record c on a.pur_record_uuid=c.pur_record_uuid where b.send_status<>'1' and b.supplier_uuid='804842' and b.if_mold='Y' and a.outsourced_way='开模' and a.is_success='0' limit 50 offset 0; ``` 3. **处理查询结果**: 查询结果返回后,可以根据业务需求进行进一步处理,例如将结果写入目标系统或进行数据清洗等。 通过上述步骤,我们成功实现了从MySQL数据库中调用接口获取并加工数据,为后续的数据转换与写入打下基础。这种全透明可视化的操作方式,不仅提高了业务透明度,还极大提升了效率。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,将源平台的数据转换为目标平台所需格式是关键步骤。本文将重点探讨如何使用轻易云数据集成平台将源数据进行ETL(提取、转换、加载)处理,并通过金蝶云星空API接口写入目标平台。 #### 配置元数据与API接口 在进行数据转换和写入之前,首先需要配置元数据。以下是我们在轻易云平台上配置的元数据示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{单据编号}}"}, {"field":"FDATE","label":"业务日期","type":"string","describe":"业务日期","value":"{{日期}}"}, {"field":"FCURRENCYID","label":"币别","type":"string","describe":"币别","value":"PRE001","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","value":"YSD02_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FALLAMOUNTFOR","label":"价税合计","type":"string","describe":"价税合计","value":"{{单价}}"}, {"field":"FENDDATE_H","label":"到期日","type":"string","describe":"到期日","value":"{{到期日}}"}, {"field":"FOWNERTYPE","label":"货主类型","type":"string","describe":"货主类型","value":"BD_OwnerOrg"}, {"field":"FCancelStatus","label":"作废状态","type":"string","describe":"作废状态","value":"A"}, {"field":"FCUSTOMERID","label":"客户","type":"string","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":"","parser":{"name":"","params":""}}, {"field":"","label":"","type":"","describe":"","value":""}, {"field":"", ``` #### 数据提取与清洗 在ETL流程中,第一步是从源系统中提取原始数据,并进行必要的清洗和预处理。通过轻易云的数据集成平台,我们可以利用其全透明可视化操作界面,轻松实现对源数据的提取和清洗。例如,我们可以从ERP系统中提取应收单据的数据,并去除重复记录或无效数据。 #### 数据转换 接下来,我们需要将清洗后的数据转换为金蝶云星空API能够接受的格式。这一步骤至关重要,因为不同系统之间的数据格式和结构可能存在较大差异。根据上述元数据配置,我们需要将字段映射到金蝶云星空API所需的字段。例如: - `FBillNo` 对应源数据中的 `单据编号` - `FDATE` 对应源数据中的 `业务日期` - `FCURRENCYID` 固定值为 `PRE001` - `FBillTypeID` 固定值为 `YSD02_SYS` - `FALLAMOUNTFOR` 对应源数据中的 `价税合计` 此外,还需要使用特定的解析器(如 `ConvertObjectParser`)来处理一些复杂字段,如币别、单据类型等。 #### 数据加载与写入 完成数据转换后,我们使用轻易云平台提供的批量保存功能,通过POST请求将转换后的数据写入金蝶云星空API接口。以下是一个简化的请求示例: ```json { "FormId": "AR_receivable", "Operation": "BatchSave", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": false, "Model": { "FBillNo": "{{单据编号}}", "FDATE": "{{业务日期}}", ... } } ``` 通过这种方式,我们可以确保所有必要的数据字段都按照金蝶云星空API要求的格式进行传递,并且实现了自动提交和审核功能,大大提高了工作效率。 #### 实践案例 假设我们有一条来自广东天一模具费应收单新增的数据记录,其主要字段如下: - 单据编号:GM20231001 - 日期:2023-10-01 - 单价:1000.00 - 到期日:2023-12-31 - 客户:T01 - 数量:10 - 备注:测试备注 根据上述配置和处理步骤,我们最终生成并发送给金蝶云星空API接口的数据如下: ```json { "FormId": "AR_receivable", "Operation": "BatchSave", "IsAutoSubmitAndAudit": true, "IsVerifyBaseDataField": false, "Model": { "FBillNo": "GM20231001", "FDATE": "2023-10-01", ... } } ``` 通过这种方式,我们成功地将源系统的数据无缝地集成到目标系统,实现了高效的数据流转和业务处理。 总结而言,利用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口,不仅简化了复杂的数据处理流程,还提升了整体业务效率。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/T2.png~tplv-syqr462i7n-qeasy.image)