使用轻易云平台进行ETL转换并写入金蝶云星空

  • 轻易云集成顾问-蔡威
### 聚水潭·奇门数据集成到金蝶云星空的技术实战 在一个全渠道电商解决方案中,准确和高效的数据对接是商业成功的重要保障。本文旨在分享如何利用聚水潭·奇门的出库单数据,通过API接口jushuitan.saleout.list.query获取,并将其批量写入到金蝶云星空系统,实现销售出库单无缝对接。 我们采用了轻易云数据集成平台,以直观可视化方式管理整个流程。核心任务包括处理大量数据快速同步、确保无漏单、定时抓取与可靠传输等一系列挑战。在具体实施中,我们聚焦以下几点关键技术: 1. **调用聚水潭·奇门接口**: 调用jushuitan.saleout.list.query API接口来获取所有待整合的销售出库单信息。对于大体量数据,需要特别注意分页和限流问题。这一步骤直接关系到能否准确、高效地采集全部业务数据,不遗漏任何重要信息。 2. **处理不同步的数据格式差异**: 为了使得聚水潭·奇门与金蝶云星空两者之间的数据能够顺利转换,对两边的数据格式进行比对和映射是关键。通过自定义映射规则,可以有效应对复杂多样的字段差异,使得后续操作更加流畅。 3. **批量写入金蝶云星空**: 采用batchSave API接口,针对大批量销售出库单进行统一提交,这不仅提高了效率,也减少了网络交互次数,降低潜在故障风险。此外,需要设计异常处理机制,当某些请求失败时,会自动记录并重试,确保每条记录都完整成功地传输到目标系统中。 4. **实时监控与日志记录**: 实现实时监控整个流程并详细记录所有操作日志,是保证高透明度和及时反馈的重要手段。一旦出现任何异常情况,可以迅速定位问题源头,并采取相应措施加以修正,从而最大程度上保证业务连续性和稳定性。 以上几点构建起了一套严谨全面的跨系统数据集成方案,为实现从聚水潭·奇门至金蝶云星空间销售出库单的可靠转移提供坚实基础。在实际部署过程中,还涉及其他细节,如定制化映射规则、错误重试策略及性能优化等,将会在后续章节中详细探讨。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/D39.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭·奇门接口获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用聚水潭·奇门接口`jushuitan.saleout.list.query`,并对获取的数据进行初步加工处理。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以确保能够正确地调用API并获取所需的数据。以下是`jushuitan.saleout.list.query`接口的元数据配置: ```json { "api": "jushuitan.saleout.list.query", "effect": "QUERY", "method": "POST", "number": "io_id", "id": "io_id", "name": "io_id", "idCheck": true, "request": [ { "field": "page_index", "label": "页数", "type": "string", "describe": "第几页,从第一页开始,默认1", "value": "1" }, { "field": "page_size", "label": "每页行数", "type": "string", "describe": "每页多少条,默认25,最大25", "value": "100" }, { "field": "start_time", "label": "修改开始时间", "type": "string", "describe": "修改起始时间,和结束时间必须同时存在,时间间隔不能超过七天,与线上单号不能同时为空", "value": "{{HOURE_AGO_3|datetime}}" }, { "field": "end_time", "label": "修改结束时间", "type": "string", "describe": "", value: "{{CURRENT_TIME|datetime}}" }, { field: status, label: 单据状态, type: string, describe: 单据状态: WaitConfirm=待出库; Confirmed=已出库; Cancelled=作废, value: Confirmed }, { field: date_type, label: 时间类型, type: int, describe: 时间类型 默认0 0=修改时间 ; 1=制单日期; 2=出库时间, value: 2 } ], autoFillResponse: true } ``` #### 请求参数详解 - `page_index`: 页数,从第一页开始,默认值为1。 - `page_size`: 每页行数,默认25条记录,最大值为25。 - `start_time`: 修改开始时间,需要与结束时间同时存在,且时间间隔不能超过七天。 - `end_time`: 修改结束时间,同样需要与起始时间同时存在。 - `status`: 单据状态,此处我们选择“已出库”状态,即`Confirmed`。 - `date_type`: 时间类型,此处选择出库时间,即值为2。 这些参数确保了我们能够精确地获取到所需的销售出库单数据。 #### 数据请求与清洗 在完成元数据配置后,我们可以通过轻易云平台发起API请求。请求返回的数据通常是一个JSON格式的响应,需要对其进行初步清洗和处理,以便后续的数据转换和写入操作。 ```json { “code”: “200”, “message”: “success”, “data”: [ { “io_id”: “123456”, “order_no”: “SO20231001”, “warehouse_code”: “WH001”, “status”: “Confirmed”, ... }, ... ] } ``` 在这个过程中,我们需要关注以下几点: 1. **数据校验**:确保返回的数据符合预期,例如检查`code`是否为200,以及`message`是否为“success”。 2. **字段映射**:将返回的数据字段映射到目标系统所需的字段。例如,将`io_id`映射为目标系统中的唯一标识符。 3. **异常处理**:处理可能出现的异常情况,例如网络错误、接口超时等。 #### 数据转换与写入准备 在完成数据清洗后,我们需要对数据进行转换,以适应目标系统的要求。这一步通常包括: - **格式转换**:例如将日期格式从字符串转换为目标系统所需的日期对象。 - **字段重命名**:根据目标系统的需求,对字段名称进行调整。 - **数据过滤**:根据业务规则过滤掉不必要的数据。 经过上述步骤处理后的数据即可准备写入到目标系统中。在轻易云平台上,这些操作可以通过可视化界面进行配置和管理,大大简化了复杂的数据集成过程。 通过以上步骤,我们成功地调用了聚水潭·奇门接口,并对获取的数据进行了初步加工,为后续的数据转换和写入奠定了基础。这一过程展示了轻易云平台在实现异构系统间无缝对接方面的强大能力。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星空 在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口。 #### 数据请求与清洗 在数据请求与清洗阶段,我们已经从聚水潭系统中提取了销售出库单的数据,并进行了初步的清洗和预处理。接下来,我们需要将这些数据转换为金蝶云星空API接口所能接收的格式,并通过API接口写入目标系统。 #### 元数据配置解析 我们使用以下元数据配置来完成这一任务: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"XSCKD01_SYS"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"{io_id}"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{io_date}"}, {"field":"FSaleOrgId","label":"销售组织","type":"string","describe":"组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"101"}, {"field":"FCustomerID","label":"客户","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{shop_id}"}, {"field":"FSaleDeptID","label":"销售部门","type":"string","describe":"基础资料","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"10102"}, {"field":"FCorrespondOrgId","label":"对应组织","type":"string","describe":"","parser":{"name":""}}, {"field":"","label":"","type":"","describe":"","parser":{}} ], ... } ``` #### 数据转换与写入 1. **单据类型** (`FBillTypeID`): 使用`ConvertObjectParser`将值`XSCKD01_SYS`转换为金蝶系统所需的格式。 2. **单据编号** (`FBillNo`): 直接使用从源系统提取的`io_id`作为值。 3. **日期** (`FDate`): 使用提取的`io_date`。 4. **销售组织** (`FSaleOrgId`): 固定值`101`,并通过`ConvertObjectParser`进行转换。 5. **客户** (`FCustomerID`): 使用提取的`shop_id`,并通过`ConvertObjectParser`进行转换。 6. **销售部门** (`FSaleDeptID`): 固定值`10102`, 并通过 `ConvertObjectParser`. 接下来是明细信息(`FEntity`)的处理: ```json { "field": "FEntity", "label": "明细信息", "type": "array", "describe": "明细信息", "value": "items", ... } ``` 每个明细项包含多个字段,如物料编码、库存单位、含税单价等。以下是几个关键字段的解析: - **物料编码** (`FMaterialID`):通过 `_findCollection find FNumber from ... where F_CNB_Text={{items.sku_id}}` - **库存单位** (`FUnitID`):通过 `_findCollection find unit from ... where sku_id={{items.sku_id}}` - **是否赠品** (`FIsFree`):通过 `_function CASE '{{items.sale_price}}' WHEN '0.0' THEN true ELSE '{{items.is_gift}}' END` - **仓库** (`FStockID`):使用提取的 `wms_co_id` 最后,将所有处理好的数据通过 `POST /batchSave API接口提交到金蝶云星空系统中。 #### API调用示例 ```python import requests url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} data = { # 根据元数据配置生成的数据 } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print("Data successfully written to Kingdee Cloud.") else: print("Failed to write data:", response.text) ``` 以上代码展示了如何利用Python脚本,通过HTTP POST请求将处理好的数据提交到金蝶云星空API接口。 #### 小结 本文深入探讨了如何利用轻易云数据集成平台,将聚水潭系统中的销售出库单数据进行ETL转换,并最终写入金蝶云星空系统。通过详细解析元数据配置和具体实现步骤,为技术人员提供了一个清晰的操作指南。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)