使用ETL技术将金蝶数据转换并写入聚水潭系统的方法

  • 轻易云集成顾问-彭亮
### 案例分享:金蝶云星空与聚水潭的数据集成 在本文中,我们将详解如何通过数据集成平台,实现金蝶云星空中的直接调拨单数据无缝对接到聚水潭的其他出库单。此方案利用了executeBillQueryAPI从金蝶云星空定时可靠地抓取接口数据,并通过/open/jushuitan/otherinout/uploadAPI批量写入到聚水潭系统中,从而确保数据不漏单且高效处理。 在实际实施过程中,面对庞大的业务数据需求,无缝、快速、高质量的数据同步至关重要。而这一切,都依赖于我们强大的高吞吐量数据写入能力和自定义转换逻辑以适应特定的业务需求与结构。在整个生命周期管理过程中,配合集中监控和告警系统,可以实时跟踪并优化各项任务状态和性能表现。 首先,通过executeBillQueryAPI获取金蝶云星空中的分批次分页处理,避免限流问题。同时,为解决两套系统之间的数据格式差异,我们采用了灵活的自定义映射策略,将源端的数据转换为目标端可识别的结构形式。在上传过程中,特别关注了错误重试机制,以确保任何因网络波动或接口响应异常导致的数据遗漏能够被及时、准确地重新发送。 此外,通过实时监控技术实现全面日志记录,使得每一步操作都透明化,可追溯。这不仅提升了业务透明度,也极大增强了错误排查与后期维护效率。以上种种技术要点,共同保障了此次跨系统对接顺利、有序进行。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统接口是关键的第一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,获取并加工调拨单数据。 #### 接口配置与请求参数 根据元数据配置,我们需要向金蝶云星空发送一个POST请求来调用`executeBillQuery`接口。以下是请求参数的详细配置: - **api**: `executeBillQuery` - **method**: `POST` - **effect**: `QUERY` - **number**: `FBillNo` - **id**: `FBillEntry_FEntryID` - **idCheck**: `true` 请求参数主要包括以下几个部分: 1. **业务对象表单Id** - `FormId`: 必须填写金蝶的表单ID,例如:`STK_TransferDirect`。 2. **过滤条件** - `FilterString`: 用于筛选符合条件的数据。例如:`FDocumentStatus='C' and FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'`。 3. **分页参数** - `Limit`: 最大行数,设置为500。 - `StartRow`: 开始行索引。 - `TopRowCount`: 返回总行数。 4. **字段集合** - `FieldKeys`: 需查询的字段key集合,格式为数组,例如:`[FBillEntry_FEntryID, FBillNo, FDocumentStatus]`。 #### 请求示例 以下是一个完整的请求示例: ```json { "FormId": "STK_TransferDirect", "FilterString": "FDocumentStatus='C' and FApproveDate>='2023-01-01'", "FieldKeys": [ "FBillEntry_FEntryID", "FID", "FBillNo", "FDocumentStatus", "FStockOrgId.FNumber", "FDate", "FBillTypeID.FNumber", "FTransferBizType", "FStockOutOrgId.FNumber", "FTransferDirect" ], "Limit": 500, "StartRow": 0, "TopRowCount": true } ``` #### 数据清洗与转换 在获取到原始数据后,需要对数据进行清洗和转换,以便后续处理和写入目标系统。以下是一些常见的数据清洗与转换操作: 1. **字段映射与重命名** 将金蝶云星空返回的数据字段映射到目标系统所需的字段。例如,将`FBillNo`映射为目标系统中的订单编号。 2. **数据类型转换** 确保所有字段的数据类型符合目标系统的要求。例如,将日期字符串转换为标准日期格式。 3. **过滤无效数据** 去除不符合业务逻辑的数据,例如状态不为“已审核”的记录。 4. **合并与拆分** 根据业务需求,对某些字段进行合并或拆分。例如,将调拨方向和调拨类型合并为一个字段。 #### 数据处理示例 假设我们从金蝶云星空获取到以下原始数据: ```json [ { "FBillEntry_FEntryID": "1001", "FID": "2001", "FBillNo": "DB20230101", "FDocumentStatus": "C", ... }, ... ] ``` 我们可以进行如下处理: 1. 映射与重命名: ```json { "entry_id": "1001", "bill_id": "2001", "order_no": "DB20230101", ... } ``` 2. 类型转换: ```json { ... "date": new Date("2023-01-01"), ... } ``` 3. 过滤无效数据: ```json if (data.FDocumentStatus !== 'C') { return null; } ``` 4. 合并与拆分: ```json { ... "transfer_info": data.FTransferDirect + "-" + data.FTransferBizType, ... } ``` #### 实时监控与错误处理 在整个数据集成过程中,实时监控和错误处理至关重要。轻易云平台提供了全透明可视化的操作界面,可以实时监控每个环节的数据流动和处理状态。一旦出现错误,可以快速定位并解决问题,确保数据集成过程顺利进行。 通过以上步骤,我们成功实现了从金蝶云星空获取调拨单数据,并进行了必要的清洗和转换,为后续的数据写入和处理打下了坚实基础。这不仅提升了业务透明度和效率,也确保了数据的一致性和准确性。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入聚水潭API接口 在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将详细探讨如何利用轻易云数据集成平台,将源平台金蝶的直接调拨单数据转换为聚水潭API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 首先,我们需要从金蝶系统中提取直接调拨单的数据。假设我们已经完成了数据请求与清洗阶段,接下来我们将重点放在数据转换与写入阶段。 #### 数据转换与写入 在这一阶段,我们将使用轻易云提供的元数据配置,将金蝶的直接调拨单数据转换为聚水潭API接口所需的格式。以下是具体的元数据配置: ```json { "api": "/open/jushuitan/otherinout/upload", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "is_confirm", "label": "是否确认单据", "type": "string", "value": "_function IF('{F_POKM_JSTSTOCKNUMBER}' = 10816570 , 1 , 0 )" }, { "field": "excute_confirming", "label": "是否审核单据", "type": "string", "value": "true" }, { "field": "wms_co_id", "label": "仓库编号", "type": "int", "value": "{F_POKM_JSTSTOCKNUMBER}" }, { "field": "type", "label": "出入库类型", "type": "string", "value": "out" }, { "field": "external_id", "label": "外部单号", "type": "string", "value": "'C{FBillNo}{F_POKM_JSTSTOCKNUMBER}{F_POKM_JSTSTOCKNUMBER2}'" }, { ... ``` 通过上述配置,我们可以看到几个关键字段及其对应的转换逻辑: 1. **is_confirm**:使用条件判断函数 `_function IF`,根据 `F_POKM_JSTSTOCKNUMBER` 字段值确定是否确认单据。 2. **excute_confirming**:固定值为 `true`,表示审核单据。 3. **wms_co_id**:仓库编号直接映射自 `F_POKM_JSTSTOCKNUMBER`。 4. **type**:固定值为 `out`,表示出库类型。 5. **external_id**:组合多个字段生成外部单号。 #### 子项处理 在处理子项时,我们需要特别注意数组类型字段 `items` 的配置: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... } ] } ] } ] } ] } ] } ] } ] } ``` 每个子项包含两个字段: - **sku_id**:商品编码,映射自 `list.FMaterialId_FNumber`。 - **qty**:入库数量,映射自 `list.FQty`。 #### 操作方法 最后,通过 `operation` 配置,我们定义了如何合并多个字段生成请求体: ```json { ... } ``` - **method**:合并方式为 `merge`。 - **field**:合并的字段包括 `FBillNo`, `F_POKM_JSTSTOCKNUMBER`, 和 `F_POKM_JSTSTOCKNUMBER2`。 - **bodyName**:请求体名称为 `list`。 - **header** 和 **body** 定义了请求头和请求体中包含的字段。 通过上述配置,我们可以确保将金蝶系统中的直接调拨单数据准确地转换为聚水潭API接口所需的格式,并成功写入目标平台。这一过程不仅提高了数据处理效率,还保证了数据的一致性和准确性。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)