轻易云平台与旺店通系统的ETL转换和数据写入技术

  • 轻易云集成顾问-彭亮
### 非归档-旺店通-销售出库单==>轻易云【销售出库查询总方案】技术案例 在业务数据集成过程中,保证数据的完整性、实时监控和错误处理是关键因素。本次我们将分享如何通过轻易云平台高效对接并集成旺店通·企业奇门的数据集,以确保销售出库单数据的准确传输和处理,实现定制化的数据映射与异常重试机制。 #### 确保不漏单:调用`wdt.stockout.order.query.trade`接口 为了确保对接过程中不遗漏任何一个销售出库单,我们选择调用旺店通·企业奇门提供的API接口`wdt.stockout.order.query.trade`。该接口可以精准地拉取系统中所有待处理的订单信息。在实施过程中,通过设置定时任务来定期抓取最新数据,辅以分页策略,有效避免了因大量记录导致的数据丢失问题。 #### 快速写入到轻易云 大量数据导入是另一个技术挑战。为了解决这一问题,我们利用轻易云平台强大的批量数据写入能力,并结合目标API中的“写入空操作”,实现快速且稳定的数据信息输入。同时,为了进一步提高效率,采用多线程并行处理方式,大幅度减少了整体数据传输时间。 #### 分页及限流管理 由于每次请求可能返回的数据量较大,而API本身具有一定的限流措施,因此我们在设计解决方案时特别注意到了分页和限流控制。当获取多个结果分页时,通过调整请求参数中的起始位置及数量限制,使得一次性获取适当规模的数据段,以此避开触发API限流,从而保障整个过程顺畅进行。 #### 数据格式差异及映射 不同系统间存在着明显的数据格式差异。为应对此类情况,在将旺店通·企业奇门获取到的数据转换至符合目的端要求格式之前,我们使用轻易云平台内置功能对字段进行相应转换。例如,将"JSON"格式转化为更标准化的表格形式,以便于后续操作流程统一执行,同时自动修正或补全缺失的信息字段,使最终输出结果满足应用需求。 这些技术点有效帮助我们实现从旺店通至轻易云的一站式无缝连接,并将在实际运作中持续优化提升其性能与可靠性。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D25.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·企业奇门接口获取销售出库单数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取并加工销售出库单数据。 #### 接口概述 接口`wdt.stockout.order.query.trade`用于查询销售出库单信息。该接口采用POST请求方式,支持增量获取数据,并提供多种查询条件以满足不同业务需求。 #### 请求参数配置 在元数据配置中,我们定义了多个请求参数,这些参数用于指定查询条件和分页信息。以下是主要的请求参数及其配置: 1. **开始时间(start_time)** - 类型:datetime - 描述:增量获取数据的开始时间,格式为`yyyy-MM-dd HH:mm:ss` - 示例值:`{{LAST_SYNC_TIME|datetime}}` 2. **结束时间(end_time)** - 类型:datetime - 描述:增量获取数据的结束时间,格式为`yyyy-MM-dd HH:mm:ss` - 示例值:`{{CURRENT_TIME|datetime}}` 3. **状态(status)** - 类型:string - 描述:订单状态,如已取消、已审核、已发货等 - 示例值:`110` 4. **系统订单编号(src_order_no)** - 类型:string - 描述:系统订单编号 5. **原始单号(src_tid)** - 类型:string - 描述:原始单号 6. **出库单号(stockout_no)** - 类型:string - 描述:出库单号 7. **仓库编号(warehouse_no)** - 类型:string - 描述:代表仓库所有属性的唯一编码,用于区分仓库 8. **店铺(shop_nos)** - 类型:string - 描述:店铺编号 9. **分页大小(page_size)** - 类型:string - 描述:每页返回的数据条数,默认值为40 - 示例值:`{PAGINATION_PAGE_SIZE}` 10. **页号(page_no)** - 类型:string - 描述:分页页号,默认从0页开始 - 示例值:`{PAGINATION_START_PAGE}` #### 数据请求与清洗 在轻易云平台中,我们可以通过配置上述元数据来实现对旺店通·企业奇门接口的调用。在实际操作中,首先需要设置好请求参数,以确保能够准确地获取所需的数据。 ```json { "api": "wdt.stockout.order.query.trade", "effect": "QUERY", "method": "POST", "number": "order_no", "id": "stockout_id", "name": "order_no", "idCheck": true, "request": [ {"field":"start_time","label":"开始时间","type":"datetime","describe":"增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss","value":"{{LAST_SYNC_TIME|datetime}}"}, {"field":"end_time","label":"结束时间","type":"datetime","describe":"增量获取数据,end_time作为结束时间,格式: yyyy-MM-dd HH:mm:ss","value":"{{CURRENT_TIME|datetime}}"}, {"field":"status","label":"状态","type":"string","describe":"5已取消,55已审核,95已发货,105 部分打款,110已完成,113: 异常发货","value":"110"}, {"field":"src_order_no","label":"系统订单编号","type":"string","describe":"系统订单编号"}, {"field":"src_tid","label":"原始单号","type":"string","describe":"原始单号"}, {"field":"stockout_no","label":"出库单号","type":"string","describe":"出库单号"}, {"field":"warehouse_no","label":"仓库编号","type":"string","describe": "代表仓库所有属性的唯一编码,用于仓库区分"}, {"field": "shop_nos", "label": "店铺", "type": "string"} ], "otherRequest":[{"field": "page_size", "label": "分页大小", "type": "string", "describe": "每页返回的数据条数", "value": "{PAGINATION_PAGE_SIZE}"},{"field": "page_no", "label": "页号", "type": string, describe: 不传值默认从0页开始, value: {PAGINATION_START_PAGE}}], buildModel: true, autoFillResponse: true, } ``` #### 数据转换与写入 在成功获取到销售出库单数据后,需要对其进行必要的清洗和转换,以便后续处理和存储。轻易云平台提供了自动填充响应功能,可以根据配置自动将API响应的数据映射到目标模型中,从而简化了数据处理流程。 通过上述配置和操作,我们可以高效地从旺店通·企业奇门系统中提取销售出库单数据,并进行相应的数据清洗和转换,为后续的数据处理和分析奠定基础。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台的ETL转换与写入技术详解 在轻易云数据集成平台的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式,最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。 #### 数据请求与清洗 在数据集成过程中,首先需要从源系统(如旺店通)请求销售出库单数据。这个阶段主要涉及到API调用、数据抓取和初步的数据清洗。假设我们已经完成了这一阶段,接下来重点关注如何将这些清洗后的数据进行ETL转换,并通过API接口写入轻易云集成平台。 #### 数据转换与写入 1. **元数据配置解析** 根据提供的元数据配置: ```json { "api": "写入空操作", "effect": "EXECUTE", "method": "POST", "idCheck": true } ``` 我们可以看到,目标平台的API接口为“写入空操作”,需要使用POST方法进行调用,同时要求进行ID检查。 2. **ETL转换过程** ETL(Extract, Transform, Load)过程包括三个步骤:提取、转换和加载。在本案例中,我们已经完成了提取(Extract)和初步清洗,现在重点在于转换(Transform)和加载(Load)。 - **提取(Extract):** 从旺店通系统中提取销售出库单数据。这一步骤通常通过API调用实现,返回的数据可能是JSON格式,需要根据业务需求进行解析和初步清洗。 - **转换(Transform):** 转换步骤是ETL过程中的核心部分,需要根据目标平台的要求对数据进行格式化处理。例如,将旺店通返回的JSON数据结构转换为轻易云集成平台所需的数据结构。 假设旺店通返回的数据如下: ```json { "order_id": "12345", "customer_name": "张三", "items": [ {"item_id": "A001", "quantity": 2}, {"item_id": "B002", "quantity": 1} ], "total_amount": 300.00 } ``` 我们需要将其转换为轻易云集成平台所需的格式,例如: ```json { "订单编号": "12345", "客户姓名": "张三", "商品列表": [ {"商品编号": "A001", "数量": 2}, {"商品编号": "B002", "数量": 1} ], "总金额": 300.00 } ``` 3. **加载(Load):** 在完成数据转换后,需要将其通过API接口写入到轻易云集成平台。根据元数据配置,我们需要使用POST方法,并且在发送请求前进行ID检查。 - **ID检查:** 在发送请求前,确保每个订单都有唯一的订单编号。如果发现重复或缺失,需要进行相应处理,如生成新的唯一ID或记录错误日志。 - **API调用:** 使用HTTP库(如Python中的requests库)发送POST请求,将转换后的JSON数据写入目标平台。例如: ```python import requests url = 'https://api.qingyiyun.com/execute' headers = {'Content-Type': 'application/json'} data = { '订单编号': '12345', '客户姓名': '张三', '商品列表': [ {'商品编号': 'A001', '数量': 2}, {'商品编号': 'B002', '数量': 1} ], '总金额': 300.00 } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print('Data successfully written to the target platform.') else: print('Failed to write data:', response.content) ``` #### 实时监控与错误处理 在整个ETL过程中,实时监控和错误处理也是至关重要的一环。轻易云数据集成平台提供了全透明可视化的操作界面,可以实时监控每个环节的数据流动和处理状态。一旦发生错误,可以快速定位并解决问题。 - **实时监控:** 利用平台提供的监控工具,实时查看数据流动情况,确保每个订单都能正确地从源系统提取、转换并写入目标系统。 - **错误处理:** 在每个步骤中加入错误捕获机制,一旦发生异常,如网络故障、数据格式不匹配等,可以记录详细日志并采取相应措施,如重试或通知管理员。 综上所述,通过合理配置元数据、精确执行ETL流程以及有效利用API接口,我们可以高效地将源系统的数据无缝对接到轻易云集成平台,实现不同系统间的数据同步与共享。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)