使用轻易云进行ETL转换并写入旺店通API的技术实现

  • 轻易云集成顾问-何语琴
### 金蝶云星空数据集成到旺店通·企业奇门案例分享:拆卸父项出库同步 在本文中,我们将深入探讨如何通过轻易云数据集成平台,实现金蝶云星空与旺店通·企业奇门系统之间的数据无缝对接,具体场景为拆卸父项出库的同步操作。此方案旨在通过高效的接口调用和数据转换逻辑,将金蝶云星空中的相关库存信息准确而快速地传输至旺店通·企业奇门。 首先,通过调用金蝶云星空的executeBillQuery接口,我们可以实时抓取需要处理的库存数据。这一步骤确保我们获取到最新且完整的数据,以防止任何缺失或延迟。 接下来,我们利用轻易云强大的计算引擎对这些原始数据进行清洗和初步处理。例如,针对分页和限流的问题,可以设置合理的数据请求策略,确保每次查询返回的数据量均处于API允许范围内。此外,自定义的数据转换逻辑也十分关键,它使得不同系统间复杂多变的数据结构可以被正确映射和识别,从而避免因格式不兼容导致的错误。 一旦完成数据整理与转换,即可使用wdt.stockout.order.push接口,将最终处理后的库存信息批量写入至旺店通·企业奇门。这里要特别注意的是,每条记录都需精确匹配其目标字段及业务意义,这要求我们详细了解两个系统之间字段对应关系并设计相应映射规则。同时,为保障整体流程稳定运行,在发生异常时设置了完善的重试机制以及告警通知,以便及时排除故障、恢复服务。 整个过程包括从源头API调用到目的端API写入,再经过中间各环节如分页处理、限流控制、格式转化等均可通过轻易云集中监控台实时跟踪,大幅提升了任务执行透明度与可靠性。这一切环环相扣组成一个有效率且可靠性极高完整解决方案。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 配置元数据 首先,我们需要配置元数据以便正确调用金蝶云星空的API接口。以下是一个典型的元数据配置示例: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgId_FNumber","label":"库存组织","type":"string","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"}, {"field":"FOwnerTypeIdHead","label":"成品货主类型","type":"string","value":"FOwnerTypeIdHead"}, {"field":"FOwnerIdHead_FNumber","label":"成品货主","type":"string","value":"FOwnerIdHead.FNumber"}, {"field":"FAffairType","label":"事务类型","type":"string","value":"FAffairType"}, {"field":"FEE","label":"费用","type":"string","value":"FEE"}, {"field":"FDeptID_FNumber","label":"部门","type":"string","value":"FDeptID.FNumber"}, {"field":"FNote","label":"备注","type":"string","value":"FNote"}, {"field":...} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field":...} ] } ``` #### 调用API接口 在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空`executeBillQuery`接口的调用。以下是一个具体的请求示例: ```json { "FormId": "STK_AssembledApp", "FieldKeys": [ "FID", "FBillNo", ... ], "FilterString": "'FAffairType' = 'Dassembly' AND 'FStockOrgId.FNumber' = '102'", ... } ``` #### 数据清洗与转换 获取到原始数据后,需要进行清洗和转换。这一步骤包括但不限于以下操作: 1. **字段映射**:将金蝶云返回的数据字段映射到目标系统所需的字段。 2. **数据格式转换**:将日期、数值等字段转换为目标系统所需的格式。 3. **过滤无效数据**:根据业务规则过滤掉不需要的数据。 例如,将金蝶云返回的日期格式从`YYYY-MM-DD`转换为目标系统所需的`MM/DD/YYYY`格式: ```python from datetime import datetime def convert_date_format(date_str): date_obj = datetime.strptime(date_str, '%Y-%m-%d') return date_obj.strftime('%m/%d/%Y') ``` #### 数据写入 最后,将清洗和转换后的数据写入目标系统。此步骤通常涉及调用目标系统的API接口,并确保数据的一致性和完整性。 ```json { ... } ``` 通过上述步骤,我们实现了从金蝶云星空获取、清洗、转换并写入目标系统的数据集成过程。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S27.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入旺店通·企业奇门API接口 在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台旺店通·企业奇门API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中的技术细节和实现方法。 #### 数据请求与清洗 在数据集成过程中,首先需要从源系统中提取数据并进行清洗。假设我们已经完成了这一阶段,接下来我们重点关注如何将清洗后的数据转换为旺店通·企业奇门API接口所需的格式,并通过API接口将数据写入目标平台。 #### 元数据配置解析 根据提供的元数据配置,我们需要将源系统的数据字段映射到旺店通·企业奇门API接口所要求的字段。以下是具体的元数据配置: ```json { "api": "wdt.stockout.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "outer_no", "label": "外部单号", "type": "string", "value": "{FBillNo}" }, { "field": "warehouse_no", "label": "仓库编号", "type": "string", "value": "{FStockID_FNumber}" }, { "field": "remark", "label": "备注", "type": "string", "value": "拆卸父项出库" }, { "field": "is_check", "label": "是否审核", "type": "string", "value": "1" }, { "field": "detail_list", "label": "货品列表节点", "type": ":array", ":value":"{FEntity}", ":children":[ { ":field":"spec_no", ":label":"商家编码", ":type":"string", ":value":"{FMaterialID_FNumber}" }, { ":field":"num", ":label":"出库数量", ":type":"string", ":value":"{FQty}" }, { ":field":"price", ":label":"价格", ":type":"string", ":value":"1" } ] } ], otherRequest:[ { field:"stockout_info", label:"stockout_info", type:"string", describe:"111", value:"1" } ] } ``` #### 数据转换与写入 1. **外部单号(outer_no)**: - 源字段:`{FBillNo}` - 转换后:直接映射为目标字段`outer_no` 2. **仓库编号(warehouse_no)**: - 源字段:`{FStockID_FNumber}` - 转换后:直接映射为目标字段`warehouse_no` 3. **备注(remark)**: - 固定值:“拆卸父项出库” - 转换后:直接赋值为目标字段`remark` 4. **是否审核(is_check)**: - 固定值:“1” - 转换后:直接赋值为目标字段`is_check` 5. **货品列表节点(detail_list)**: - 源字段:`{FEntity}` - 子节点: - 商家编码(spec_no):`{FMaterialID_FNumber}` - 出库数量(num):`{FQty}` - 价格(price):固定值“1” 6. **其他请求参数(otherRequest)**: - 固定值:“1” - 转换后:直接赋值为目标字段`stockout_info` #### 实现步骤 1. **提取源数据**: 从源系统中提取包含上述字段的数据。 2. **映射与转换**: 使用轻易云数据集成平台提供的可视化界面,将源系统中的字段映射到目标系统所需的字段。例如,将`{FBillNo}`映射到`outer_no`,并设置固定值如“拆卸父项出库”到`remark`。 3. **构建请求体**: 根据元数据配置构建POST请求体。例如: ```json { “outer_no”: “20231001”, “warehouse_no”: “WH001”, “remark”: “拆卸父项出库”, “is_check”: “1”, “detail_list”: [ { “spec_no”: “SP001”, “num”: “10”, “price”: “1” }, ... ], “stockout_info”: “1” } ``` 4. **发送请求**: 使用HTTP POST方法将构建好的请求体发送至旺店通·企业奇门API接口。 5. **处理响应**: 接收并处理API响应,确保数据成功写入目标平台。如果出现错误,根据返回的信息进行相应处理和调整。 通过以上步骤,我们实现了从源系统到旺店通·企业奇门API接口的数据ETL转换和写入过程。这一过程不仅确保了数据格式的正确性,还提高了业务流程的自动化程度和效率。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)