ETL转换:从旺店通到金蝶云星空的数据处理全解析

  • 轻易云集成顾问-曾平安
### 案例分享:调拨出库管理旺店通数据集成到金蝶云星空 在本案例中,我们将详细探讨如何成功实现「调拨出库」类型的数据从旺店通·企业奇门系统的出库单管理模块,集成到金蝶云星空中的其他出库单模块。通过API接口 `wdt.stockout.order.query` 获取旺店通数据,并使用 `batchSave` 接口实现数据在金蝶云星空的写入。 为了确保整个数据集成过程高效、可靠和准确,采用了以下几个关键技术方案: 1. **定时可靠抓取**:利用定时任务机制,每隔一段时间自动调用旺店通·企业奇门接口 `wdt.stockout.order.query` 以获取最新的出库单数据。这些任务均配置了重试策略,以防止网络波动或临时故障导致的数据漏采问题。 2. **处理分页与限流**:由于旺店通接口存在返回结果分页及请求频率限制,因此设计了一种智能分页抓取方案,确保每次获取最大量有效数据,同时避免触发限流限制,从而保证大批量数据快速、稳定地导入目标系统。 3. **格式转换与映射**:针对两套系统间可能的字段不一致和格式差异,通过自定义映射规则,将旺店通返回的数据转换为符合金蝶云星空要求的结构。在此过程中,还会捕捉并记录所有异常情况以便后续分析与优化。 4. **批量写入优化**:为了提高整体写入性能,在经过预处理和验证后的数据信息,会被打包成适当大小的一组,通过调用 `batchSave` 接口进行批量写入操作,大幅提升传输效率和速度。 5. **实时监控与日志记录**:提供全程透明化的数据处理监控体系,可以实时追踪每一个环节。所有操作日志被自动记录并归档,对于出现的问题可以迅速定位原因并及时响应,提高整体运维效果及用户体验。 接下来,我们将深入剖析这些技术点在实际项目实施中的具体应用细节,以及应对挑战的方法。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D17.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·企业奇门接口wdt.stockout.order.query获取并加工数据 在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何使用轻易云数据集成平台配置元数据,调用旺店通·企业奇门接口`wdt.stockout.order.query`获取并加工数据。 #### 接口概述 接口`wdt.stockout.order.query`用于查询出库单信息。该接口采用POST请求方式,支持多种参数配置以实现精确的数据查询。以下是该接口的主要参数配置: - **start_time**: 开始时间,用于增量获取数据,格式为`yyyy-MM-dd HH:mm:ss`。 - **end_time**: 结束时间,用于增量获取数据,格式为`yyyy-MM-dd HH:mm:ss`。 - **status**: 出库单状态,例如110表示已完成。 - **order_type**: 出库单类型,例如2表示调拨出库。 - **src_order_no**: 系统订单编号。 - **src_tid**: 原始单号。 - **stockout_no**: 出库单号。 - **shop_no**: 店铺编号,用于区分不同店铺的数据。 - **warehouse_no**: 仓库编号,用于区分不同仓库的数据。 此外,还支持分页参数: - **page_size**: 每页返回的数据条数,默认值为40。 - **page_no**: 页号,默认从0页开始。 #### 元数据配置 在轻易云数据集成平台中,我们可以通过以下元数据配置来调用该接口: ```json { "api": "wdt.stockout.order.query", "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": "order_type", ... ``` #### 数据请求与清洗 在实际操作中,我们首先需要设置好请求参数。通过使用模板变量如`{{LAST_SYNC_TIME|datetime}}`和`{{CURRENT_TIME|datetime}}`来动态填充开始和结束时间,可以确保每次调用都是增量获取最新的数据。 例如: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期的第二步:ETL转换与数据写入金蝶云星空API接口 在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为目标平台金蝶云星空API接口所能够接收的格式,最终写入目标平台。 #### 数据请求与清洗 在开始ETL转换之前,首先需要从源平台(如旺店通)获取出库单管理的数据。假设我们已经完成了这一阶段,并且获得了结构化的原始数据。接下来,我们将进入数据转换与写入阶段。 #### 数据转换 在数据转换过程中,需要将源平台的数据字段映射到目标平台金蝶云星空API接口所需的字段格式。以下是元数据配置示例,该配置定义了如何将源平台的数据映射到金蝶云星空的其他出库单API接口: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{order_no}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"标准其他出库单:QTCKD01_SYS\n资产出库:QTCKD02_SYS\nVMI出库:QTCKD03_SYS\n费用物料出库:QTCKD04_SYS\n库存调整:QTCKD05_SYS","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"QTCKD07_SYS"}, {"field":"FStockOrgId","label":"库存组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FPickOrgId","label":"领用组织","type":"string","describe":"领用组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FStockDirect","label":"库存方向","type":"string","describe":"库存方向","value":"GENERAL"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{consign_time}"}, {"field":"FDeptId","label":"领料部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000003"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"","value":""}, {"field":"","label":"","type":"","describe":"","value":""}, ... ], "otherRequest":[ {"field":"","label":"","type":"","describe":"","value":""}, ... ], "operation":{ "rowsKey":"", "rows":"", "method":"", } } ``` 上述配置中,每个字段都详细描述了其在目标系统中的映射关系。例如: - `FBillNo` 映射为 `{order_no}`,即源系统中的订单编号。 - `FBillTypeID` 固定为 `QTCKD07_SYS`,表示标准其他出库单。 - `FStockOrgId` 和 `FPickOrgId` 都固定为 `100`,表示库存组织和领用组织。 #### 数据写入 完成数据转换后,需要将这些结构化的数据通过API接口写入到金蝶云星空。以下是一个实际的HTTP POST请求示例,用于将转换后的数据提交到金蝶云星空: ```http POST /k3cloud/api/batchSave HTTP/1.1 Host: api.kingdee.com Content-Type: application/json Authorization: Bearer <token> { "FormId": "STK_MisDelivery", "IsAutoSubmitAndAudit": false, "IsVerifyBaseDataField": true, "Operation": "Save", "InterationFlags": ["STK_InvCheckResult"], "Model": { ... } } ``` 在这个请求中: - `FormId` 指定业务对象表单ID,这里为 `STK_MisDelivery`。 - `IsAutoSubmitAndAudit` 设置为 `false`,表示不自动提交和审核。 - `IsVerifyBaseDataField` 设置为 `true`,表示验证所有基础资料有效性。 - `Operation` 设置为 `Save`,执行保存操作。 - `InterationFlags` 包含 `"STK_InvCheckResult"`,允许负库存。 通过上述配置和请求,我们实现了从源平台到目标平台的数据无缝对接。这一过程不仅确保了数据的一致性和准确性,还大大提高了业务处理效率。 #### 总结 通过轻易云数据集成平台,我们可以高效地完成从源平台到目标平台的数据ETL转换和写入操作。在实际应用中,只需根据具体业务需求调整元数据配置,即可实现不同系统间的数据无缝对接,为企业的信息化建设提供强有力的支持。 ![打通钉钉数据接口](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)