ETL转换:金蝶仓库数据写入简道云的高效操作指南

  • 轻易云集成顾问-吴伟
### 金蝶云星空数据集成到简道云:一个高效的系统对接案例 在实际的企业运作中,如何高效地将不同系统中的数据进行集成和共享,是确保业务流程顺畅的重要课题。本篇技术文章聚焦于金蝶云星空的数据集成至简道云,实现方案名称为“金蝶-仓库--->简道云-仓库”,旨在分享从系统对接配置到最终成功运行的过程。 #### 确保数据无遗漏:调用executeBillQuery接口 首要任务是保证从金蝶云星空提取的数据完整可靠。通过调用其专用API接口`executeBillQuery`,我们可以定时抓取最新的仓库信息。这一过程需要特别注意处理分页和限流问题,以防止大量请求导致的数据丢失或服务超时。例如,通过设定合理的分页参数,可以在每次请求中获取适量数据,从而避免因过多数据一次性传输引发的问题。 ```json { "method": "POST", "url": "https://api.kingdee.com/executeBillQuery", "headers": { "Content-Type": "application/json" }, "body": { // 请求体参数,根据具体需求填写 ... } } ``` #### 快速写入大量数据到简道云 要实现迅速、稳定地向简道云导入大批量数据,我们利用其提供的写入API `/api/v2/app/{app_id}/entry/{entry_id}/data_create`。除了考虑速度和效率外,还需关注两边的数据格式差异,这通常是跨平台集成的一大挑战。在这一步,我们通过制定详细的数据映射规则,将从金蝶提取的信息转化为符合简道云要求的数据结构,再逐步进行批量导入。 ```json { "method": "POST", "url": "/api/v2/app/{app_id}/entry/{entry_id}/data_create", "headers": { // 相应头部信息,如认证token等 ... }, “body”:{ // 数据体内容,根据具体需求填写 ... } } ``` #### 实现异常处理与错误重试机制 为了增强整个流程的稳健性,在实施过程中,我们针对可能发生的数据上传失败、网络连接不稳定等异常情况进行了全面考量并设计了相应措施。如在关键节点设置监控与日志记录,每当操作出现错误,即触发重试机制,保证即便遇到意外状况也能及时解决,不影响整体进程。同时,在识别并排除特定错误后继续执行任务,使得全流程更加智能、高效。 借助上述方法,此次项目不仅成功实现了从 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/D6.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统的API接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取并加工数据。 #### 接口配置与请求参数 首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据提供的元数据配置,以下是该接口的详细信息: - **API名称**: `executeBillQuery` - **请求方法**: `POST` - **主要字段**: - `FStockId`: 仓库ID - `FNumber`: 编码 - `FName`: 名称 - `FGroup`: 分组 - `FUseOrgId.FNumber`: 使用组织编码 此外,还有一些其他请求参数,如分页参数和过滤条件: - **分页参数**: - `Limit`: 最大行数,默认值为2000 - `StartRow`: 开始行索引 - `TopRowCount`: 返回总行数 - **过滤条件**: - `FilterString`: 用于指定查询条件,例如:`FAuditDate>='{{LAST_SYNC_TIME|dateTime}}' and FUseOrgId.FNumber in ('102','109')` #### 请求示例 以下是一个完整的请求示例,用于调用`executeBillQuery`接口: ```json { "FormId": "BD_STOCK", "FieldKeys": "FStockId,FNumber,FName,FGroup,FUseOrgId.FNumber", "FilterString": "FAuditDate>='2023-01-01' and FUseOrgId.FNumber in ('102','109')", "Limit": "2000", "StartRow": "0" } ``` 在这个请求中,我们指定了业务对象表单ID为`BD_STOCK`,查询字段包括仓库ID、编码、名称、分组和使用组织编码,并设置了过滤条件和分页参数。 #### 数据清洗与转换 获取到原始数据后,下一步是对数据进行清洗和转换。轻易云平台提供了强大的数据处理功能,可以根据需求对数据进行各种操作。 1. **字段映射**: 将金蝶云返回的数据字段映射到目标系统所需的字段。例如,将`FStockId`映射为目标系统中的仓库ID。 2. **数据格式转换**: 根据目标系统的要求,对日期、数字等字段进行格式转换。 3. **数据过滤**: 根据业务需求,对不符合条件的数据进行过滤。 以下是一个简单的数据清洗与转换示例: ```json { "sourceField": "FStockId", "targetField": "warehouse_id", "transformation": { "type": "string" } }, { "sourceField": "FNumber", "targetField": "code", "transformation": { "type": "string" } }, { "sourceField": "FName", "targetField": "name", "transformation": { "type": "string" } } ``` 在这个示例中,我们将金蝶云返回的`FStockId`、`FNumber`和`FName`分别映射为目标系统中的仓库ID、编码和名称,并确保它们都是字符串类型。 #### 自动填充响应 轻易云平台支持自动填充响应功能,可以根据预定义的规则自动将处理后的数据写入目标系统。这一步骤可以极大地简化集成过程,提高效率。 例如,我们可以配置如下规则,将处理后的数据自动写入简道云仓库: ```json { "autoFillResponse": true, "targetSystem": { // 简道云相关配置 ... } } ``` 通过以上步骤,我们完成了从调用金蝶云星空接口获取原始数据,到清洗、转换并写入目标系统的整个过程。轻易云平台提供了全生命周期管理和可视化操作界面,使得这一过程更加透明和高效。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S28.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶仓库数据转换并写入简道云API接口 在轻易云数据集成平台的生命周期中,ETL(Extract, Transform, Load)转换是一个至关重要的步骤。本文将深入探讨如何将金蝶仓库的数据转换为简道云API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在开始ETL转换之前,我们需要确保从金蝶系统中获取的数据已经经过清洗和初步处理。这一步骤通常包括数据的去重、校验和基本格式化,以确保后续处理的顺利进行。 #### 数据转换与写入 接下来,我们进入数据转换与写入阶段。此阶段主要涉及将源平台(金蝶)的数据字段映射到目标平台(简道云)的字段,并通过API接口将数据传输过去。 根据提供的元数据配置,我们可以看到以下关键字段及其对应关系: - **金蝶编码** (`FNumber`) -> `_widget_1704939832422` - **金蝶名称** (`FName`) -> `_widget_1705282562636` - **组织编码** (`FUseOrgId`) -> `_widget_1704874462251` - **属性** 固定值 "门店仓" -> `_widget_1682386633966` - **类别** 固定值 "门店类" -> `_widget_1701912134455` 这些字段需要通过POST方法发送到简道云API接口 `/api/v2/app/{app_id}/entry/{entry_id}/data_create`。以下是具体实现步骤: ##### 1. 准备请求参数 首先,我们需要根据元数据配置准备好请求参数。每个字段都需要进行相应的解析和转换。 ```json { "_widget_1704939832422": "FNumber", "_widget_1705282562636": "FName", "_widget_1704874462251": "FUseOrgId", "_widget_1682386633966": "门店仓", "_widget_1701912134455": "门店类" } ``` ##### 2. 配置其他请求参数 除了上述字段外,还有一些其他请求参数需要配置: ```json { "is_start_workflow": "true", "is_start_trigger": "false", "transaction_id": "1", "appId": "642307c010703500087839ac", "entryId": "6455ec27ae6b020008ebdbb8" } ``` ##### 3. 构建HTTP请求 将上述所有参数整合到一个HTTP POST请求中,发送到简道云API接口: ```http POST /api/v2/app/642307c010703500087839ac/entry/6455ec27ae6b020008ebdbb8/data_create HTTP/1.1 Host: api.jiandaoyun.com Content-Type: application/json { "_widget_1704939832422": "{FNumber}", "_widget_1705282562636": "{FName}", "_widget_1704874462251": "{FUseOrgId}", "_widget_1682386633966": "门店仓", "_widget_1701912134455": "门店类", "is_start_workflow": true, "is_start_trigger": false, "transaction_id": 1, "appId": "642307c010703500087839ac", "entryId": "6455ec27ae6b020008ebdbb8" } ``` ##### 4. 执行请求并处理响应 发送构建好的HTTP请求,并处理响应结果。确保响应状态码为200,以确认数据成功写入简道云。 ```python import requests import json url = 'https://api.jiandaoyun.com/api/v2/app/642307c010703500087839ac/entry/6455ec27ae6b020008ebdbb8/data_create' headers = {'Content-Type': 'application/json'} data = { "_widget_1704939832422": FNumber, "_widget_1705282562636": FName, "_widget_1704874462251": FUseOrgId, "_widget_1682386633966": "门店仓", "_widget_1701912134455": "门店类", "is_start_workflow": True, "is_start_trigger": False, "transaction_id": 1, } response = requests.post(url, headers=headers, data=json.dumps(data)) if response.status_code == 200: print("Data successfully written to JiandaoYun") else: print("Failed to write data:", response.text) ``` 通过以上步骤,我们完成了从金蝶系统到简道云的ETL过程,实现了数据的无缝对接。这不仅提高了业务流程的自动化程度,还确保了数据的一致性和准确性。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)