ETL转换:将数据写入旺店通企业奇门API接口

  • 轻易云集成顾问-钟家寿
### 金蝶云星空与旺店通·企业奇门数据集成案例:组装子项出库同步 在现代电商环境中,系统间的数据流转无疑是提升运营效率的关键所在。本次技术分享将聚焦于"组装子项出库同步到旺店通"这一实际应用场景,通过具体的API接口调用和数据处理方法,来展示如何高效、可靠地实现金蝶云星空与旺店通·企业奇门之间的数据集成。 #### API接口调用及其实现细节 为了确保从金蝶云星空获取到准确且实时的出库数据信息,我们选择使用`executeBillQuery` API来执行定时抓取操作。该接口能够精确查询指定时间段内生成或变更的订单信息,有效避免了漏单问题。同时,为处理大量数据请求过程中可能出现的分页和限流问题,我们引入了一系列优化措施,包括分批次抓取与合理设置请求频率,以降低系统负载并提高响应速度。 ```json { "method": "kingdee.executeBillQuery", "params": { "billType": "STK_MISC_OUT", "dateRange": { "fromDate": "<start_time>", "toDate": "<end_time>" }, // Other necessary parameters } } ``` #### 数据格式转换及写入过程 由于金蝶云星空与旺店通·企业奇门在数据结构上存在差异,在实际对接过程中需要进行有效的数据映射与转换。通过设定自定义规则,将不同字段有机结合,实现了两端系统之间数据的一致性。在完成必要的数据转换后,再通过调用`wdt.stockout.order.push` API,将整理好的订单信息推送到旺店通平台,实现最终的数据写入。 ```json { "method": "wdt.stockout.order.push", "params": { // Mapped and formatted data fields from Kingdee Cloud Galaxy to Wangdian Tong Enterprise Qimen format. } } ``` #### 异常处理及重试机制实施方案 考虑到网络波动以及其他不可控因素可能导致API请求失败,本方案特别设计了异常处理逻辑。例如,当一次API调用未能成功时,会启动错误重试机制,并记录相关日志以便后续排查。这一策略不仅提高了整体流程的鲁棒性,也为维护人员提供了详尽的信息支持。 综上所述,通过合理配置API参数、精准数据映射、高效抓取机制,以及健全的异常处理体系,我们如期实现了金蝶云星空至旺店通·企业奇门的数据集成目标,并显著提升业务运作效率。未来章节将详细探讨每一个步骤中的具体实现技术 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据,并进行初步的清洗和加工。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来实现这一过程。 #### 接口调用配置 为了成功调用`executeBillQuery`接口,我们需要配置一系列参数。这些参数包括请求方法、分页设置、字段映射等。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FSubEntity_FDetailID", "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":"","value":""}, {"field":"","label":"","type":"","value":""} ], "otherRequest": [ { "field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}" }, { "field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}" }, { "field": "TopRowCount", "label": "", "" ``` #### 数据请求与清洗 在配置好接口参数后,我们可以发起请求以获取数据。以下是一个示例请求体: ```json { "FormId": "STK_AssembledApp", "FieldKeys": [ ... ], ... } ``` 通过这种方式,我们可以从金蝶云星空系统中获取所需的数据。接下来,需要对这些数据进行初步清洗和加工。 1. **过滤条件**:我们可以通过设置`FilterString`来指定过滤条件。例如,过滤掉不符合业务需求的数据: ```json { ... "FilterString": "'FSupplierId.FNumber = 'VEN00010' and FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FAFFAIRTYPE = 'Assembly' and FStockOrgId.FNumber='102'" } ``` 2. **字段映射**:根据业务需求,将源系统中的字段映射到目标系统中。例如,将`FBillNo`映射为订单编号,将`FDate`映射为订单日期等。 #### 数据转换与写入 在完成数据清洗后,需要将其转换为目标系统可识别的格式,并写入目标系统。这一步通常涉及到更多的业务逻辑处理,例如单位转换、金额计算等。 ```json { ... } ``` 通过以上步骤,我们可以实现从金蝶云星空系统中获取数据,并进行初步清洗和加工,为后续的数据转换与写入做好准备。 #### 总结 本文详细介绍了如何使用轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来获取并加工数据。通过合理配置接口参数、设置过滤条件和字段映射,可以高效地完成数据请求与清洗,为后续的数据处理打下坚实基础。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/S3.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换:将源数据写入旺店通·企业奇门API接口 在使用轻易云数据集成平台进行数据集成的过程中,ETL(Extract, Transform, Load)转换是一个至关重要的步骤。本文将详细探讨如何将已经集成的源平台数据通过ETL转换,最终写入目标平台——旺店通·企业奇门API接口。 #### 元数据配置解析 在进行ETL转换之前,我们需要理解元数据配置。以下是本次集成任务的元数据配置: ```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": "{FStockIDSETY_FNumber}" }, { "field": "remark", "label": "备注", "type": "string", "value": "组装子项出库" }, { "field": "is_check", "label": "是否审核", "type": "string", "value": "1" }, { "field": "detail_list", ... ``` #### 数据请求与清洗 首先,我们需要从源系统请求并清洗数据。假设我们从ERP系统中获取了以下原始数据: ```json { FBillNo: 'SO123456', FStockIDSETY_FNumber: 'WH001', details_list: [ { FMaterialIDSETY_FNumber: 'P001', FQtySETY: '10' }, { FMaterialIDSETY_FNumber: 'P002', FQtySETY: '5' } ] } ``` #### 数据转换 接下来,我们需要按照元数据配置对原始数据进行转换,以符合旺店通·企业奇门API接口的要求。 1. **字段映射**:根据元数据配置,将源数据字段映射到目标字段。例如,`FBillNo` 映射到 `outer_no`,`FStockIDSETY_FNumber` 映射到 `warehouse_no`。 2. **固定值设置**:某些字段需要设置固定值,如 `remark` 设置为“组装子项出库”,`is_check` 设置为“1”。 3. **嵌套结构处理**:对于嵌套结构的字段,如 `detail_list`,需要逐一处理其子字段。 通过上述步骤,我们得到如下转换后的数据: ```json { outer_no: 'SO123456', warehouse_no: 'WH001', remark: '组装子项出库', is_check: '1', detail_list: [ { spec_no: 'P001', num: '10', price: '1' }, { spec_no: 'P002', num: '5', price: '1' } ] } ``` #### 数据写入 最后一步是将转换后的数据通过API接口写入目标平台。根据元数据配置中的 `api`, `method`, 和 `request` 字段信息,我们构建HTTP请求: ```javascript const axios = require('axios'); const data = { outer_no: 'SO123456', warehouse_no: 'WH001', remark: '组装子项出库', is_check: '1', detail_list: [ { spec_no: 'P001', num: '10', price: '1' }, { spec_no: 'P002', num: '5', price: '1' } ] }; axios.post('https://api.wangdian.cn/wdt.stockout.order.push', data) .then(response => console.log(response.data)) .catch(error => console.error(error)); ``` 以上代码示例展示了如何使用 `axios` 库发送HTTP POST请求,将转换后的JSON对象写入旺店通·企业奇门API接口。 #### 小结 通过上述步骤,我们成功地将源平台的数据经过ETL转换后写入了目标平台。在这个过程中,关键在于正确理解和应用元数据配置,以确保每个字段都能准确映射和处理。同时,通过全生命周期管理和实时监控,可以有效提升业务透明度和效率。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)