使用轻易云平台实现ETL转换并写入金蝶云星辰V2

  • 轻易云集成顾问-曾平安
### 盘盈V2.0:旺店通·企业奇门至金蝶云星辰V2数据集成案例 在电子商务业务日益增长的背景下,如何高效、精准地实现系统间的数据对接成为众多企业亟待解决的问题。本文将聚焦一个实际运行的系统集成案例——旺店通·企业奇门数据集成到金蝶云星辰V2,项目代号为盘盈V2.0。 #### 如何确保集成旺店通·企业奇门数据不漏单? 为了避免订单数据遗漏,我们首先通过调用`wdt.stockin.order.query` API接口来抓取并实时监控来自旺店通·企业奇门的数据。在这个过程中,分页和限流是必须处理的重要问题。我们使用了一系列优化措施来确保每一页的数据都能准确无误地获取,并且能够在API请求受限时进行合理重试,这样可以有效降低因网络波动或API调用次数限制导致的数据丢失风险。 #### 大量数据快速写入到金蝶云星辰V2 针对从旺店通获取的大量订单数据,我们需要批量、高效地将其写入到金蝶云星辰V2中。这里我们运用了分布式任务调度策略,通过轻易云平台的可视化操作界面,将这些抓取到的数据通过高级自定义映射转换功能批量导入至金蝶云系统。同时,为了保障过程的顺畅与稳定性,每次提交都会执行预检和回滚机制,以应对潜在异常。 #### 定时可靠的抓取与实时监控 设置定时任务以自动化方式周期性调用 `wdt.stockin.order.query` 接口,从而保证最新订单信息能够及时被捕捉。此外,通过平台提供的实时监控和日志记录功能,可以清晰追踪每一次API调用及其返回结果。这不仅提升了操作透明度,还方便排查和处理意外情况,大大提高了工作效率。 以上只是该项目的一部分技术细节,在接下来的文章中,将详细阐述完整方案及更多技术实现细节,包括批量数据处理方法、异常处理与错误重试机制以及不同格式的数据映射技巧等内容,进一步展现灵活且高效的数据集成能力。 ![打通企业微信数据接口](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据 在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取原始数据,并对其进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockin.order.query`来实现这一目标。 #### 接口调用配置 首先,我们需要配置API调用的元数据。以下是一个完整的元数据配置示例: ```json { "api": "wdt.stockin.order.query", "method": "POST", "number": "order_no", "id": "stockin_id", "pagination": { "pageSize": 50 }, "condition": [ [ { "field": "warehouse_no", "logic": "neq", "value": "WH2024052601" } ] ], "idCheck": true, "request": [ { "field": "start_time", "label": "开始时间", "type": "string", "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{LAST_SYNC_TIME|datetime}}" }, { "field": "end_time", "label": "结束时间", "type": "string", "describe": "按最后修改时间增量获取数据,end_time作为结束时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{CURRENT_TIME|datetime}}" }, { "field": "order_type", "label": "源单据类别", "type": "string", "describe":"源单据类别 1采购入库, 2调拨入库, 4盘盈入库, 5生产入库, 6其他入库, 7保修入库, 8纠错入库, 9初始化入库,10预入库,11JIT退货入库,12委外入库", "value":"4" }, { ... ``` #### 请求参数详解 1. **开始时间和结束时间**: - `start_time` 和 `end_time` 用于按最后修改时间增量获取数据,格式为 `yyyy-MM-dd HH:mm:ss`。 - `start_time` 的值为上次同步的时间点(`{{LAST_SYNC_TIME|datetime}}`),而 `end_time` 的值为当前时间(`{{CURRENT_TIME|datetime}}`)。 2. **源单据类别**: - `order_type` 指定了我们要查询的单据类别,此处设置为 `4` 表示盘盈入库。 3. **状态过滤**: - `status` 设置为 `80` 表示只查询已完成的单据。 4. **仓库编号排除条件**: - 在条件部分,我们添加了一个逻辑条件,排除了仓库编号为 `WH2024052601` 的记录。 5. **分页参数**: - `page_size` 和 `page_no` 用于控制分页,每页返回的数据条数设置为50。 #### 数据请求与清洗 在配置好元数据后,我们可以发起API请求并对返回的数据进行清洗。清洗过程包括但不限于以下步骤: 1. **字段映射与转换**: - 将API返回的数据字段映射到目标系统所需的字段。 - 对必要字段进行类型转换,例如将字符串类型的日期转换为日期对象。 2. **过滤无效数据**: - 根据业务规则过滤掉无效或不完整的数据记录。例如,如果某些必填字段为空,则可以将这些记录标记为无效。 3. **合并与去重**: - 如果从多个分页中获取的数据存在重复记录,需要进行去重操作。 - 根据业务需求,可以对不同来源的数据进行合并处理。 #### 实际案例应用 假设我们从API中获取到以下原始数据: ```json { ... } ``` 我们需要将这些原始数据转换为目标系统所需的格式,并确保所有字段都符合目标系统的要求。例如: - 将 `order_no` 转换为目标系统中的订单编号。 - 将 `stockin_id` 映射到目标系统中的唯一标识符。 - 确保所有日期字段都符合目标系统的日期格式要求。 通过上述步骤,我们可以确保从源系统获取的数据经过清洗和转换后,能够无缝对接到目标系统中,为后续的数据处理和分析奠定基础。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/S17.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现ETL转换并写入金蝶云星辰V2API接口 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,并转为目标平台能够接收的格式。本文将详细探讨如何使用轻易云数据集成平台,将源数据转换为金蝶云星辰V2 API接口所需的格式,并最终写入目标平台。 #### 元数据配置解析 我们首先来看一下元数据配置,这是我们进行ETL转换和写入操作的基础。以下是关键的元数据配置项: ```json { "api": "/jdy/v2/scm/inv_check_gail_bill", "effect": "EXECUTE", "method": "POST", "number": "id", "id": "id", "name": "id", "idCheck": true, "request": [ { "field": "bill_date", "label": "单据日期", "type": "string", "value": "{stockin_time}" }, { "field": "remark", "label": "备注", "type": "string", "value": "旺店通盘盈单{order_no}" }, { "field": "operation_key", "label": "操作类型", "type": "string", "value": "audit" }, { "field": "material_entity", ... } ] } ``` #### 数据请求与清洗 在这个阶段,我们需要从源系统获取原始数据,并进行必要的数据清洗和预处理。这些步骤确保了数据的一致性和准确性,为后续的ETL转换打下基础。 #### 数据转换与写入 接下来,我们进入关键的ETL转换阶段。根据元数据配置,我们需要将源平台的数据字段映射到金蝶云星辰V2 API接口所需的字段。 1. **单据日期(bill_date)**: ```json { "field": "bill_date", "label": "单据日期", ... // 转换逻辑 // 将 stockin_time 字段映射为 bill_date } ``` 2. **备注(remark)**: ```json { ... // 转换逻辑 // 将 order_no 字段拼接到 remark 字段中 } ``` 3. **操作类型(operation_key)**: ```json { ... // 固定值 'audit' } ``` 4. **商品分录(material_entity)**: 商品分录是一个复杂的嵌套结构,需要特别注意子字段的映射。 - **商品ID(material_id)**: ```json { ... // 使用 _mongoQuery 查询,根据 goods_no 获取 material_id } ``` - **仓库ID(stock_id)**: ```json { ... // 使用 _findCollection 查询,根据 warehouse_no 获取 stock_id } ``` - **数量(qty)**: ```json { ... // 直接映射 goods_count 为 qty } ``` - **单位ID(unit_id)**: ```json { ... // 使用 _mongoQuery 查询,根据 goods_no 获取 unit_id } ``` #### 实际案例分析 假设我们有一条源数据记录如下: ```json { "_id": "...", "_source_platform_name_":"盘盈V2.0", "_target_platform_name_":"金蝶云星辰V2", "_data_":{ ... // 源平台具体字段和内容略去,假设包含 stockin_time, order_no, details_list 等字段。 } } ``` 通过轻易云的数据集成平台,我们可以按照上述元数据配置进行ETL转换。最终生成的目标平台请求体可能如下: ```json { ... // 转换后的目标平台请求体示例略去,包含 bill_date, remark, operation_key, material_entity 等字段。 } ``` #### 写入目标平台 最后一步是将转换后的数据通过POST方法写入金蝶云星辰V2 API接口。使用轻易云的数据集成平台,可以方便地配置API调用并监控其执行状态,确保每次操作都能成功完成。 通过上述步骤,我们实现了从源平台到目标平台的数据无缝对接,充分利用了轻易云提供的强大功能和灵活性。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T15.png~tplv-syqr462i7n-qeasy.image)