ETL转换与金蝶云星空API集成案例解析

  • 轻易云集成顾问-孙传友
### 旺店通·企业奇门数据集成到金蝶云星空案例分享:传入金蝶其他出库单 在系统集成项目中,如何确保不同平台间的数据无缝对接,一直是技术人员面临的核心挑战。本次我们聚焦于一个实际运行的方案:将旺店通·企业奇门的数据高效传入金蝶云星空,以实现其他出库单数据的同步和管理。 为了实现这一目标,我们采用了轻易云数据集成平台,该平台支持自定义数据转换逻辑,并提供可视化的数据流设计工具,使得复杂的数据处理过程更加直观且易于管理。具体方案包括从旺店通·企业奇门接口`wdt.stockout.order.query`定时、可靠地抓取订单数据,再通过优化后的批量写入机制,高效地将这些数据存储到金蝶云星空接口`batchSave`中。 集成过程中,为了解决分页和限流等问题,我们设计了一套自动重试与异常处理机制,确保每条订单都能成功同步。此外,通过集中监控和告警系统,我们实时跟踪整个数据流动情况,当出现任何异常时能够及时介入并处理。这不仅提升了系统稳定性,还有效防止了漏单现象。 在具体实施阶段,相应解决以下几项关键技术点: 1. **如何调用旺店通·企业奇门接口wdt.stockout.order.query**: 通过API资产管理功能,实现统一视图控制台下的高效调用。 2. **如何处理分页和限流问题**: 使用自动重试与错误重试机制来应对潜在限制,并保证连续性。 3. **克服两者之间的数据格式差异**: 设置定制化的数据映射规则,使结构不一致的问题迎刃而解。 4. **大规模快速写入至金蝶云星空**: 利用高吞吐量特性,在短时间内完成大量订单数据写入,提高整体效率。 由此可见,通过合理配置元数据及充分利用各环节优势,不仅可以保障订单信息准确、高速地传输,还能显著提高业务操作透明度与管理效益。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/D11.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台调用旺店通·企业奇门接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细介绍如何使用轻易云数据集成平台调用旺店通·企业奇门接口 `wdt.stockout.order.query` 获取并加工数据。 #### 接口概述 `wdt.stockout.order.query` 是一个用于查询出库单信息的API接口。该接口支持多种参数配置,能够根据不同的查询条件获取相应的出库单数据。以下是该接口的元数据配置: ```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": "string", "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "string", "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "order_type", "label": "出库单类型", "type": "string", "describe": [ {"2":"调拨出库"}, {"3":"采购退货出库"}, {"4":"盘亏出库"}, {"5":"生产出库"}, {"7":"其他出库"}, {"8":"多发出库"}, {"9":"纠错出库"}, {"10":"保修配件出库"}, {"11":"初始化出库"}, {"12":"jit拣货出库"}, {"13":"委外出库"} ] }, { "field": "status", ... ``` #### 请求参数配置 在实际应用中,我们需要根据业务需求配置请求参数。以下是一些关键参数及其配置示例: - **开始时间 (`start_time`)** 和 **结束时间 (`end_time`)**: ```json { ... { ... “value”: "{{LAST_SYNC_TIME|datetime}}" }, { ... “value”: "{{CURRENT_TIME|datetime}}" } } ``` 这些参数用于按最后修改时间增量获取数据,确保每次同步的数据都是最新的。 - **出库单类型 (`order_type`)**: ```json { ... “value”: “7” } ``` 我们可以根据业务需求选择特定类型的出库单,例如“其他出库”。 - **分页大小 (`page_size`)** 和 **页号 (`page_no`)**: ```json { ... “value”: "{PAGINATION_PAGE_SIZE}" }, { ... “value”: "{PAGINATION_START_PAGE}" } ``` 分页参数确保在大批量数据查询时能够分批次处理,提高效率和稳定性。 #### 数据清洗与转换 在获取到原始数据后,需要进行清洗和转换,以便后续的数据处理和写入。以下是一些常见的数据清洗与转换操作: 1. **字段映射**:将源系统中的字段映射到目标系统中的字段。例如,将 `stockout_id` 映射为 `order_id`。 2. **数据格式转换**:将日期格式从 `yyyy-MM-dd HH:mm:ss` 转换为目标系统所需的格式。 3. **过滤无效数据**:移除状态为“已取消”的订单,确保只处理有效订单。 #### 实践案例 假设我们需要从旺店通获取所有状态为“已发货”和“已完成”的其他出库单,并将其传入金蝶系统。具体步骤如下: 1. 配置请求参数: ```json { ... “start_time”: "{{LAST_SYNC_TIME|datetime}}", “end_time”: "{{CURRENT_TIME|datetime}}", “order_type”: “7”, “status”: ["95", “110”] } ``` 2. 调用接口并获取响应: ```python response = requests.post(api_url, data=json.dumps(request_params), headers=headers) data = response.json() ``` 3. 数据清洗与转换: ```python cleaned_data = [] for record in data['orders']: if record['status'] in ['95', '110']: cleaned_record = { 'order_id': record['stockout_id'], 'order_no': record['order_no'], 'warehouse_no': record['warehouse_no'], 'date': datetime.strptime(record['date'], '%Y-%m-%d %H:%M:%S').strftime('%Y%m%d') } cleaned_data.append(cleaned_record) ``` 通过上述步骤,我们成功地从旺店通获取了符合条件的其他出库单,并对其进行了必要的数据清洗和转换,为后续的数据写入做好了准备。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与金蝶云星空API接口集成案例 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是将源平台数据转化为目标平台可接受格式的关键步骤。本文将深入探讨如何利用轻易云数据集成平台,将旺店通的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在开始ETL转换之前,我们需要从源系统(旺店通)获取原始数据。这一阶段主要包括数据请求和初步清洗,以确保数据的完整性和准确性。假设我们已经完成了这一阶段,接下来将重点介绍如何进行ETL转换。 #### 数据转换与写入 轻易云数据集成平台提供了丰富的元数据配置功能,可以帮助我们将源数据转换为目标系统所需的格式。以下是一个具体的元数据配置示例,用于将旺店通的数据传入金蝶其他出库单: ```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": "_function case when '{stockout_reason}' ='盘亏出库单' then 'QTCKD06_SYS' when '{stockout_reason}' ='报废出库(无赔款)' then 'QTCKD12_SYS' when '{stockout_reason}' ='报废出库(有赔款)' then 'QTCKD13_SYS' when '{stockout_reason}' ='2C耗材出库' then 'QTCKD14_SYS' when '{stockout_reason}' ='2B耗材出库' then 'QTCKD15_SYS' else 'QTCKD01_SYS' end" }, { ... } ], ... } ``` #### 解析元数据配置 1. **API与方法**: - `api`: 指定调用的金蝶云星空API接口,这里使用的是`batchSave`。 - `method`: 指定HTTP请求方法,这里使用`POST`。 2. **字段映射与转换**: - `FBillNo`: 映射到源系统中的订单编号`{order_no}`。 - `FBillTypeID`: 根据不同的`{stockout_reason}`值,通过条件判断选择对应的单据类型。 ```json "_function case when '{stockout_reason}' ='盘亏出库单' then 'QTCKD06_SYS' when '{stockout_reason}' ='报废出库(无赔款)' then 'QTCKD12_SYS' when '{stockout_reason}' ='报废出库(有赔款)' then 'QTCKD13_SYS' when '{stockout_reason}' ='2C耗材出库' then 'QTCKD14_SYS' when '{stockout_reason}' ='2B耗材出库' then 'QTCKD15_SYS' else 'QTCKD01_SYS' end" ``` - `FPickOrgId`, `FStockOrgId`, `FOwnerIdHead`, 等字段均通过`ConvertObjectParser`进行基础资料编码转换。 3. **明细信息**: - `FEntity`: 包含多个子字段,如`FMaterialId`, `FQty`, `FStockId`等,分别对应物料编码、实发数量、发货仓库等信息。 ```json { ... { "field": "FMaterialId", ... "value": "{{details_list.spec_no}}" }, { ... } } ``` 4. **其他请求参数**: - `FormId`: 指定业务对象表单ID,这里为`STK_MisDelivery`。 - `IsAutoSubmitAndAudit`: 设置为`true`,表示自动提交并审核。 - `IsVerifyBaseDataField`: 设置为`true`,表示验证所有基础资料有效性。 #### 数据写入 完成上述配置后,我们可以通过轻易云的数据集成平台,将处理后的数据发送到金蝶云星空API接口,实现最终的数据写入操作。通过这种方式,不同系统间的数据可以实现无缝对接,大大提升了业务处理效率和透明度。 以上就是一个完整的ETL转换与写入金蝶云星空API接口的技术案例,希望能为您的系统集成工作提供参考和帮助。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)