ETL数据集成案例:从旺店通到金蝶云星空

  • 轻易云集成顾问-何语琴
### 案例分享:旺店通·企业奇门数据集成到金蝶云星空 在实际操作中,我们遇到了一个典型的业务场景:将旺店通·企业奇门系统中的销售退货单据**集成到**金蝶云星空。该数据对接过程不仅要求高效精准,还需确保整个流程的透明度和可追溯性。 #### API接口概述 对于此次集成任务,两个关键API接口分别是: - **获取销售退货单数据(wdt.stockin.order.query.refund)** - **批量写入销售退货单数据(batchSave)** #### 主要技术挑战与解决方案 1. **如何调用旺店通·企业奇门接口wdt.stockin.order.query.refund** - 要求定时可靠地抓取最新的数据。 2. **处理分页和限流问题** - 使用适当的策略来避免请求过载,包括合理设置分页参数和速率限制。 3. **批量快速写入数据到金蝶云星空** - 利用其支持高吞吐量的数据写入能力,对大规模数据进行高效处理。 4. **实时监控与告警机制** - 集中监控系统及时发现并报告任何异常,以便快速响应。 通过上述步骤,我们能够实现从获取、转换到最终写入完备的数据流水线,并且在保障性能的同时,最大程度避免了漏单现象。接下来将进一步详述这些技术点及其具体实现方法。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D28.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query.refund获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query.refund`来获取并加工销售退货单数据。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用接口。以下是关键的元数据配置: ```json { "api": "wdt.stockin.order.query.refund", "method": "POST", "number": "order_no", "id": "order_no", "pagination": { "pageSize": 50 }, "idCheck": true, "request": [ { "field": "start_time", "label": "开始时间", "type": "datetime", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "datetime", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "status", "label": "状态", "type": "string", "value": "80" }, { "field": "shop_no", "label": "店铺编号", "type": "string" }, { "field": "src_order_no", "label": "退换单号", "type": "string" }, { "field": "stockin_no", "label": "入库单号", "type":"string" }, { “field”: “time_type”, “label”: “时间类型”, “type”: “int” } ], “otherRequest”: [ { “field”: “page_size”, “label”: “分页大小”, “type”: “string”, “value”: “{PAGINATION_PAGE_SIZE}” }, { “field”: “page_no”, “label”: “页号”, “type”: “string”, “value”:“{PAGINATION_START_PAGE}” } ], ”condition_bk“: [ [ { ”field“: ”shop_no“, ”logic“: ”neqv2“, ”value“: ”ae89e42“ } ], [], [] ], ”condition“: [ [ { ”field“: ”shop_no“, ”logic“: ”neqv2“, ”value“: ”ae89e42“, ”strictMode“:true } ], [], [] ] } ``` #### 请求参数解析 - **start_time** 和 **end_time**:这两个字段用于定义查询的时间范围,分别使用上次同步时间和当前时间。 - **status**:状态字段固定为"80",表示只查询特定状态的退货单。 - **shop_no**、**src_order_no** 和 **stockin_no**:这些字段用于进一步过滤查询结果,可以根据实际需求进行设置。 - **time_type**:定义时间类型,通常为整数类型。 分页参数 `page_size` 和 `page_no` 用于控制每次请求的数据量和页码,以实现大数据量的分批处理。 #### 数据请求与清洗 在完成接口调用配置后,下一步是发送请求并获取数据。由于轻易云平台支持全异步操作,我们可以高效地处理大批量数据。 1. **发送请求**: - 使用POST方法发送请求,携带上述配置的参数。 - 平台会自动处理分页逻辑,确保所有符合条件的数据都能被逐页获取。 2. **数据清洗**: - 获取到的数据可能包含冗余或不符合业务需求的信息,需要进行清洗。 - 根据业务规则过滤掉无效或重复的数据,例如通过 `order_no` 字段去重。 #### 数据转换与写入 在清洗后的数据基础上,需要进行必要的数据转换,以便后续写入目标系统。常见的转换操作包括: - 字段映射:将源系统字段映射到目标系统字段。 - 数据格式转换:例如日期格式、数值单位等。 最后,将转换后的数据写入目标系统,完成整个数据集成过程。 通过以上步骤,我们可以高效地利用轻易云平台实现旺店通销售退货单的数据集成,为业务提供及时准确的数据支持。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S6.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是一个详细的技术案例,展示如何通过轻易云数据集成平台配置元数据,实现旺店通销售退货单到金蝶云星空销售退货单的转换和写入。 #### 配置元数据 我们首先需要配置好元数据,以便在ETL过程中正确映射和转换数据。以下是具体的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "ZYD-023" }, { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { ... } ], ... } ``` #### 数据请求与清洗 在ETL流程中,首先从源系统(旺店通)请求销售退货单的数据,并进行必要的数据清洗。假设我们已经获取了以下JSON格式的数据: ```json { "order_no": "SO12345678", ... } ``` #### 数据转换 根据配置好的元数据,我们需要将源系统的数据字段映射到目标系统所需的字段,并进行必要的转换。以下是几个关键字段的转换示例: 1. **单据类型(FBillTypeID)**: ```json { ... { "field": "FBillTypeID", ... "value": "{order_no}" } ... } ``` 在此,我们使用`ConvertObjectParser`将`order_no`解析为金蝶云星空所需的`FNumber`格式。 2. **销售组织(FSaleOrgId)**: ```json { ... { ... "_function CASE '{shop_no}' WHEN 'E0029' THEN '3000' WHEN 'E0030' THEN '3000' WHEN 'E0031' THEN '3000' WHEN 'E0036' THEN '3000' WHEN 'E0037' THEN '3000' ELSE '7000' END" } ... } ``` 根据不同的`shop_no`值,映射到相应的销售组织编码。 3. **明细信息(FEntity)**: ```json { ... { ... "_function CASE '{warehouse_no}' WHEN '1008-1' THEN '1008' ELSE '{warehouse_no}' END" } ... } ``` 根据仓库编号进行相应处理,确保符合金蝶云星空API接口要求。 #### 数据写入 完成所有字段的映射和转换后,将处理好的数据通过API接口写入金蝶云星空系统。以下是一个完整的数据请求示例: ```json { ... { "_function CASE '{shop_no}' WHEN 'E0029' THEN '3000' WHEN 'E0030' THEN '3000' WHEN 'E0031' THEN '3000' WHEN 'E0036' THEN '3000' WHEN 'E0037' THEN '3000' ELSE '7000' END" }, { "_function CASE '{warehouse_no}' WHEN '1008-1' THEN '1008' ELSE '{warehouse_no}' END" }, ... } ``` 通过上述步骤,我们实现了从旺店通销售退货单到金蝶云星空销售退货单的数据ETL转换和写入。整个过程通过轻易云数据集成平台提供的全异步、支持多种异构系统集成的平台特性,使得不同系统间的数据无缝对接成为可能。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)