实现ETL转换并写入金蝶云星空API的步骤详解

  • 轻易云集成顾问-曹润
### MySQL数据集成到金蝶云星空的技术案例分享 在现代企业信息系统中,如何高效地将MySQL中的数据集成到金蝶云星空,是实现业务流程数字化管理的重要环节。本案例将重点介绍“GR生产入库单新增-好-回写id示例-勿删”这一实际运行方案,通过轻易云数据集成平台,实现MySQL与金蝶云星空的数据对接。 首先,在数据获取方面,我们通过调用MySQL的`select` API接口,定时可靠地抓取生产入库单的数据。鉴于大量数据需要快速且无缝地写入金蝶云星空,我们使用其提供的`batchSave`接口进行批量写入。这一过程中,需特别关注两个关键技术点:分页和限流机制以及数据格式差异处理。 为确保每条记录都准确无误地被捕获和传输,我们配置了针对MySQL接口的分页功能,并设置了合理的限流策略,以避免因数据库负载过大而导致的数据漏单问题。同时,通过自定义转换逻辑,对两种系统间存在差异的数据格式进行适配,使得各字段能够正确映射。 除此之外,为提升整个流程的可视性和可控性,本次方案借助轻易云平台提供的一系列监控与告警工具。例如,通过实时跟踪任务状态和性能指标,可以及时发现并处理异常情况,确保数据传递过程中的每个环节都透明清晰。同样,对于可能出现的错误或失败操作,还设计了一套完善的重试机制,以提高系统整体稳定性。 本案例展示了如何利用先进的数据集成工具,实现复杂业务场景下的数据同步需求,这不仅优化了资源配置,更极大提升了工作效率。在后续内容中,我们将具体解析每一步骤所涉及到的方法及技巧。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统MySQL接口select获取并加工数据 在轻易云数据集成平台中,调用源系统MySQL接口进行数据请求是数据集成生命周期的第一步。本文将详细探讨如何通过配置元数据来实现从MySQL数据库中获取并加工数据的过程。 #### 元数据配置解析 在本案例中,我们使用了一个名为“GR生产入库单新增-好-回写id示例-勿删”的集成方案。该方案的元数据配置如下: ```json { "api": "select", "effect": "QUERY", "method": "SQL", "number": "入库单号", "id": "入库单号", "name": "name", "request": [ { "field": "main_params", "label": "主参数", "type": "object", "describe": "对应主查询语句内的动态参数对象", "children": [ { "field": "limit", "label": "返回的记录数", "type": "int", "describe": "你可以使用 LIMIT 属性来设定返回的记录数。", "value": 100 }, { "field": "offset", "label": "数据偏移量", "type": "int", "describe": "你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。" } ] } ], ... } ``` #### 主查询语句 主查询语句是整个数据请求过程的核心部分,它定义了从MySQL数据库中提取哪些字段以及如何进行关联和过滤。在本案例中,主查询语句如下: ```sql select a.dispatch_prefix as 生产订单号, d.bom_uuid, e.confrim_no as 入库单号, date(a.update_time) as 日期, a.part_no as 成品编号, d.bom_no as 计划跟踪号, a.instock_numb as 入库数量, a.id as sourceid, (select sum(f.man_hour) from eng_craft_card_item f where f.card_id=f1.id)*a.instock_numb/3600 as 工时 from wms_instock_confirm_main_task_detail a left join oms_order_bom d on d.bom_uuid=(select bom_uuid from mes_dispatch_record_process where company_code='gdty' and dispatch=a.dispatch_prefix LIMIT 1) left join wms_instock_confirm_task e on a.confirm_task_uuid=e.confirm_task_uuid left join eng_craft_card f1 on f1.oms_order_bom_uuid=d.bom_uuid where a.company_code='gdTY' and a.confirm_status='20' and a.matterial_type=4 and d.material_source='2' and d.kingdee_fwl='0' and a.is_defect='0' and a.is_success1 !='1' and a.is_success='1' limit :limit offset :offset ``` #### 动态参数配置 在上述查询语句中,`:limit` 和 `:offset` 是两个动态参数,它们分别控制返回记录数和数据偏移量。这些参数在元数据配置中的 `main_params` 字段下定义: ```json { ... { "field": ":limit", ... }, { ... } } ``` #### 数据请求与清洗 通过上述配置,我们可以实现对MySQL数据库的高效查询,并根据业务需求对返回的数据进行初步清洗和加工。例如,通过设置 `limit` 和 `offset` 参数,可以控制每次查询的数据量,从而避免一次性加载过多数据导致系统性能下降。 在实际操作中,轻易云平台会根据配置自动生成相应的SQL查询,并执行该查询以获取所需的数据。此过程完全透明且可视化,用户可以实时监控数据流动和处理状态。 #### 技术要点总结 1. **API调用**:使用 `select` 方法调用MySQL接口,实现数据查询。 2. **动态参数**:通过元数据配置中的 `main_params` 字段定义动态参数,实现灵活的数据请求。 3. **主查询语句**:详细定义了需要提取的字段及其关联关系,确保获取到完整且准确的数据。 4. **实时监控**:平台提供全透明可视化界面,用户可以实时监控和管理整个数据处理过程。 通过以上技术手段,我们能够高效地从MySQL数据库中获取并加工所需的数据,为后续的数据转换与写入奠定坚实基础。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/S24.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口 在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程的第二步是将已经集成的源平台数据进行转换,并将其写入目标平台。在本案例中,我们将详细探讨如何将生产入库单的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 我们使用以下元数据配置来完成这一任务: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, ... } ``` 此配置指定了API接口`batchSave`,使用`POST`方法提交请求,并且在操作中定义了批量保存的方法`batchArraySave`。关键字段如单据编号、日期、生产组织等都通过模板变量进行动态填充。 #### 请求参数详解 请求参数部分详细定义了需要传递给金蝶云星空API的字段及其对应的值和类型。以下是一些关键字段及其解释: - `FBillNo`: 单据编号,通过模板变量`{{入库单号}}`动态填充。 - `FBillType`: 单据类型,固定值为`SCRKD01_SYS`。 - `FDate`: 日期,通过模板变量`{{日期}}`动态填充。 - `FPrdOrgId`, `FStockOrgId`, `FOwnerId0`: 这些字段使用固定值或通过模板变量结合转换器进行填充,如生产组织、入库组织和货主等。 ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{{入库单号}}" }, { ... } ``` #### 明细数组处理 在配置中,明细部分是一个数组,其中包含多个子字段,如入库类型、产品类型、物料编码等。这些字段同样通过模板变量和转换器进行动态填充: ```json { "field": "FEntity", "label": "明细", ... } ``` 例如,物料编码字段通过如下方式进行配置: ```json { "field": "FMaterialId", ... "value": "{{成品编号}}" }, { ... } ``` #### 关联关系表处理 关联关系表用于定义源单与目标单之间的关系,例如源单内码、分录内码等。这些信息通过查询模板进行动态获取和填充: ```json { ... } ``` #### 执行操作设置 最后,我们需要设置执行操作相关的参数,如表单ID、操作类型等: ```json { ... } ``` 这些参数确保了在数据写入过程中能够正确调用金蝶云星空API并执行相应的操作。 #### 实际应用中的注意事项 1. **数据验证**:确保所有基础资料有效性,避免因无效数据导致的写入失败。 2. **错误处理**:在实际应用中,需要对可能出现的错误进行捕获和处理,以确保系统稳定性。 3. **性能优化**:对于大批量数据处理,可以考虑分批次提交,以提高系统性能。 通过上述步骤,我们可以高效地将源平台的数据转换为金蝶云星空API接口所能接收的格式,并成功写入目标平台。这一过程不仅提高了数据处理效率,还确保了业务流程的顺畅运行。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)