通过轻易云平台实现ETL转换并写入MySQL的技术案例

  • 轻易云集成顾问-谢楷斌
### 金蝶云星空数据集成到MySQL:系统对接技术案例分享 在众多企业信息化系统中,金蝶云星空和MySQL分别作为ERP和数据库管理的核心工具,经常需要实现数据的无缝集成。然而,这种跨平台的数据处理过程中,存在着各种复杂性及潜在挑战。通过轻易云数据集成平台,我们可以利用其高效、透明且全面可视化操作界面,实现从金蝶云星空到MySQL的数据流转。本案例详细介绍了如何通过 executeBillQuery 接口获取金蝶费用报销单,并将之可靠、高效地写入 MySQL 系统。 首先,在整个流程设计中,高吞吐量的数据写入能力是关键。这确保大量来自金蝶云星空的信息能够被快速捕获并存储到 MySQL 数据库中,从而大幅提升数据处理效率与时效性。例如,通过定时抓取 executeBillQuery 接口返回的批量报销单据,可以保障业务数据实时同步,无一遗漏。 其次,为了应对可能出现的数据质量问题,我们配置了一套完整的监控和告警系统。在执行每一步操作时,该系统会实时跟踪任务状态和性能,一旦发现异常便能及时发出预警,以便迅速采取相应措施。此外,自定义的数据转换逻辑帮助我们适配特定业务需求,解决了不同平台间的数据结构差异,确保最终交付结果符合预期。 然而,仅仅依赖这些基础功能还不够,我们也不得不面对更多技术细节,如处理金蝶接口分页和限流机制、异常重试策略以及精细化的日志记录等。在实际实施过程中,每一处细节都至关重要。比如,为避免由于接口调用次数过多造成限制,将合理设置分页参数已成为必要手段;此外,当网络故障或其他原因导致 API 请求失败时,则需启用错误重试机制,保证任务完成率最大化。 总之,通过以上技术要点及实践方案,本次项目成功实现了从金蝶查询费用报销单到 MySQL 的高效集成。接下来我们将深入探讨具体实施步骤与进一步优化策略,以期为类似场景提供有效参考。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来查询费用报销单,并对数据进行初步加工。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用金蝶云星空的`executeBillQuery`接口。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "effect": "QUERY", "method": "POST", "number": "FSourceNo", "id": "FEntity_FEntryID", "idCheck": true, "formatResponse": [ { "old": "FDate", "new": "FDate_new", "format": "date" } ], "request": [ {"field":"FSourceNo","label":"FSourceNo","type":"string","describe":"111","value":"FSourceNo"}, {"field":"FDocumentStatus","label":"FDocumentStatus","type":"string","describe":"111","value":"FDocumentStatus"}, {"field":"FDate","label":"FDate","type":"string","describe":"111","value":"FDate"}, {"field":"FTaxSubmitAmt","label":"FTaxSubmitAmt","type":"string","describe":"111","value":"FTaxSubmitAmt"}, {"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","value":"FEntity_FEntryID"} ], "otherRequest": [ {"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}, {"field":"TopRowCount","label":"TopRowCount","type":"int","describe":"金蝶的查询分页参数"}, {"field":"FilterString","label":"FilterString","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"'{{LAST_SYNC_TIME|date}}' and FCreatorId= '100796' and FSourceNo LIKE 'LHHYBXD%'"}, {"field":"FieldKeys","label":"FieldKeys","type":"array","describe":"","value":["FPOOrderEntry_FEntryId", "FPurchaseOrgId.FNumber"]}, {"field": "FormId", "label": "FormId", "type": "string", "describe": "", "value": "ER_ExpReimbursement"} ], "autoFillResponse": true } ``` #### 请求参数详解 1. **基本请求字段**: - `FSourceNo`: 源单编号。 - `FDocumentStatus`: 单据状态。 - `FDate`: 日期。 - `FTaxSubmitAmt`: 含税金额。 - `FEntity_FEntryID`: 分录主键ID。 2. **其他请求字段**: - `Limit`: 分页大小。 - `StartRow`: 分页起始行。 - `TopRowCount`: 返回记录数上限。 - `FilterString`: 查询过滤条件,例如:`FSupplierId.FNumber = 'VEN00010' and FApproveDate >= '2023-01-01'`。 - `FieldKeys`: 查询返回字段,例如:`["FPurchaseOrgId.FNumber"]`。 - `FormId`: 表单ID,此处为费用报销单,值为`ER_ExpReimbursement`。 #### 数据格式化与处理 在获取到原始数据后,我们需要对部分字段进行格式化处理。例如,将日期字段`FDate`转换为新的格式并命名为`FDate_new`。这一步可以通过配置中的`formatResponse`实现: ```json { "old": "FDate", "new": "FDate_new", "format": "date" } ``` 该配置将原始日期字段转换为新的日期格式,并重命名为`FDate_new`,确保后续的数据处理和存储更加规范和一致。 #### 实际调用示例 以下是一个实际的API调用示例: ```json { "apiName": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.executeBillQuery.common.kdsvc", "parameters": { ... // 填入上述配置中的请求和其他请求参数 ... } } ``` 通过上述配置和调用,我们能够成功从金蝶云星空中获取费用报销单的数据,并对其进行初步加工,为后续的数据转换与写入奠定基础。 #### 总结 本文详细介绍了如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取费用报销单的数据,并对其进行初步加工。这一步骤是整个数据集成生命周期中的关键环节,确保了源系统数据能够准确、及时地被提取和处理,为后续的数据转换与写入提供了可靠的数据基础。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入MySQLAPI接口的技术案例 在数据集成生命周期的第二步中,我们需要将已经从源平台(如金蝶)获取的数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台MySQLAPI接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何通过轻易云数据集成平台实现这一过程。 #### 数据请求与清洗 首先,从金蝶系统查询费用报销单的数据。假设我们已经完成了数据请求与清洗阶段,得到了符合要求的源数据。接下来,我们将重点讨论如何配置元数据,将这些源数据转换并写入MySQL数据库。 #### 数据转换与写入 在轻易云数据集成平台中,配置元数据是关键步骤。以下是我们使用的元数据配置: ```json { "api": "execute", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "main_params", "label": "main_params", "type": "object", "describe": "111", "children": [ {"field": "FEntity_FEntryID", "label": "明细id", "type": "string", "value":"{FEntity_FEntryID}"}, {"field": "order_no_new", "label": "单号", "type": "string", "value":"{FSourceNo}"}, {"field": "FDocumentStatus", "label": "状态", "type": "string", "value":"{FDocumentStatus}"}, {"field": "qty_count", "label": "数量", "type":"string","value":"1"}, {"field": "sales_count", "label":"金额","type":"string","value":"{FTaxSubmitAmt}"}, {"field":"datetime_new","label":"时间","type":"date","value":"{FDate_new}"}, {"field":"Document_Type","label":"单据类型","type":"string","value":"费用报销单"} ] } ], ... } ``` 此配置文件定义了一个POST请求,用于向MySQLAPI接口发送转换后的数据。具体字段解释如下: - `api`: 指定API操作类型,这里为`execute`。 - `effect`: 执行效果,这里为`EXECUTE`。 - `method`: HTTP请求方法,这里为`POST`。 - `idCheck`: 是否检查ID字段,这里为`true`。 - `request`: 请求参数列表,包含一个对象类型的参数`main_params`,其子字段包括: - `FEntity_FEntryID`: 明细ID,对应源数据中的`FEntity_FEntryID`。 - `order_no_new`: 单号,对应源数据中的`FSourceNo`。 - `FDocumentStatus`: 状态,对应源数据中的`FDocumentStatus`。 - `qty_count`: 数量,固定值为1。 - `sales_count`: 金额,对应源数据中的`FTaxSubmitAmt`。 - `datetime_new`: 时间,对应源数据中的日期字段`FDate_new`。 - `Document_Type`: 单据类型,固定值为“费用报销单”。 #### SQL语句配置 为了将转换后的数据插入到目标MySQL数据库中,我们还需要配置相应的SQL语句: ```json { ... "otherRequest":[ { "field":"main_sql", ... ... ... ... ``` 这个SQL语句用于执行插入操作,将上述字段对应的数据插入到表`hc_kd_fybx`中。 #### 实际操作步骤 1. **配置ETL任务**:在轻易云平台上创建一个新的ETL任务,选择合适的数据源和目标,并应用上述元数据配置文件。 2. **执行任务**:启动任务后,平台会自动提取金蝶系统中的费用报销单数据,并根据配置文件进行转换。 3. **监控与验证**:通过轻易云提供的可视化界面实时监控任务执行状态,并验证目标MySQL数据库中的记录是否正确插入。 通过以上步骤,我们成功地将金蝶系统中的费用报销单数据转换并写入到目标MySQL数据库,实现了不同系统间的数据无缝对接。这一过程不仅简化了复杂的数据处理工作,还提高了业务流程的透明度和效率。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T24.png~tplv-syqr462i7n-qeasy.image)