使用轻易云和金蝶KISAPI进行ETL数据转换的技术指南

  • 轻易云集成顾问-叶威宏
### 聚水潭-其他入库单——>金蝶-其他入库单Done:实现聚水潭数据集成到KIS私有云的技术实践 在企业日常运营中,如何高效、准确地将不同系统的数据进行无缝对接,是一项关键技术挑战。本文旨在分享一个具体案例,即如何通过轻易云数据集成平台,将聚水潭的“其他入库单”数据快速、可靠地导入到金蝶KIS私有云中。 #### 数据抓取与接口调用 首先,为了解决定时可靠抓取聚水潭接口数据的问题,我们使用了由轻易云配置好的API `/open/other/inout/query`。这个接口允许我们按照指定时间段查询所有的“其他入库单”,并支持分页和限流控制,确保在大批量数据获取过程中不会因为频次过高而触发目标系统的限流策略。 ```json { "url": "/open/other/inout/query", "method": "POST", "data": { "startTime": "<START_TIME>", "endTime": "<END_TIME>", ... } } ``` #### 数据格式转换与写入 由于聚水潭和KIS私有云两个系统的数据格式存在差异,在完成初步的数据抓取后,需要进行适当的数据映射和转换。这一步骤至关重要,因为任何不一致都可能导致最终写入失败。在此案例中,我们制定了一套定制化的数据映射规则,并利用轻易云的平台提供的实时监控功能来验证每一次处理结果,以保证准确性。 为实现将转换后的数据批量、高效地写入到KIS私有云,我们调用了其提供的API `/koas/app007104/api/miscellaneousreceipt/create`。这样的方法不仅提高了操作效率,还能通过事务机制保障每个步骤都是可追溯且可恢复的。 ```json { "url": "/koas/app007104/api/miscellaneousreceipt/create", "method": "POST", ... } ``` #### 异常处理与重试机制 在复杂的跨系统对接过程中,不可避免会遇到各种异常情况,如网络问题、服务不可用等。因此,实现一个健壮详尽异常处理与错误重试机制显得尤为重要。当出现写入失败时,该方案采用多级别告警及自动重试策略,从而最大程度上确保任务可以最终顺利完成。例如: 1. 捕获HTTP状态码非200响应。 2. 根据返回内容判断具体错误类型(如认证错误、字段校验失败等)。 3. 启动相应重试逻辑或发送告警通知以便人工干预。 上述措施有效降低了操作风险,提高 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D26.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口获取并加工数据的技术案例 在轻易云数据集成平台中,调用源系统聚水潭接口`/open/other/inout/query`是数据集成生命周期的第一步。本文将详细探讨如何通过该接口获取并加工数据,以实现高效的数据集成。 #### 接口概述 聚水潭接口`/open/other/inout/query`主要用于查询其他入库单的相关信息。该接口采用POST方法,支持多种查询参数和条件过滤,能够灵活地获取所需数据。以下是元数据配置中的关键字段及其含义: - **api**: `/open/other/inout/query` - **method**: `POST` - **number**: `io_id` - **id**: `io_id` - **idCheck**: `true` #### 请求参数配置 请求参数配置是调用接口的关键步骤之一。根据元数据配置,我们需要设置以下请求参数: 1. **modified_begin**(修改起始时间):使用上次同步时间作为起始时间。 2. **modified_end**(修改结束时间):使用当前时间作为结束时间。 3. **status**(单据状态):固定值为`Confirmed`。 4. **page_index**(第几页):默认值为`1`。 5. **page_size**(每页多少条):默认值为`30`。 6. **date_type**(抓取时间类型):默认为`0`,表示按修改时间抓取。 7. **types**(类型):固定值为`其它退货`,通过字符串解析器转换为数组。 示例请求参数如下: ```json { "modified_begin": "{{LAST_SYNC_TIME|datetime}}", "modified_end": "{{CURRENT_TIME|datetime}}", "status": "Confirmed", "page_index": "1", "page_size": "30", "date_type": "0", "types": ["其它退货"] } ``` #### 条件过滤 为了进一步精确筛选数据,我们可以使用条件过滤功能。元数据配置中定义了两组条件: 1. 条件备份(condition_bk): - 排除单据ID包含"CHG"的记录。 2. 条件(condition): - 排除单据ID包含"CHG"的记录。 - 仅包含仓库ID在`14132797,14133381`范围内的记录。 示例条件配置如下: ```json { "condition_bk": [ [ {"field": "so_id", "logic": "notlike", "value": "CHG"} ] ], "condition": [ [ {"field": "so_id", "logic": "notlike", "value": "CHG"}, {"field": "wms_co_id", "logic": "in", "value": ["14132797", "14133381"]} ] ] } ``` #### 数据清洗与转换 在获取到原始数据后,需要进行清洗与转换,以确保数据符合目标系统的要求。这一步通常包括以下操作: 1. **字段映射**:将源系统字段映射到目标系统字段。例如,将聚水潭的`io_id`映射到金蝶系统中的相应字段。 2. **数据格式转换**:将日期、数值等字段转换为目标系统所需的格式。 3. **去重与校验**:确保数据唯一性,并进行必要的数据校验。 #### 实践案例 假设我们从聚水潭获取了以下原始数据: ```json [ { "io_id": "12345", "modified_time": "2023-10-01T12:00:00Z", ... }, ... ] ``` 我们需要将其转换为金蝶系统所需的数据格式: ```json [ { "entry_id": "12345", ... }, ... ] ``` 通过轻易云平台提供的数据处理工具,可以方便地实现上述转换过程,并将清洗后的数据写入目标系统。 #### 总结 调用聚水潭接口获取并加工数据是轻易云数据集成平台生命周期中的重要环节。通过合理配置请求参数和条件过滤,并进行必要的数据清洗与转换,可以确保高效、准确地完成数据集成任务。在实际应用中,根据具体业务需求灵活调整配置,将极大提升集成效率和质量。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入KIS私有云API接口 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转化为目标平台KIS私有云API接口所能够接收的格式,最终写入目标平台。以下将详细介绍如何使用轻易云数据集成平台完成这一过程。 #### API接口配置 我们使用的API接口为`/koas/app007104/api/miscellaneousreceipt/create`,该接口采用POST方法,用于创建其他入库单。以下是具体的元数据配置: ```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", "label": "Head", ... }, { ... } ] } ] } ``` #### 数据转换与映射 在ETL过程中,我们需要将源平台的数据字段映射到目标平台所需的数据结构中。以下是一些关键字段的映射和转换逻辑: 1. **单据编号(FBillNo)**: ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "value": "{io_id}" } ``` `io_id`代表源平台中的单据编号,将其直接映射到目标平台的`FBillNo`字段。 2. **日期(Fdate)**: ```json { "field": "Fdate", ... ... ... ... ... ... ... } ``` 使用函数替换空格为'T',以符合ISO8601标准格式。 3. **仓库(表头)(FDCStockID)**: ```json { ... ... ... ... ... ... } ``` 将源平台的仓库ID组合为目标平台所需格式,并进行正向映射。 4. **产品代码(FItemID)**: ```json { ... ... ... } ``` 使用MongoDB查询语句从数据库中获取对应的产品代码。 5. **实发数量(Fauxqty)**: ```json { ... ... } ``` 6. **金额(Famount)**: ```json { ... ... ... ... } ``` 7. **物料单位(FUnitID)**: ```json { ... ... ... ... } ``` #### 数据请求与清洗 在进行数据转换之前,需要先从源系统请求数据,并对其进行清洗和预处理。例如: - 从聚水潭系统获取其他入库单的数据。 - 对获取的数据进行格式化和验证,确保其符合目标系统的要求。 #### 数据写入 完成上述步骤后,将处理好的数据通过POST请求写入到KIS私有云API接口中。以下是一个示例请求体: ```json { “AccountDB”: “001”, “Object”: { “Head”: { “FBillNo”: “12345”, “Fdate”: “2023-10-01T12:00:00”, … }, “Entry”: [ { “FItemID”: 1001, “Fauxqty”: 10, … }, … ] } } ``` 通过轻易云数据集成平台,我们能够高效地完成从聚水潭系统到KIS私有云系统的数据ETL转换,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,还确保了数据的一致性和准确性。 ![金蝶与外部系统打通接口](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)