从MySQL到金蝶云星空:轻易云数据集成实战指南

  • 轻易云集成顾问-曹润
### MySQL 数据集成到金蝶云星空——SYB生产用料清单新增-深圳天一-半成品-好 作为一名系统集成顾问,本文将聚焦于如何使用轻易云数据集成平台,将MySQL的数据无缝接入到金蝶云星空系统中。本次案例,我们实现的是 `SYB生产用料清单新增-深圳天一-半成品-好` 的数据对接。该解决方案的核心目标是通过可靠和高效的数据传输,实现两个不同系统间的数据同步。 为了确保高吞吐量的数据传输,本次整合方案充分利用了轻易云提供的批量写入能力。通过调用MySQL接口 `SELECT` 获取源数据,并基于业务需求进行自定义转换,再利用金蝶云星空的API `batchSave` 实现目标数据库的大规模写入。 在具体实施过程中,包括以下关键技术点: 1. **定时可靠的抓取与分页处理**:我们首先设计并配置了一个定时任务,从MySQL接口中周期性地抓取最新的生产用料清单记录。在此过程中,通过分页机制来处理大规模数据,避免一次性获取过多记录导致内存溢出或网络延迟。 2. **统一视图和控制台管理**:为保证整个集成过程中的透明度与可控性,利用轻易云的平台特性提供集中监控和告警功能。任何异常情况都能被实时捕获,并触发相应告警以便工程师及时修复。 3. **自定义转换逻辑**:由于MySQL与金蝶云星空在数据结构上的差异,我们编写了专门的数据映射脚本,对原始数据进行格式转换,使其符合目标表结构要求。这一步不仅提升了兼容性,同时也确保了业务逻辑的一致性。 4. **事务一致性和错误重试机制**:考虑到实际运行环境的不确定因素,如网络波动、服务宕机等情况,我们引入了一套完善的事务一致性检查及错误重试机制,保证每条记录都能被准确且唯一地同步至金蝶云星空。 5. **实时监控与日志记录**:除了上述功能外,还重点关注对各类操作行为及状态变化进行详细日志记录。这不仅有助于问题排查,也为后期优化改进提供宝贵依据。 本文以下部分将详述每个步骤的具体实现细节,以及可能遇到的问题和对应解决方案,以帮助读者深入理解并应用这些技术要点。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用MySQL接口select获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口获取数据是至关重要的第一步。本文将详细探讨如何通过配置元数据,从MySQL数据库中调用select接口获取并加工数据。 #### 元数据配置解析 首先,我们来看一下元数据配置的具体内容: ```json { "api": "select", "effect": "QUERY", "method": "POST", "number": "生产订单号", "id": "{{生产订单号}}{{物料编号}}", "idCheck": true, "request": [ { "field": "main_params", "label": "main_params", "type": "object", "describe": "111", "value": "1", "children": [ { "field": "limit", "label": "limit", "type": "string", "value": "100" }, { "field": "offset", "label": "offset", "type": "string" } ] } ], ... } ``` #### 配置要点 1. **API和Method**:`api`字段指定了我们要调用的接口类型为`select`,而`method`字段则表明我们使用的是`POST`请求方法。 2. **查询参数**:在`request`字段中,我们定义了一个名为`main_params`的对象,其中包含两个子参数:`limit`和`offset`。这些参数用于分页查询,以避免一次性拉取过多数据导致性能问题。 3. **主SQL语句**:在`otherRequest`字段中,我们定义了实际执行的SQL查询语句。该语句通过多个表连接和条件过滤,最终生成所需的数据集。 #### SQL查询语句解析 ```sql SELECT CASE m.delivery_org WHEN 'T01.01' THEN CONCAT('HJ', CAST(i.id AS CHAR)) WHEN 'T04' THEN CONCAT('HJGD', CAST(i.id AS CHAR)) END AS 生产订单号, a.part_no AS 成品编号, DATE(a.update_time) AS 日期, a.req_num AS 生产数量, a.mold_no AS 计划跟踪号, CONCAT(a.part_no, '_WW') AS 物料编号, 1 AS 分子, 1 AS 分母, i.id AS sourceid, a.req_num AS 领料数量, m.delivery_org AS 供应组织 FROM mbs_nuclear_price_info i LEFT JOIN mbs_nuclear_price_task a ON i.nuclear_price_task_uuid = a.nuclear_price_task_uuid LEFT JOIN mbs_order_plan_bom l ON a.mold_no = l.bom_no LEFT JOIN mbs_order_bom m ON m.bom_uuid = l.bom_uuid WHERE a.is_cancel = '1' AND a.company_code = 'TYZN' AND i.create_time > (SELECT config_value FROM sys_config WHERE config_id = 337) AND a.if_close = '1' AND i.outsourced_type = '1' AND i.out_type = '4' AND i.is_success2 != '1' AND i.is_success = '1' LIMIT :limit OFFSET :offset; ``` 这段SQL语句主要完成以下任务: - **条件过滤**:通过多个条件过滤掉不符合要求的数据,例如取消状态、公司代码、创建时间等。 - **字段转换与计算**:使用CASE语句和CONCAT函数对部分字段进行转换和拼接,以生成所需格式的数据。 - **分页处理**:通过LIMIT和OFFSET实现分页查询,提高查询效率。 #### 数据请求与清洗 在轻易云平台上,通过上述配置可以实现对MySQL数据库的高效查询,并将结果进行初步清洗。清洗后的数据将进一步进入下一个生命周期阶段,即数据转换与写入。 #### 自动填充与遗漏补救 配置中的`autoFillResponse: true`确保了响应结果自动填充到目标系统中。而对于可能出现的数据遗漏问题,通过设置定时任务(如crontab)进行补救,确保数据完整性。 ```json "omissionRemedy":{ ... ,"crontab":"1 1 * * *" } ``` 此处设置的crontab表达式表示每天凌晨1点执行一次补救任务。 ### 总结 通过上述元数据配置,我们能够高效地从MySQL数据库中调用select接口获取并加工所需数据。这一步骤不仅是整个数据集成过程的重要环节,也是确保后续数据处理顺利进行的基础。在实际应用中,根据业务需求灵活调整SQL查询和参数配置,可以极大提升系统集成效率和数据质量。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据写入 在数据集成生命周期的第二阶段,重点在于将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何利用轻易云数据集成平台配置元数据,实现这一过程。 #### 配置元数据 首先,我们需要理解并配置元数据,以确保数据能够正确地转换和写入金蝶云星空。以下是用于配置的元数据: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FID", "label": "FID", "type": "string", "value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}" }, { "field": "FEntity", "label": "子项明细", "type": "array", ... }, { ... } ], ... } ``` #### 数据请求与清洗 在进行ETL转换之前,首先需要从源系统请求并清洗数据。假设我们已经完成了这一阶段,现在进入ETL转换阶段。 #### 数据转换与写入 我们将重点放在如何将清洗后的数据转换为金蝶云星空API接口所需的格式,并通过API接口进行写入。 1. **API调用配置** 配置`api`字段为`batchSave`,表示我们将调用金蝶云星空的批量保存接口。`method`字段设置为`POST`,表示使用HTTP POST方法进行请求。 2. **操作定义** 在`operation`字段中,我们定义了操作方式: - `rowsKey`: 指定数组键名为"array"。 - `rows`: 设置每次操作的行数为1。 - `method`: 使用`batchArraySave`方法进行批量保存。 3. **请求参数** 请求参数定义了需要传递给API的数据结构: - `FID`: 根据生产订单号查找对应的FID。 ```json { "field": "FID", ... "value": "_findCollection find FID from d9c54956-106b-36e1-8018-91a8855f6316 where FMoBillNo={{生产订单号}}" } ``` - `FEntity`: 子项明细数组,其中包含多个子项字段,如子项物料编码、用量类型、分子、分母等。 ```json { ... { ... { "field": "FMaterialID2", ... "value": "{{物料编号}}" }, { ... { ... } } } } ``` 4. **其他请求参数** 除了主要的数据字段外,还需要配置一些其他参数,如业务对象表单Id、执行操作等: ```json { ... { ... { ... { ... { ... } } } } } ``` #### 数据写入示例 通过上述配置,我们可以构建出一个完整的数据请求,并通过HTTP POST方法发送到金蝶云星空API接口。以下是一个示例请求: ```json { "FormId":"PRD_PPBOM", ... { ... [ { ..., [ ..., { ..., [ ..., { ... } ] } ] } ] } } ``` #### 实际应用 在实际应用中,通过轻易云数据集成平台,我们可以实时监控整个ETL过程,确保每个环节都清晰可见,从而提高业务透明度和效率。同时,通过全异步处理和多种异构系统支持,实现不同系统间的数据无缝对接。 综上所述,通过正确配置元数据和合理使用API接口,可以高效地将源平台的数据转换并写入到金蝶云星空,实现跨系统的数据集成和业务流程自动化。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T7.png~tplv-syqr462i7n-qeasy.image)