如何使用轻易云平台高效完成ETL并写入金蝶云星空API

  • 轻易云集成顾问-彭萍
### 易仓数据集成到金蝶云星空案例分享:R入库单(组装)-其他入库单20230620 在本次技术案例中,我们将分享如何实现易仓数据高效、无缝地集成到金蝶云星空,以`R入库单(组装)-其他入库单20230620`为具体实例。本方案重点关注解决以下几个核心问题:确保数据不漏单、大量数据批量写入、定时可靠的数据抓取以及对接过程中必要的格式转换。 首先,采用轻易云平台进行系统对接,可以通过其全生命周期管理功能和透明化操作界面,实现完整的监控与日志记录。我们利用getReceiving API从易仓系统获取实时库存信息,并处理分页和限流问题,确保数据不会遗漏。在这个过程中针对防止接口调用频率过高导致的限流情况,将每次请求的数据条数配置在合理范围内,并通过重试机制处理可能出现的网络异常或接口响应失败。 接下来,为了顺利将得到的大量库存数据快速写入到金蝶云星空,我们运用了batchSave API。针对两者之间的数据格式差异,设计了一套定制化的数据映射规则,通过轻易云的平台工具进行复杂字段转换,使得各项商品信息准确传递至目标系统。这一步骤不仅要求高效,也需保持严格的一致性,以避免由于格式不匹配而引起的数据错误。 此外,在整个流程中,还特别设置了定时任务用于自动抓取并集成易仓最新库存信息,从而保证业务侧能实时反映实际库存情况。这种定时任务调度机制也便于业务部门随时掌握当前状态,提高整体运营效率。 最后,应注意的是对接过程中的异常处理能力尤为重要。通过新增错误日志和报警机制,对任何一环节出现的问题都及时记录并回滚重试,确保最终所有有效数据信息成功落地到金蝶云星空之上,实现从源头采集到目标存储全程安全、稳定、高效运行。 以上即是本次技术实施方案开篇部分内容。在后续步骤中,我们将详细展示具体API调用方法及代码实现细节,进一步解析每个步骤背后的技术原理与应对策略。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/D7.png~tplv-syqr462i7n-qeasy.image) ### 调用易仓接口getReceiving获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过调用易仓接口`getReceiving`来获取并加工数据。 #### 接口配置与调用 首先,我们需要了解`getReceiving`接口的基本配置。根据提供的元数据配置,`getReceiving`接口采用POST方法进行调用,并且支持多种查询参数。这些参数包括入库单号、客户参考号、跟踪号等,能够满足不同场景下的数据请求需求。 ```json { "api": "getReceiving", "method": "POST", "number": "receiving_code", "id": "receiving_id", "idCheck": true, "request": [ {"field":"receiving_code","label":"入库单号","type":"string"}, {"field":"reference_no","label":"客户参考号","type":"string"}, {"field":"tracking_number","label":"跟踪号","type":"string"}, {"field":"po_code","label":"采购单号","type":"string"}, {"field":"warehouse_id","label":"仓库Id","type":"string"}, {"field":"receiving_type","label":"类型","type":"string", "value": "13"}, {"field":"receiving_status","label":"入库单状态","type":"string", "value": "7"}, {"field":"productBarcode","label":"产品代码","type":"string"}, {"field":"productBarcode_like","label":"产品代码(模糊)","type":"string"}, {"field":"receiving_add_user","label":"采购员(用户Id)","type":"string"}, {"field":"code_like","label":"单号(入库单、参考号、采购单)","type":"string"}, { "field": "searchDateType", "label": "查询时间类型", "type": "string", "value": "receiving_update_time" }, { "field": "dateFor", "label": "大于等于某个时间类型", "type": "string", "value": "_function DATE_SUB(now(),INTERVAL 5 DAY)" }, { "field": "dateTo", "label": "小于等于某个时间类型", "type": "string", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "pagination", "label": "分页", "type": "object", "children":[ {"field": "page", label: '当前页', type: 'string', value: '_function 1*1'}, {"field": 'pageSize', label: '每页显示条数', type: 'string', value: '_function 50*1'} ] } ] } ``` #### 数据请求与清洗 在实际操作中,我们需要根据业务需求设置具体的请求参数。例如,如果我们需要获取过去五天内所有状态为“收货完成”的入库单,可以配置如下: ```json { ... { field: 'receiving_status', label: '入库单状态', type: 'string', value: '7' }, { field: 'searchDateType', label: '查询时间类型', type: 'string', value: 'receiving_update_time' }, { field: 'dateFor', label: '大于等于某个时间类型', type: 'string', value: '_function DATE_SUB(now(),INTERVAL 5 DAY)' }, { field:'dateTo', label:'小于等于某个时间类型', type:'string', value:'{{CURRENT_TIME|datetime}}' } } ``` 这些参数确保了我们只获取最近五天内更新且状态为“收货完成”的入库单数据。 #### 数据转换与写入 在成功获取数据后,下一步是对数据进行必要的清洗和转换。由于不同系统的数据格式和字段可能存在差异,我们需要对原始数据进行标准化处理。例如,将日期格式统一转换为ISO标准,将数值字段统一转换为浮点型等。 以下是一个简单的数据转换示例: ```python def transform_data(data): for record in data: record['update_time'] = convert_to_iso(record['update_time']) record['quantity'] = float(record['quantity']) return data ``` 经过清洗和转换后的数据可以直接写入目标系统或数据库,以便后续使用。 #### 实时监控与优化 在整个过程中,实时监控是确保数据集成质量的重要手段。通过轻易云平台提供的可视化界面,我们可以实时查看数据流动和处理状态,及时发现并解决潜在问题。此外,根据监控结果不断优化参数设置和处理逻辑,可以进一步提升数据集成效率和准确性。 总结来说,通过合理配置和调用易仓接口`getReceiving`,我们能够高效地获取并加工所需数据,为后续的数据分析和业务决策提供坚实基础。在实际操作中,灵活运用元数据配置和平台提供的工具,可以显著提升工作效率和数据质量。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/S12.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源数据转换并写入金蝶云星空API 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,最终写入目标平台——金蝶云星空API接口。 #### 配置元数据 我们首先需要配置元数据,以便正确地将源数据转换为金蝶云星空API所能接收的格式。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{receiving_code}"}, {"field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"QTRKD06_SYS"}, {"field": "FStockOrgId", "label": "库存组织", "type": "string", "describe":"组织", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"_findCollection find warehouseCode from de1387a4-c479-35db-9bcb-c73858fcb2b1 where warehouseId={warehouse_id}", "mapping":"63688a45a23a2e0fa5271b19", "mappingDirection":"positive"}, {"field":"FStockDirect","label":"库存方向","type":"string","describe":"下拉列表"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{complete_time}"}, {"field":"FSUPPLIERID","label":"供应商","type":"string","describe":"基础资料", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FDEPTID","label":"部门","type":"string","describe":"基础资料", "parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BM000015"}, {"field":"FOwnerTypeIdHead","label":"货主类型","type":"string","describe":"多类别基础资料列表", "value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"货主","type":"","describe":"", "parser":{"name":"","params":""}, "value":"", "mapping":"", "mappingDirection":"", "children":[ {"field":"","label":"","type":"","describe":"", "parent":"", "value":"", "mapping":"", "mappingDirection":"", "children":[ {"field":"","label":"","type":"","describe":"", "parent":"", "value":"", "mapping":"", "mappingDirection":"", "children":[ {"field":"","label":"","type":"","describe":"", "parent":"", "value":"", "mapping":"", "mappingDirection":"", } ]} ]} ]} ], ... } ``` #### 数据转换 在配置好元数据后,我们需要进行具体的数据转换操作。以下是几个关键字段的转换逻辑: 1. **单据编号 (FBillNo)**: - 从源系统中提取 `receiving_code` 字段,并直接映射到 `FBillNo`。 2. **单据类型 (FBillTypeID)**: - 使用 `ConvertObjectParser` 解析器,将固定值 `QTRKD06_SYS` 转换为目标系统所需格式。 3. **库存组织 (FStockOrgId)**: - 使用 `ConvertObjectParser` 解析器,通过仓库ID (`warehouse_id`) 查找对应的仓库编码 (`warehouseCode`) 并映射到 `FStockOrgId`。 4. **日期 (FDate)**: - 将完成时间 (`complete_time`) 映射到 `FDate`。 5. **供应商 (FSUPPLIERID)**: - 使用 `ConvertObjectParser` 解析器,将供应商信息从源系统转换为目标系统所需格式。 6. **部门 (FDEPTID)**: - 固定值 `BM000015` 映射到 `FDEPTID`。 7. **货主类型 (FOwnerTypeIdHead)** 和 **货主 (FOwnerIdHead)**: - 固定值 `BD_OwnerOrg` 映射到 `FOwnerTypeIdHead`。 - 使用仓库ID查找对应的仓库编码,并映射到 `FOwnerIdHead`。 8. **备注 (FNOTE)**: - 将接收描述 (`receiving_description`) 映射到 `FNOTE`。 #### 明细信息处理 对于明细信息字段(如物料编码、实收数量等),需要特别注意其父子关系和解析逻辑: ```json { ... { "field": "FEntity", ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![打通企业微信数据接口](https://pic.qeasy.cloud/T21.png~tplv-syqr462i7n-qeasy.image)