利用轻易云平台进行ETL转换并写入金蝶云星空API的实践

  • 轻易云集成顾问-卢剑航
### MySQL数据集成到金蝶云星空案例分析:SR生产入库单新增-带料委外-深圳天一 在本次技术案例中,我们分享了如何通过轻易云数据集成平台,实现MySQL数据库与金蝶云星空系统之间的高效对接。具体地,本次任务是将“SR生产入库单新增-带料委外-深圳天一”方案中的相关数据,从MySQL数据库批量集成到金蝶云星空。 #### 技术要点解析 1. **数据获取和写入接口** - **MySQL获取数据API**: 使用select语句从源数据库中提取需要的数据。 - **金蝶云星空写入API**: 利用batchSave API实现大批量的数据插入操作,以确保快速且可靠地将数据导入到目标系统中。 2. **高效数据处理机制** 支持高吞吐量的数据写入能力,使得大量来自MySQL的数据信息能够快速被处理并传输至金蝶云星空。这种能力极大提升了整个流程的数据处理时效性,保证业务需求可以即时响应。 3. **监控与告警** 提供集中化的监控和告警系统,实时跟踪每一个集成任务的状态及其性能表现。当出现异常或瓶颈时,通过告警及时提示运维人员进行干预和优化,保障数据流动顺畅无阻。 4. **自定义转换逻辑** 在实际项目实施过程中,需要根据特定业务场景,对原始MySQL数据库中的数据信息进行必要的格式转换。通过支持自定义的数据转换逻辑,可以灵活调整数据结构以适应目标系统(即金蝶云星空)的需求。例如对日期、金额等字段类型及其格式差异进行了专门处理。 5. **分页与限流策略** 对于大量出现在接口调用过程中的分页和限流问题,通过采用分段抓取、逐步提交的方法,有效规避了网络请求超时或服务拒绝访问等情况。此外,还设计了一套完善的错误重试机制,以最大程度保证每条记录都能正确存储至目标数据库中,不出现遗漏现象。 综上所述,该案例展示了在复杂环境下,多层级、多步骤的数据对接工作如何通过合理配置和技术手段得到最佳解决方案。在后续内容中,将详细介绍该具体实施步骤,包括配置信息、代码示例以及常见问题解决方法。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D11.png~tplv-syqr462i7n-qeasy.image) ### 调用MySQL接口select获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用MySQL接口`select`获取并加工数据。我们将重点关注元数据配置和SQL查询的具体实现。 #### 元数据配置解析 首先,我们需要理解元数据配置中的各个字段及其作用。以下是关键字段的解析: - `api`: 指定API类型,这里为`select`。 - `effect`: 表示操作类型,这里为`QUERY`,即查询操作。 - `method`: 使用的方法,这里为`SQL`。 - `number`和`id`: 用于标识入库单号。 - `request`: 包含主参数对象,定义了动态参数,如返回记录数(limit)和数据偏移量(offset)。 - `otherRequest`: 包含主查询语句,使用占位符与主参数字段进行对应。 #### 主查询语句详解 主查询语句是整个数据请求的核心部分。以下是元数据中提供的主查询语句: ```sql select case m.delivery_org when 'T01.01' then CONCAT('HJ', CAST(hj1.id AS CHAR)) when 'T04' then CONCAT('HJGD', CAST(hj1.id AS CHAR)) else CONCAT('HJ', CAST(hj1.id AS CHAR)) end as 生产订单号, a.part_no as 成品编号, c.mode_no as 计划跟踪号, CONCAT('RKB',CAST(a.id AS CHAR)) as 入库单号, date(a.update_time) as 日期, a.confirm_numb as 入库数量, a.id as sourceid, 0.000001 as 工时, m.delivery_org as 供应组织 from wms_instock_confirm_task_detail a left join wms_instock_purchase_task_detail c on c.out_type='1' and c.matterial_type='4' left join wms_instock_confirm_main_task_detail b on b.connect_uuid=c.uuid left join mbs_nuclear_price_task hj on hj.mold_no=c.mode_no and hj.part_no=a.part_no left join mbs_nuclear_price_info hj1 on hj1.nuclear_price_task_uuid=hj.nuclear_price_task_uuid left join mbs_order_plan_bom l on c.mode_no=l.bom_no left join mbs_order_bom m on m.bom_uuid=l.bom_uuid where a.connect_uuid=b.uuid and a.company_code='TYZN' and a.update_time>'2023-08-01' and hj1.create_time>(select config_value from sys_config where config_id=337) and a.is_success3 !='1' and a.is_success2='1' limit :limit offset :offset ``` 该SQL语句通过多表连接,从多个表中提取所需的数据字段,并根据特定条件进行过滤。以下是一些关键点: - **条件过滤**:如`a.update_time>'2023-08-01'`和`hj1.create_time>(select config_value from sys_config where config_id=337)`等条件确保了只提取符合条件的数据。 - **动态参数**:使用`:limit`和`:offset`作为占位符,以便在实际调用时由主参数对象提供具体值。 #### 动态参数设置 在请求中,我们需要设置动态参数以控制查询结果的范围。以下是主参数对象的配置: ```json { "main_params": { "limit": 100, // 返回记录数限制为100条 "offset": 0 // 数据偏移量从0开始 } } ``` 这些参数可以根据实际需求进行调整,以优化查询性能和结果集大小。 #### 实际调用示例 在实际应用中,通过轻易云平台配置上述元数据后,可以发起对MySQL数据库的查询请求。例如: ```json { "api": "select", "effect": "QUERY", "method": "SQL", "number": "入库单号", "id": "入库单号", "name": "name", "request": { "main_params": { "limit": 100, "offset": 0 } }, "otherRequest": { "main_sql": "<上述SQL语句>" } } ``` 此请求将触发对MySQL数据库的查询,并返回符合条件的数据记录。 #### 数据清洗与加工 获取到原始数据后,可能需要进一步清洗和加工。例如,可以使用轻易云平台内置的数据处理工具,对字段进行格式转换、缺失值填补等操作,以确保最终数据符合业务需求。 通过以上步骤,我们实现了从MySQL数据库中高效、安全地获取并加工数据,为后续的数据转换与写入奠定了坚实基础。在实际应用中,根据具体业务需求调整元数据配置和SQL查询,可以灵活应对各种复杂的数据集成场景。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源平台数据转换并写入金蝶云星空API接口 在数据集成的生命周期中,ETL(提取、转换、加载)过程至关重要。本文将深入探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。 #### 元数据配置解析 为了实现上述目标,我们需要详细了解元数据配置中的各个字段及其作用。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{{入库单号}}"}, {"field":"FBillType","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"SCRKD01_SYS"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{{日期}}"}, {"field":"FPrdOrgId","label":"生产组织","type":"string","describe":"生产组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_function case '{{供应组织}}' when 'T01.01' then 'T01.06' when 'T04' then 'T04' else '' end"}, ... ], "otherRequest": [ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "PRD_INSTOCK"}, {"field": "Operation", "label": "执行的操作", "type": "string", "describe": "执行的操作", "value": "BatchSave"}, {"field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": ":bool", ", describe ":提交并审核" , value ":true" }, {"field ":IsVerifyBaseDataField ", label ":验证基础资料" , type ":bool ", describe ":是否验证所有的基础资料有效性,布尔类,默认false(非必录)" , value ":true "} ], enforcedAssociation: true } ``` #### 数据转换与写入步骤 1. **提取源数据**:首先,从源平台提取所需的数据。这一步通常已经在生命周期的第一阶段完成。 2. **字段映射与转换**: - **单据编号(FBillNo)**:直接映射到`{{入库单号}}`。 - **单据类型(FBillType)**:固定值`SCRKD01_SYS`,通过`ConvertObjectParser`进行解析。 - **日期(FDate)**:直接映射到`{{日期}}`。 - **生产组织(FPrdOrgId)**:通过条件判断,根据不同的供应组织进行映射,例如,当供应组织为'T01.01'时,映射为'T01.06'。 - **入库组织(FStockOrgId)**和**货主(FOwnerId0)**等字段采用类似逻辑处理。 3. **嵌套结构处理**: - **明细字段(FEntity)**:这是一个数组类型,需要逐条处理每一项明细。例如,物料编码(FMaterialId)、单位(FUnitID)、应收数量(FMustQty)等字段需要分别进行映射和转换。 4. **特殊处理逻辑**: - 使用自定义函数和查找集合的方法来处理复杂逻辑。例如,通过 `_findCollection` 方法从特定表中查找相关内码,并根据条件返回相应值。 - 批次管理逻辑,通过 `_function case _findCollection find FIsBatchManage from c7812b37-c4fa-3e9d-9d52-974e0c2b53df where FNumber={{成品编号}} _endFind when true then '{{计划跟踪号}}' else '' end` 实现批次号的动态生成。 5. **执行操作**: - 配置 `FormId` 为 `PRD_INSTOCK` 表示生产入库单。 - 设置 `Operation` 为 `BatchSave` 表示批量保存操作。 - 启用 `IsAutoSubmitAndAudit` 自动提交并审核功能,以确保数据在写入后立即生效。 - 启用 `IsVerifyBaseDataField` 验证基础资料有效性,以确保所有基础资料均有效。 #### 实际应用案例 在实际应用中,我们可以通过以下步骤将生产入库单新增的数据写入金蝶云星空: 1. 配置请求头信息,包括 API 接口地址、认证信息等。 2. 将上述元数据配置应用于轻易云数据集成平台,通过可视化界面或脚本方式进行配置和调试。 3. 执行 ETL 流程,将源平台的数据经过转换后,通过 POST 请求发送到金蝶云星空 API 接口,实现数据写入。 通过以上步骤,我们可以高效地将源平台的数据转换为目标平台所需格式,并成功写入金蝶云星空,实现不同系统间的数据无缝对接。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T4.png~tplv-syqr462i7n-qeasy.image)