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

  • 轻易云集成顾问-杨嫦
### 旺店通·旗舰奇门数据集成到金蝶云星空的技术实现 在企业信息系统对接过程中,尤其是涉及多个复杂环节的数据集成任务时,常常会遇到如何确保数据高效、无遗漏地传输和处理的问题。本文将分享如何使用轻易云数据集成平台,实现旺店通·旗舰奇门销售出库单的数据无缝对接到金蝶云星空系统。 此次案例中,我们的主要目标是在保障原始数据完整性的前提下,通过调用旺店通·旗舰奇门的API接口`wdt.wms.stockout.sales.querywithdetail`高效抓取销售出库单,并批量写入到金蝶云星空,同时要处理好分页、限流及异常重试等关键问题。 #### 接口调用与高吞吐量数据写入 为了确保大量销售信息能够快速被存储并进入财务管理流程,我们需要充分利用旺店通·旗舰奇门和金蝶云星空所提供的API资产管理功能。在此过程中: 1. **定时可靠的数据抓取**:首先,需要设定一个定时任务,从旺店通·旗舰奇门接口`wdt.wms.stockout.sales.querywithdetail`中可靠地抓取销售出库单。通过设置合理的时间间隔,可以确保及时获取新生成或更新过的信息。 2. **分页与限流处理**:由于接口返回结果可能会受到数量限制,为避免因大规模请求导致超时或服务不可用情况发生,我们通过分页机制逐步拉取所有必要的数据。此外,还需考虑限流策略,以防止触发接口保护机制而无法正常获取全部数据信息。 3. **高吞吐量批量写入**:在成功从源头获取到了完整且准确的销售信息后,通过轻易平台内置的高吞吐能力,将这些信息批量写入至金蝶云星空对应模块中。调用其提供的数据接收API `batchSave`,依据预先定义好的映射关系进行匹配插入操作,从而提高了整个操作链路上的效率。 #### 数据质量监控与异常处理 为保证整个流程中的稳定性和准确性,不仅需要实时监控每一步骤执行状态,还必须建立一套行之有效的错误检测及修复机制: - **支持自定义转换逻辑**调整两个系统之间不同字段格式以及内容差异,使得最终提交至目标数据库中的信息符合业务需求。 - **全面实时监控**通过集中监控面板,全程追踪各个子任务运行状况,一旦发现问题立即定位并解决。同时,在发生连接失败或意外断开场景下,引入自动重试规则最大程度 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统调用API接口获取数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.wms.stockout.sales.querywithdetail`,并对返回的数据进行处理。 #### 接口调用配置 首先,我们需要配置API接口的调用参数。根据提供的元数据配置,我们可以看到该接口采用POST方法,主要参数包括分页参数和业务参数。 **分页参数**: - `page_size`: 分页大小,默认为50。 - `page_no`: 页号,默认为1。 **业务参数**: - `start_time`: 开始时间,使用动态变量`{{MINUTE_AGO_30|datetime}}`表示30分钟前的时间。 - `end_time`: 结束时间,使用动态变量`{{CURRENT_TIME|datetime}}`表示当前时间。 - `status_type`: 出库单状态,默认值为3,表示按照指定的status状态字段查询。 - `status`: 出库单状态详细,默认值为110。 - 其他可选参数如仓库编码、出库单编号、店铺编号、销售订单号等。 以下是一个示例请求体: ```json { "pager": { "page_size": 50, "page_no": 1 }, "params": { "start_time": "{{MINUTE_AGO_30|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status_type": "3", "status": "110" } } ``` #### 数据请求与清洗 在完成API调用配置后,我们可以通过轻易云平台发起请求并获取返回的数据。接下来是数据清洗环节,这一步骤非常重要,因为它确保了后续数据转换和写入过程的顺利进行。 **示例返回数据结构**: ```json { "data": [ { "stockout_id": "123456", "order_no": "SO20231001", // 更多字段... } ], "total_count": 100, // 更多元信息... } ``` 在清洗过程中,我们需要关注以下几点: 1. **字段映射与转换**:确保返回的数据字段与目标系统所需字段一致。例如,将`stockout_id`映射为目标系统中的唯一标识符。 2. **数据过滤**:根据业务需求过滤不必要的数据。例如,仅保留特定状态的出库单。 3. **异常处理**:处理可能出现的异常情况,如空值、格式错误等。 #### 数据转换与写入准备 在完成数据清洗后,需要将其转换为目标系统所需的格式。这一步通常涉及复杂的逻辑处理,如数据类型转换、字段合并或拆分等。 例如,将返回的数据转换为金蝶系统所需的销售出库单格式: ```json { "salesOrderList": [ { "id": "123456", "orderNumber": "SO20231001", // 更多字段... } ] } ``` #### 实时监控与调试 在整个过程中,通过轻易云平台提供的实时监控功能,可以随时查看数据流动和处理状态。这有助于及时发现和解决问题,提高集成效率和准确性。 #### 小结 通过上述步骤,我们实现了从旺店通·旗舰奇门接口获取销售出库单数据,并对其进行初步加工,为后续的数据转换和写入做好准备。轻易云平台提供了全透明可视化操作界面,使得整个过程更加高效和可靠。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/S13.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成过程中,ETL(Extract, Transform, Load)是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据(如旺店通的销售出库单)进行ETL转换,并最终写入金蝶云星空API接口。 #### 数据转换与写入配置 在轻易云数据集成平台中,元数据配置是实现数据转换和写入的核心。以下是一个典型的元数据配置示例,用于将销售出库单的数据写入金蝶云星空API接口: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "value": "XSCKD01_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } }, { ... } ], ... } ``` #### 核心字段解析 1. **FBillTypeID(单据类型)**: - 类型:字符串 - 描述:单据类型 - 固定值:`XSCKD01_SYS` - 转换器:`ConvertObjectParser`,参数为`FNumber` 2. **FBillNo(单据编号)**: - 类型:字符串 - 描述:单据编号 - 动态值:`{order_no}`,从源数据中提取 3. **FDate(日期)**: - 类型:字符串 - 描述:日期 - 动态值:`{consign_time}`,从源数据中提取 4. **FSaleOrgId(销售组织)**: - 类型:字符串 - 描述:组织 - 动态值:通过SQL查询从关联表中获取,例如 `_findCollection find FSaleOrgId_FNumber from e4421177-aa64-33ce-83ea-22e992b91dd5 where FBillNo={{details_list.src_tid}}` - 转换器:`ConvertObjectParser`,参数为`FNumber` 5. **FCustomerID(客户)**: - 类型:字符串 - 描述:基础资料 - 动态值:`{shop_no}`,从源数据中提取 - 转换器:`ConvertObjectParser`,参数为`FNumber` 6. **FStockOrgId(发货组织)**: - 类型:字符串 - 描述:组织 - 动态值:通过SQL查询从关联表中获取,例如 `_findCollection find FStockOrgId from e4421177-aa64-33ce-83ea-22e992b91dd5 where FBillNo={{details_list.src_tid}}` - 转换器:`ConvertObjectParser`,参数为`FNumber` #### 明细信息处理 对于复杂的明细信息,我们需要处理数组类型的数据,并确保每个子项都正确映射到目标系统: ```json { "field": "FEntity", "label": "明细信息", "type": "array", ... } ``` 每个明细项包括以下字段: 1. **FMaterialID(物料编码)**: - 类型:字符串 - 描述:基础资料 - 动态值:通过模板变量 `{{details_list.goods_no}}` - 转换器:`ConvertObjectParser`,参数为 `FNumber` 2. **FRealQty(实发数量)**: - 类型:字符串 - 描述:数量 - 动态值:通过模板变量 `{{details_list.goods_count}}` 3. **FTaxPrice(含税单价)**: - 类型:字符串 - 动态值:通过模板变量 `{{details_list.sell_price}}` 4. **FStockID(仓库)**: - 类型:字符串 - 描述:基础资料 - 动态值: `{warehouse_no}` - 转换器: `ConvertObjectParser`, 参数为 `FNumber` #### 特殊字段处理 有些字段需要根据特定逻辑进行处理,例如: ```json { ... { "parent":"FEntity", ... {"field":"FIsFree","label":"是否赠品","type":"string","value":"_function case '{{details_list.gift_type}}' when '0' then 'false' else 'true' end"} } } ``` 这里使用了 `_function case ... end` 来判断是否为赠品。 #### 最终请求构建 构建最终请求时,需要将所有字段按照目标API的要求进行组装,并确保所有必要的验证和转换都已完成。轻易云平台提供了丰富的工具和方法来简化这一过程,使得整个ETL流程更加高效和可靠。 以上是使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的详细技术实现过程。通过合理配置元数据,可以确保不同系统间的数据无缝对接,实现业务流程的自动化和高效化。 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/T21.png~tplv-syqr462i7n-qeasy.image)