通过ETL转换实现轻易云与金蝶云星空的数据对接

  • 轻易云集成顾问-彭萍
### 吉客云·奇门数据集成到金蝶云星空案例分享:JY-BDS销售出库单(7-售后发货) 在本技术案例中,我们将探讨如何通过高效的数据集成方案,将吉客云·奇门的销售出库单数据无缝对接到金蝶云星空。该方案以任务名称为“JY-BDS销售出库单(7-售后发货)”实际运行。本次集成主要借助于jackyun.tradenotsensitiveinfos.list.get API从吉客云·奇门获取数据,并使用batchSave API进行批量写入至金蝶云星空。 首先,需要确保系统能够处理高吞吐量的数据,因而我们设计了一套定时可靠的抓取机制来调用吉客云·奇门接口jackyun.tradenotsensitiveinfos.list.get,该机制极大提高了数据处理的时效性。同时,为了应对分页和限流问题,我们实施了一系列优化策略,以保持接口调用的稳定性和效率。 在保证数据质量方面,通过实时监控和告警系统,能够随时跟踪每个数据集成任务的状态与性能,及时发现并解决潜在的问题。与此同时,自定义的数据转换逻辑被应用于整个流程,使得不同业务需求下的数据结构差异得以顺利适配,从而保障了最终结果的一致性与准确性。 通过这样的技术实现,我们成功地实现了大量销售出库单数据从吉客云·奇门向金蝶云星空的快速、高效转移,同时保证了过程中的全生命周期管理和全透明可视化操作。这不仅提升了整体业务流程透明度,还显著增强了运营效率。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/D38.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用吉客云·奇门接口获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细介绍如何使用轻易云数据集成平台调用吉客云·奇门接口`jackyun.tradenotsensitiveinfos.list.get`来获取并加工数据。 #### 接口配置与请求参数 我们首先需要配置API接口及其请求参数。根据提供的元数据配置,我们将使用POST方法调用`jackyun.tradenotsensitiveinfos.list.get`接口。以下是主要的请求参数及其配置: - **modified_begin** 和 **modified_end**:用于指定修改时间范围,必须同时存在且时间间隔不能超过七天。 - **startModified** 和 **endModified**:最后修改时间范围。 - **tradeNo**:销售单号,多个用半角逗号分隔。 - **pageSize**:每页记录数,默认50,最大1000。 - **pageIndex**:页码,从0开始。 - **hasTotal**:首次调用时传1以获取总记录数。 - **startCreated** 和 **endCreated**:创建时间范围。 - **startAuditTime** 和 **endAuditTime**:审核时间范围。 - **startConsignTime** 和 **endConsignTime**:发货时间范围,默认值分别为上次同步时间和当前时间。 - **tradeStatus** 和 **tradeType**:订单状态和类型,后者固定为7(售后发货)。 - **fields**:需要返回的字段列表,用逗号分隔。 #### 请求示例 以下是一个典型的请求示例: ```json { "modified_begin": "2023-09-01T00:00:00", "modified_end": "2023-09-07T23:59:59", "pageSize": 100, "pageIndex": 0, "hasTotal": 1, "startConsignTime": "{{LAST_SYNC_TIME|datetime}}", "endConsignTime": "{{CURRENT_TIME|datetime}}", "tradeType": "7", "fields": "checkTotal,tradeNo,postFee,otherFee,..." } ``` #### 数据清洗与转换 在获取到原始数据后,需要进行清洗和转换,以便后续处理。以下是一些常见的数据清洗与转换操作: 1. **字段映射与重命名**: - 将API返回的数据字段映射到目标系统所需的字段名称。例如,将`tradeNo`映射为`orderNumber`。 2. **数据格式转换**: - 将日期格式从字符串转换为标准日期格式,以便于后续分析和处理。 3. **缺失值处理**: - 对于缺失值,可以选择填充默认值、删除记录或进行插值处理。 4. **数据过滤与筛选**: - 根据业务需求过滤不必要的数据。例如,只保留订单状态为已发货的数据。 #### 异常处理与补救机制 在实际操作中,可能会遇到各种异常情况,如网络故障、接口超时等。为了确保数据完整性和一致性,我们可以设置异常处理与补救机制: 1. **定时任务与重试机制**: - 使用Crontab定时任务,每天两次(6:30和18:30)自动重试失败的请求。 2. **增量同步与全量同步结合**: - 定期进行全量同步,以确保所有数据都能被正确获取和处理。在增量同步过程中,通过记录上次同步时间来实现增量更新。 3. **日志记录与监控告警**: - 实时监控数据流动和处理状态,并记录日志。一旦发现异常情况,立即触发告警通知相关人员进行处理。 #### 实际应用案例 假设我们需要获取过去两天内所有售后发货的销售出库单信息,并将其导入到目标系统中。我们可以按照以下步骤进行操作: 1. 配置API请求参数,包括起始时间、结束时间、每页记录数等。 2. 调用`jackyun.tradenotsensitiveinfos.list.get`接口获取原始数据。 3. 对原始数据进行清洗和转换,包括字段映射、格式转换等。 4. 将清洗后的数据写入目标系统,并记录日志以备查验。 通过上述步骤,我们可以高效地完成从源系统获取并加工数据的任务,为后续的数据分析和业务决策提供可靠的数据支持。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,最终转为目标平台金蝶云星空API接口所能够接收的格式,并写入目标平台。本文将详细探讨如何使用轻易云数据集成平台完成这一过程。 #### 元数据配置解析 元数据配置是实现ETL转换和写入的重要基础。以下是我们需要配置的元数据: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 20, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSCKD07_SYS" }, { // ...其他字段省略 } ], // ...其他配置省略 } ``` #### 配置解析与应用 1. **API与请求方法** 配置中的`api`字段指定了调用金蝶云星空的`batchSave`接口,`method`字段指定了HTTP请求方法为POST。 2. **操作参数** `operation`字段定义了批量保存操作的参数: - `rowsKey`: 指定数组键名。 - `rows`: 每次处理的数据行数。 - `method`: 批量保存的方法名。 3. **请求参数** `request`数组包含了所有需要传递给API的字段,每个字段都有详细的配置,包括字段名称、标签、类型、描述、解析器和默认值等。例如: - `FBillTypeID`: 单据类型,使用`ConvertObjectParser`解析器,将值转换为金蝶系统识别的编码。 - `FBillNo`: 单据编号,直接从源数据中的`tradeNo`字段获取。 - `FDate`: 日期,从源数据中的`consignTime`字段获取。 4. **嵌套数组** 对于复杂的数据结构,如明细信息,可以使用嵌套数组来表示。例如: ```json { "field": "FEntity", "label": "明细信息", "type": "array", ... // 子项配置 ... } ``` 5. **其他请求参数** 除了主要的数据字段,还包括一些控制参数,如表单ID、操作类型等: ```json { // 表单ID {"field":"FormId","label":"业务对象表单Id","type":"string","value":"SAL_OUTSTOCK"}, // 操作类型 {"field":"Operation","label":"执行的操作","type":"string","value":"Save"}, // 是否自动提交并审核 {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"false"}, // 验证基础资料有效性 {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","value":"true"} } ``` #### 数据转换与写入流程 1. **提取数据** 从源系统中提取所需的数据,并根据元数据配置进行初步清洗和整理。 2. **数据转换** 使用元数据中的解析器(如`ConvertObjectParser`)将源数据转换为目标系统所需格式。例如,将销售组织代码从源系统格式转换为金蝶系统识别的编码。 3. **组装请求体** 根据元数据配置,将所有字段组装成符合金蝶云星空API要求的请求体。确保嵌套数组和复杂结构正确映射。 4. **发送请求** 使用HTTP POST方法,将组装好的请求体发送到金蝶云星空的`batchSave`接口。处理响应结果,记录成功和失败的信息以便后续分析和处理。 #### 技术要点总结 - **解析器应用**: 利用解析器将不同系统间的数据格式进行转换,确保兼容性。 - **嵌套结构处理**: 对于复杂的数据结构,如订单明细,需要特别注意嵌套数组的正确映射。 - **批量操作**: 利用批量保存功能,提高效率,减少网络开销。 - **错误处理**: 实时监控和记录每次请求的响应结果,确保问题能够及时发现和解决。 通过以上步骤,我们可以高效地将源平台的数据经过ETL转换后写入到金蝶云星空,实现不同系统间的数据无缝对接。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/T10.png~tplv-syqr462i7n-qeasy.image)