ETL转换与KIS私有云API数据写入实战案例

  • 轻易云集成顾问-吴伟
### 案例分享:聚水潭数据集成到KIS私有云 在现代企业的信息化管理中,跨系统的数据对接是实现业务流程自动化和数据共享的关键环节。本案例分享一个具体的实施方案——将聚水潭的数据高效、准确地集成到KIS私有云中,实现库存数据的无缝对接。 在本次项目中,我们采用了“聚水潭-调入——>KIS-其他入库Done”方案,通过定时抓取聚水潭接口提供的库存分配记录,并批量写入至KIS私有云。整个过程不仅要求处理大量的数据,还需确保数据格式的一致性及异常情况的有效处理。 首先,我们使用了聚水潭提供的API `/open/allocate/query` 来获取每日最新生成和更新的调拨单。为了保证不漏单,每次调用该接口时我们都记录并存储上一次成功获取的位置,从而保证下次可以从这个位置继续查找。同时,为防止API限流的问题,我们采取分页查询并设置合理延迟,提高稳定性。 其次,在向KIS私有云写入调拨单信息时,我们通过其提供的API `/koas/app007104/api/miscellaneousreceipt/create` 批量导入数据。为提高导入效率,避免因网络波动或请求失败导致的数据丢失,加入了自动重试机制与错误日志记录。当某条记录导入失败后,会立即触发重试策略,并实时监控和记录每一步操作状态,以便后续追踪与问题定位。 这套方案不仅强调技术细节,也注重实际操作中的可靠性,通过轻易云平台全生命周期管理,将复杂多变的数据集成任务简化为可视、易于维护且高效运行的一体化流程。在下面部分内容中,将详细介绍如何配置元数据及各环节具体技术实现方法。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口/open/allocate/query获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭接口`/open/allocate/query`,获取并加工数据。 #### 接口配置与调用 首先,我们需要了解如何配置和调用聚水潭的接口。根据提供的元数据配置,以下是具体的配置细节: - **API路径**: `/open/allocate/query` - **请求方法**: `POST` - **主要字段**: - `io_id`: 数据唯一标识符 - `name`: 数据名称 - **请求参数**: - `modified_begin`: 修改起始时间,使用模板变量`{{LAST_SYNC_TIME|datetime}}` - `modified_end`: 修改结束时间,使用模板变量`{{CURRENT_TIME|datetime}}` - `page_index`: 页码,默认值为1 - `page_size`: 每页条数,默认值为30,最大值为50 - `type`: 调拨类型,固定值为“调拨入” #### 请求参数详解 在请求参数部分,我们需要特别注意时间参数的处理。`modified_begin`和`modified_end`分别代表了数据同步的起始和结束时间,这两个参数通常会使用动态变量来确保每次请求的数据都是最新的。 ```json { "modified_begin": "{{LAST_SYNC_TIME|datetime}}", "modified_end": "{{CURRENT_TIME|datetime}}", "page_index": "1", "page_size": "30", "type": "调拨入" } ``` 上述JSON对象展示了一个典型的请求体,其中时间参数通过模板变量动态生成。 #### 条件过滤 在实际应用中,我们可能需要对返回的数据进行过滤。根据元数据配置中的条件部分,可以看到我们需要对字段`wms_co_id`进行过滤: ```json "condition":[[{"field":"wms_co_id","logic":"in","value":"14132797,14133381"}]] ``` 这意味着我们只关心特定仓库ID的数据,这样可以有效减少不必要的数据传输,提高效率。 #### 自动填充响应 元数据配置中的`autoFillResponse`字段设置为`true`,这表示平台会自动处理响应数据并填充到相应的数据结构中。这一步骤极大简化了开发者的工作,使得我们可以专注于业务逻辑而非繁琐的数据处理。 #### 数据清洗与转换 获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统。在这个过程中,我们可能会进行以下操作: 1. **字段映射**: 将源系统中的字段映射到目标系统中的对应字段。 2. **数据格式转换**: 根据目标系统要求,对日期、数值等字段进行格式转换。 3. **异常处理**: 对缺失或异常数据进行处理,如填充默认值或丢弃无效记录。 例如,对于一个典型的调拨记录,我们可能需要将其转换为目标系统所需的格式: ```json { "id": "io_id", "name": "name", "date_modified": "modified_time", // 其他字段映射 } ``` #### 实时监控与日志记录 为了确保数据集成过程的透明性和可追溯性,实时监控和日志记录是必不可少的。通过轻易云平台提供的监控功能,我们可以实时查看每个环节的数据流动和处理状态,并在出现问题时快速定位和解决。 #### 总结 通过上述步骤,我们实现了从聚水潭接口获取并加工数据的全过程。这不仅提高了数据集成的效率,也确保了数据的一致性和准确性。在实际项目中,根据具体需求调整配置和处理逻辑,可以进一步优化集成方案。 ![电商OMS与WMS系统接口开发配置](https://pic.qeasy.cloud/S29.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入KIS私有云API接口的技术案例 在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL转换,使其符合目标平台KIS私有云API接口的格式要求,并最终写入目标平台。以下是一个具体的技术案例,展示如何通过轻易云数据集成平台实现这一过程。 #### 配置元数据 元数据配置是ETL转换的重要环节,通过定义API接口、请求方法和数据字段映射等信息,确保数据能够正确地从源系统转换并传输到目标系统。在这个案例中,我们使用以下元数据配置: ```json { "api": "/koas/app007104/api/miscellaneousreceipt/create", "effect": "EXECUTE", "method": "POST", "number": "id", "id": "id", "name": "id", "idCheck": true, "request": [ { "field": "AccountDB", "label": "AccountDB", "type": "string", "value": "001" }, { "field": "Object", "label": "Object", "type": "object", "describe": "", "children": [ { "field": "Head", ... }, { ... } ] } ] } ``` #### 数据请求与清洗 首先,从源系统(如聚水潭)获取原始数据。假设我们已经成功获取了这些数据,并进行了必要的数据清洗和预处理。接下来,我们将这些清洗后的数据按照元数据配置中的字段要求进行映射和转换。 #### 数据转换与写入 根据元数据配置,我们需要将清洗后的数据映射到目标API接口所需的格式。以下是关键字段的映射和转换过程: 1. **单据编号(FBillNo)**: ```json { "field": "FBillNo", "label": "单据编号", "type": "string", ... "value": "{io_id}" } ``` 将源系统中的`io_id`字段值直接赋值给`FBillNo`。 2. **日期(Fdate)**: ```json { ... "_function REPLACE ('{{io_date|datetime}}',' ','T')" } ``` 使用函数替换日期格式,将`io_date`字段值中的空格替换为'T',符合ISO8601标准。 3. **部门(FDeptID)**: ```json { ... {"value":"16921"} } ``` 固定赋值为`16921`。 4. **仓库(表头)(FDCStockID)**: ```json { ... {"value":"{wms_co_id}-{wh_id}"} } ``` 将源系统中的`wms_co_id`和`wh_id`字段组合后赋值给`FDCStockID`。 5. **责任人(FManagerID)**: ```json { ... {"value":"{wms_co_id}"} } ``` 将源系统中的`wms_co_id`字段值赋值给`FManagerID`。 6. **Entry数组字段**: - **产品代码(FItemID)**: ```json { ... "_mongoQuery 30fa1b2b-6cfc-31c2-90a3-5a497b7812bd findField=content.FItemID where={\"content.F_103\":{\"$eq\":\"{sku_id}\"}}" } ``` 使用MongoDB查询语句,根据SKU ID查找对应的产品代码。 - **实发数量(Fauxqty)**: ```json { ... "{{items.qty}}" } ``` 将每个条目中的数量字段赋值给`Fauxqty`。 7. **其他固定或动态映射字段**按照类似方式进行处理。 #### 执行API请求 完成所有字段的映射和转换后,使用POST方法将处理好的JSON对象发送到KIS私有云API接口: ```http POST /koas/app007104/api/miscellaneousreceipt/create HTTP/1.1 Host: kis.example.com Content-Type: application/json { ... // 转换后的JSON对象内容 } ``` 通过这种方式,我们实现了从源系统到目标系统的数据无缝对接,确保了数据在不同系统间的一致性和准确性。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)