轻易云数据集成平台:从马帮到金蝶云星空的ETL实践

  • 轻易云集成顾问-潘裕
### 非金蝶销售出库马帮-金蝶数据集成案例分享 在实际业务场景中,企业常需将不同平台的数据进行无缝整合,以实现信息的共享和流畅的业务操作。本篇文章聚焦于一个具体的系统对接集成案例:将马帮的销售出库数据集成到金蝶云星空。 #### 一、背景与挑战 由于马帮和金蝶云星空存在接口类型和数据格式上的差异,在实际实施过程中,需要解决以下几个关键技术问题: 1. **高效的数据写入能力**:支持大量订单数据从马帮快速写入至金蝶云星空。 2. **API调用与分页处理**:确保通过`order-get-order-list-new`接口可靠定时抓取所有所需订单,并处理分页及限流问题。 3. **自定义数据转换逻辑**:对比并调整马帮与金蝶云星空之间的数据结构差异,实现准确的数据映射。 4. **实时监控与异常处理**:实施实时监控及告警机制,及时发现并处理集成过程中的异常情况。 #### 二、方案简述 我们采用了轻易云数据集成平台来实现这一复杂的跨系统融合。具体步骤如下: 1. **API获取与解析**: - 通过轻易云提供的可视化工具设计流程,从调取`order-get-order-list-new`接口开始,每次拉取一定数量订单,根据返回值设置下一页参数,循环直到获取全部需要传输的数据。 2. **批量写入至目标系统**: - 利用平台强大的高吞吐量特性,将整理后的订单批量调用金蝶云星空的`batchSave` API进行保存,同时保障每个记录都被成功处理,不漏单。 3. **智能转换逻辑配置**: - 配置自定义转换规则,使得原本不统一的数据字段能够完美映射到目标系统。同时,对于必须字段缺失或错误时执行预设补充或修正策略。 4. **监控日志与自动重试机制**: - 借助集中式监控系统,对整个集成流程进行全面追踪,一旦检测到失败则触发重试机制,并详细记录日志以便日后分析优化。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D13.png~tplv-syqr462i7n-qeasy.image) ### 调用马帮接口order-get-order-list-new获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过调用马帮接口`order-get-order-list-new`来获取并加工数据。 #### 接口配置与调用 首先,我们需要配置元数据以便正确调用马帮的API接口。以下是元数据配置的主要内容: ```json { "api": "order-get-order-list-new", "effect": "QUERY", "method": "POST", "number": "platformOrderId", "id": "platformOrderId", "idCheck": true, "omissionRemedy": { "crontab": "30 */2 * * *", "takeOverRequest": [ { "field": "updateTimeStart", "label": "修改时间开始段", "type": "string", "is_required": true, "describe": null, "value": "_function FROM_UNIXTIME( unix_timestamp() -86400 , '%Y-%m-%d %H:%i:%s' )", "formModel": { "enable": false }, "tableModel": { "enable": false }, "physicalModel": { "enable": false } } ] }, ... } ``` 该配置定义了API的基本信息,包括请求方法、主键字段以及缺失补救策略等。 #### 请求参数设置 为了确保数据请求的准确性,我们需要设置适当的请求参数: ```json { "request": [ { "field": "status", "label": "状态", "type": "string", "value": "3,4" }, { "field": "updateTimeStart", "label": "发货时间开始时间", "type": "datetime", "value":"{{LAST_SYNC_TIME|datetime}}" }, { "field":"updateTimeEnd", "label":"发货时间结束时间", "type":"datetime", "value":"{{CURRENT_TIME|datetime}}" }, { "field":"page", "label":"当前页数", 'type':"int", 'value':1 } ] } ``` 这些参数确保我们能够获取到特定状态和时间范围内的订单数据,并支持分页查询。 #### 数据过滤与条件设置 为了进一步精确地筛选所需的数据,我们可以设置条件过滤: ```json { 'condition_bk': [ [ { 'field': 'platformOrderId', 'logic': 'notlike', 'value': 'FH' } ] ], 'condition': [ [ { 'field': 'platformOrderId', 'logic': 'notlike', 'value': 'FH' } ], [ { 'field': 'platformOrderId', 'logic': 'like', 'value': 'FH' }, { 'field': 'remark', 'logic': 'like', 'value': '拆分订单' } ] ] } ``` 这些条件确保我们能够排除特定前缀的订单ID,同时也能筛选出包含特定备注信息的订单。 #### 数据清洗与加工 在获取到原始数据后,下一步是进行数据清洗与加工。轻易云平台提供了丰富的数据处理功能,可以对获取的数据进行格式转换、字段映射和异常处理等操作。 例如,我们可以将时间戳转换为标准日期格式,或者根据业务需求对某些字段进行重新命名和计算。 #### 异常处理与补救机制 在实际操作中,可能会遇到数据缺失或请求失败等情况。为此,元数据配置中定义了缺失补救策略(omissionRemedy),例如: ```json { ... omissionRemedy: { crontab: “30 */2 * * *”, takeOverRequest: [ ... ] } } ``` 该策略通过定时任务和补救请求来确保数据完整性。例如,每隔两小时重新请求一次过去24小时内的数据,以弥补可能遗漏的数据。 通过以上步骤,我们可以高效地调用马帮接口`order-get-order-list-new`,并对获取的数据进行清洗和加工,为后续的数据转换与写入做好准备。这不仅提升了业务透明度和效率,也为系统间的数据无缝对接打下了坚实基础。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台中的ETL转换与金蝶云星空API接口对接技术案例 在轻易云数据集成平台中,数据生命周期的第二步是将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中涉及的技术细节和实现方法。 #### API接口配置与请求方法 在本案例中,我们使用的是金蝶云星空的`batchSave` API接口,通过POST方法提交数据。以下是具体的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "XSCKD01_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } }, { // ...其他字段配置 } ], // ...其他元数据配置 } ``` #### 数据字段解析与转换 在ETL过程中,关键的一步是将源平台的数据字段解析并转换为目标平台所需的格式。以下是几个重要字段的解析和转换示例: 1. **单据类型(FBillTypeID)**: - 配置:`"value": "XSCKD01_SYS"` - 转换:使用`ConvertObjectParser`进行对象转换,参数为`FNumber`。 2. **单据编号(FBillNo)**: - 配置:`"value": "{platformOrderId}"` - 转换:直接从源平台订单ID映射。 3. **日期(FDate)**: - 配置:`"value": "{expressTime}"` - 转换:直接从源平台快递时间映射。 4. **备注(Fnote)**: - 配置:`"value": "_function CASE WHEN '{platformId}'='亚马逊' AND '{fbaFlag}'='2' THEN 'FBA订单' ELSE ' ' END"` - 转换:使用函数进行条件判断和字符串拼接。 5. **客户(FCustomerID)**: - 配置:`"value": "{shopId}"` - 转换:使用`ConvertObjectParser`进行对象转换,参数为`FNumber`。 #### 明细信息处理 明细信息(FEntity)的处理较为复杂,需要对每个订单项进行逐一解析和转换: ```json { "field": "FEntity", "label": "明细信息", "type": "array", "children": [ { // ...明细字段配置 } ], // ...其他元数据配置 } ``` 每个明细项包含多个子字段,如仓库、物料编码、实发数量等,这些字段同样需要通过特定的解析器进行转换。例如: - **仓库(FStockID)**: - 配置:`"value":"_findCollection find FNumber from ... where F_VPWO_Text_qtr={{orderItem.stockWarehouseId}}"` - 转换:通过集合查找方式获取仓库编号。 - **物料编码(FMaterialID)**: - 配置:`"value":"{{orderItem.stockSku}}"` - 转换:直接映射物料编码。 - **实发数量(FRealQty)**: - 配置:`"value":"{{orderItem.quantity}}"` - 转换:直接映射数量。 #### 请求构建与提交 完成所有字段的解析和转换后,需要构建最终的请求体,并通过POST方法提交到金蝶云星空API接口: ```json { // 请求体示例 } ``` 请求体中包含了所有必要的业务对象表单ID、操作类型、是否自动提交并审核等参数。这些参数确保了数据能够正确地写入到金蝶云星空系统中,并触发相应的业务流程。 #### 小结 通过上述步骤,我们可以实现从源平台到金蝶云星空系统的数据ETL转换与写入。在这个过程中,关键在于准确地解析和转换每一个字段,并确保请求体符合目标API接口的要求。轻易云数据集成平台提供了强大的可视化操作界面和实时监控功能,使得整个过程更加透明和高效。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)