使用轻易云数据集成平台进行金蝶云星空API接口的ETL转换

  • 轻易云集成顾问-林峰
### 旺店通·企业奇门数据集成到金蝶云星空技术案例分享 在日常业务中,如何高效、稳定地集成不同系统之间的数据是许多企业面临的关键挑战。本文将重点分享如何通过轻易云数据集成平台,实现从旺店通·企业奇门获取入库订单数据,并批量写入到金蝶云星空系统。本次案例实现方案为“旺店通其他入库对接金蝶其他入库”,旨在演示一套完整的端到端数据对接流程。 为了确保这个复杂的数据流动过程得以顺利进行,我们使用了以下技术手段: 1. **调用旺店通·企业奇门接口**:我们通过API `wdt.stockin.order.query` 定时抓取最新的库存订单信息。这一步骤要求处理好接口分页和限流问题,以防止漏单和超负荷请求。 2. **处理数据格式差异**:由于旺店通与金蝶云星空的数据格式存在显著差异,我们利用定制化映射策略,对获取的数据进行预处理和转换,确保其符合目标系统的规范。 3. **快速写入大量数据**:采用金蝶云星空提供的 `batchSave` API 实现批量高速写入操作,大幅提高了大规模订单数据上传效率。 4. **实时监控与日志记录**:整个过程中,通过轻易云平台内置的实时监控功能和详细日志记录机制,可以精确追踪每一个环节,从而迅速定位并解决潜在的问题,提高整体透明度。 此外,为了增强容错能力,我们还设计了一套完善的异常处理与错误重试机制。这不仅保证了各类突发事件下系统依然稳定运行,同时极大降低因网络波动或短暂故障所导致的数据丢失风险。接下来,我将详细介绍具体实施方案及步骤。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/D29.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockin.order.query获取并加工数据 在数据集成生命周期的第一步,我们需要从源系统中获取数据。本文将详细介绍如何通过调用旺店通·企业奇门接口`wdt.stockin.order.query`来获取并加工数据。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。以下是关键的元数据配置项: - **API**: `wdt.stockin.order.query` - **请求方法**: `POST` - **分页大小**: 50条记录每页 - **ID检查**: 启用 #### 请求参数详解 为了确保我们能够准确地获取所需的数据,以下是请求参数的详细配置: 1. **开始时间 (`start_time`)** - 类型: `datetime` - 描述: 按最后修改时间增量获取数据,格式为`yyyy-MM-dd HH:mm:ss` - 值: `{{LAST_SYNC_TIME|datetime}}` 2. **结束时间 (`end_time`)** - 类型: `datetime` - 描述: 按最后修改时间增量获取数据,格式为`yyyy-MM-dd HH:mm:ss` - 值: `{{CURRENT_TIME|datetime}}` 3. **源单据类别 (`order_type`)** - 类型: `string` - 描述: 源单据类别,6表示其他入库 - 值: `6` 4. **入库单状态 (`status`)** - 类型: `string` - 描述: 入库单状态,80表示已完成 - 值: `80` 5. **仓库编号 (`warehouse_no`)** - 类型: `string` - 描述: 代表仓库所有属性的唯一编码,用于仓库区分 6. **上层单据编号 (`src_order_no`)** - 类型: `string` - 描述: 上层单据编号,传该字段可以不传开始时间和结束时间 7. **入库单号 (`stockin_no`)** - 类型: `string` - 描述: 入库单号,传该字段可以不传开始时间和结束时间 8. **分页大小 (`page_size`)** - 类型: `string` - 描述: 每页返回的数据条数,不传本参数默认为40 - 值: `{PAGINATION_PAGE_SIZE}` 9. **页号 (`page_no`)** - 类型: `string` - 描述: 不传值默认从0页开始 - 值: `{PAGINATION_START_PAGE}` #### 数据过滤条件 为了进一步精确地筛选出我们需要的数据,可以设置过滤条件。例如: - **备注包含“盘盈”** ```json "condition": [ [ {"field": "remark", "logic": "like", "value": "盘盈"} ] ] ``` #### 异常处理与补救机制 在实际操作中,可能会遇到各种异常情况,例如网络波动或接口响应超时等。为此,我们需要设置补救机制: - **定时任务(Crontab)**: ```json "omissionRemedy": { "crontab": "2 11 * * *", "takeOverRequest": [ { "id": "start_timeKthE5", "field": "start_time", "label": "开始时间", "type": "datetime", "is_required": false, "describe": "按最后修改时间增量获取数据,start_time作为开始时间,格式:yyyy-MM-dd HH:mm:ss", "value": "{{DAYS_AGO_2|datetime}}" } ] } ``` 此配置表示每天11点2分执行一次补救任务,从两天前的开始时间重新拉取数据。 #### 数据清洗与转换 在成功获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统。常见的数据清洗操作包括: - 去除重复记录 - 格式化日期字段 - 转换数值单位等 例如,将日期字段统一转换为ISO 8601标准格式: ```python from datetime import datetime def format_date(date_str): return datetime.strptime(date_str, "%Y-%m-%d %H:%M:%S").isoformat() # 示例调用 formatted_date = format_date("2023-10-01 12:00:00") print(formatted_date) # 输出:2023-10-01T12:00:00 ``` 通过上述步骤,我们可以高效地从旺店通·企业奇门接口中获取并加工所需的数据,为后续的数据集成过程打下坚实基础。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S10.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行金蝶云星空API接口的ETL转换 在数据集成过程中,将源平台的数据转换为目标平台所需的格式是关键步骤。本文将深入探讨如何使用轻易云数据集成平台将旺店通的其他入库数据转换并写入金蝶云星空API接口。 #### 元数据配置解析 在本案例中,我们需要将旺店通的其他入库单数据通过ETL过程转换为金蝶云星空能够接收的格式,并通过API接口进行写入。以下是具体的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ {"field": "FBillNo", "label": "单据编号", "type": "string", "value": "{stockin_no}"}, {"field": "FBillTypeID", "label": "单据类型", "type": "string", "parser": {"name":"ConvertObjectParser","params":"FNumber"}, "value":"QTRKD01_SYS"}, {"field": "FStockOrgId", "label": "库存组织", "type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"998"}, {"field": "FDate", "label": "日期", "type":"string","value":"{stockin_time}"}, {"field": "FSUPPLIERID", ... ``` #### 数据字段解析与转换 1. **单据编号(FBillNo)**: - 类型:字符串 - 值:`{stockin_no}`,直接从源数据中获取。 2. **单据类型(FBillTypeID)**: - 类型:字符串 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:固定值`QTRKD01_SYS` 3. **库存组织(FStockOrgId)**: - 类型:字符串 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:固定值`998` 4. **日期(FDate)**: - 类型:字符串 - 值:`{stockin_time}`,直接从源数据中获取。 5. **供应商(FSUPPLIERID)**: - 类型:字符串 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:从源数据中获取并转换。 6. **部门(FDEPTID)**: - 类型:字符串 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:固定值`BM000027` 7. **备注(FNOTE)**: - 类型:字符串 - 值:固定值`旺店通其他入库单` 8. **来源系统(F_PRSH_FROM)**: - 类型:字符串 - 值:固定值`旺店通` 9. **交易类型(F_PRSH_Assistant_83g)**: - 类型:字符串 - 转换器:`ConvertObjectParser`,参数为`FNumber` - 值:固定值`02` 10. **仓库(F_PRSH_Base_re5)**: - 类型:字符串 - 查询条件和转换器结合使用,通过MongoDB查询来获取仓库信息。 ```json "_mongoQuery 1cc929c8-7ec5-3f42-ade6-c1f49506d34c findField=content.F_PBLH_KINGDEESTOCK where={\"content.FNumber\":{\"$eq\":\"{warehouse_no}\"},\"content.F_PBLH_MAPPINGTYPE\":{\"$regex\":\"C\"}}" ``` #### 明细信息处理 明细信息字段包括物料编码、零售条形码、收货仓库、生产日期、实收数量和备注。这些字段在配置中的定义如下: ```json "children":[ {"field":"FMATERIALID","label":"物料编码","type":"string", ... ``` 每个明细项都通过相应的解析器和查询条件进行转换。例如: - **物料编码(FMATERIALID)**: ```json {"field":"FMATERIALID","label":"物料编码","type":"string", ... ``` - **生产日期(FPRODUCEDATE)**: ```json {"field":"FPRODUCEDATE","label":"生产日期","type":"date", ... ``` #### API请求构建与执行 根据上述配置,通过轻易云平台将处理好的数据发送到金蝶云星空API接口。以下是请求示例: ```json { ... } ``` 通过POST方法,将构建好的JSON对象发送到指定的API接口,实现数据写入。 #### 总结 本文详细解析了如何使用轻易云数据集成平台将旺店通的数据进行ETL转换,并通过金蝶云星空API接口完成数据写入。核心步骤包括字段解析、转换和请求构建,每一步都需要精确配置和调试,以确保最终的数据准确无误地写入目标系统。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/T22.png~tplv-syqr462i7n-qeasy.image)