从金蝶到轻易云:数据集成与ETL转换的最佳实践

  • 轻易云集成顾问-胡秀丛
### 金蝶供应商查询集成轻易云数据平台案例分享 在企业的业务流程中,各系统之间的数据对接和集成一直是个复杂的技术难题。本文将聚焦于如何将金蝶云星空中的供应商数据有效地集成到轻易云数据平台中,从而实现高效、可靠的数据管理。本次案例的主要任务是调用金蝶云星空的API接口`executeBillQuery`,并通过轻易云集成平台提供的写入接口完成数据存储。 首先,我们需要确保从金蝶云星空获取到的数据能够完整无误地传递到轻易云集成平台。为此,通过定时调度机制,定期抓取并处理来自金蝶系统的数据,这不仅能够保证信息不遗漏,也能实时更新数据状态。此外,利用轻易云强大的高吞吐量写入能力,可以迅速处理和存储大批量数据,提高整体效率。 与此同时,为了应对API分页和限流的问题,需要特别设计相应的逻辑。例如,在调用`executeBillQuery`接口时,我们采用循环分页请求的方法,以确保尽可能多地获得所需数据。同时,对于每一次请求都会进行详细记录,并且设置重试机制以提高容错率。当检测到异常或错误时,可自动触发告警通知相关人员进行人工干预。 在整个过程中,统一视图下的监控与日志功能显得尤为重要,它使开发人员能够全面掌握每一个步骤以及潜在问题所在。这一特性结合自定义转换逻辑,有助于我们针对具体业务需求调整和优化数据流,使得最终进入系统的数据完全符合预期格式与要求。 通过以上技术手段,我们成功搭建起了一条稳固、高效、安全可控的数据通道,不仅解决了传统系统对接中的各类痛点,还提升了全生命周期的数据管理水平。在下一节中,我会进一步详述具体实施方案及代码示例。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D34.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,通过调用金蝶云星空的`executeBillQuery`接口来获取供应商数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据。根据提供的元数据配置,我们可以看到该接口采用POST方法,主要参数包括供应商ID(FSupplierId)、编码(FNumber)、名称(FName)等。 ```json { "api": "executeBillQuery", "method": "POST", "number": "FName", "id": "FSupplierId", "pagination": { "pageSize": 100 }, "request": [ {"field":"FSupplierId","label":"FSupplierId","type":"string","value":"FSupplierId"}, {"field":"FNumber","label":"编码","type":"string","value":"FNumber"}, {"field":"FName","label":"名称","type":"string","value":"FName"}, {"field":"FCreateOrgId_FNumber","label":"创建组织","type":"string","value":"FCreateOrgId.FNumber"}, {"field":"FUseOrgId_FNumber","label":"使用组织","type":"string","value":"FUseOrgId.FNumber"}, {"field":"FDescription","label":"描述","type":"string","value":"FDescription"} // ...其他字段省略 ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "TopRowCount", "label": "返回总行数", "type": "int", "describe": "金蝶的查询分页参数"}, {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FModifyDate='{{LAST_SYNC_TIME|datetime}}'"}, {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "parser": {"name": "ArrayToString", "params": ","}}, {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": 必须填写金蝶的表单ID如:PUR_PurchaseOrder, value: BD_Supplier} ] } ``` #### 请求示例 基于上述配置,我们可以构建一个具体的请求示例: ```json { "FormId": "BD_Supplier", // 查询字段 // 示例:只查询供应商ID、编码和名称 // 实际使用时可以根据需要调整 FieldKeys: ["FSupplierId", FNumber, FName, FCreateOrgId_FNumber, FUseOrgId_FNumber, FDescription].join(","), // 分页参数 Limit: pagination.pageSize, StartRow: startRowIndex, FilterString: `FModifyDate='${lastSyncTime}'` } ``` #### 数据清洗与转换 在获取到原始数据后,下一步是进行数据清洗和转换。我们需要确保数据符合目标系统的要求,这通常包括以下几个步骤: 1. **字段映射**:将源系统字段映射到目标系统字段。例如,将`FSupplierId`映射到目标系统中的`SupplierID`。 2. **数据类型转换**:确保每个字段的数据类型符合目标系统要求。例如,将字符串类型的日期转换为日期类型。 3. **值标准化**:对某些字段进行值标准化处理,例如将国家代码转换为全称。 #### 示例代码 以下是一个简单的数据清洗和转换示例代码: ```javascript const rawData = fetchDataFromKingdee(); // 假设这是从金蝶获取的数据 const cleanedData = rawData.map(item => ({ SupplierID: item.FSupplierId, Code: item.FNumber, Name: item.FName, CreateOrganization: item.FCreateOrgId_FNumber, UseOrganization: item.FUseOrgId_FNumber, Description: item.FDescription, })); function fetchDataFromKingdee() { // 调用 executeBillQuery 接口并返回结果 return [ { FSupplierId: '001', FNumber: 'SUP001', FName: '供应商A', FCreateOrgId_FNumber: 'ORG001', FUseOrgId_FNumber: 'ORG002', FDescription: '主要供应电子元件' }, // ...更多数据 ]; } ``` 通过上述步骤,我们成功地调用了金蝶云星空接口`executeBillQuery`,并对获取的数据进行了初步清洗和转换,为后续的数据写入做好准备。这一过程展示了如何利用轻易云平台实现高效的数据集成。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S21.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换与写入技术案例 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是一个至关重要的环节。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台轻易云集成平台API接口所能够接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在数据请求与清洗阶段,我们从金蝶供应商查询系统中获取原始数据。这些数据可能包含多种格式和结构,需要通过清洗步骤去除冗余信息、修正错误数据,并确保数据的一致性和完整性。 #### 数据转换与写入 一旦完成了数据请求与清洗,接下来就是关键的ETL转换和写入阶段。我们需要将清洗后的数据转化为目标平台所能接受的格式,并通过API接口将其写入到轻易云集成平台。 ##### 配置元数据 根据提供的元数据配置,我们需要使用以下参数进行API调用: ```json { "api": "写入空操作", "method": "POST", "idCheck": true } ``` 这些配置指示我们使用POST方法调用"写入空操作"API,并且需要进行ID检查。下面是具体的实现步骤: ##### 数据转换 1. **定义目标数据结构**:首先,我们需要定义目标平台所需的数据结构。例如,假设目标平台要求的数据格式如下: ```json { "supplierId": "", "supplierName": "", "contactInfo": "" } ``` 2. **映射源数据到目标结构**:从金蝶供应商查询系统获取的数据可能包含多个字段,我们需要将这些字段映射到目标结构。例如: ```json { "供应商编号": "supplierId", "供应商名称": "supplierName", "联系方式": "contactInfo" } ``` 3. **编写转换代码**:编写代码将源数据转换为目标格式。以下是一个简单的Python示例: ```python def transform_data(source_data): transformed_data = [] for item in source_data: transformed_item = { "supplierId": item["供应商编号"], "supplierName": item["供应商名称"], "contactInfo": item["联系方式"] } transformed_data.append(transformed_item) return transformed_data ``` ##### 数据写入 1. **准备API请求**:根据元数据配置,我们需要构建POST请求。以下是一个使用Python requests库的示例: ```python import requests def write_to_target_platform(data): url = 'https://api.qingyiyun.com/emptyOperation' headers = {'Content-Type': 'application/json'} response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print("Data written successfully") else: print(f"Failed to write data: {response.status_code}") ``` 2. **执行ID检查**:在实际操作中,如果`idCheck`为true,我们需要确保每条记录都有唯一标识符(ID)。这可以通过在转换过程中添加额外的逻辑来实现。例如: ```python def validate_and_transform_data(source_data): transformed_data = [] for item in source_data: if not item.get("供应商编号"): continue # Skip records without ID transformed_item = { "supplierId": item["供应商编号"], "supplierName": item["供应商名称"], "contactInfo": item["联系方式"] } transformed_data.append(transformed_item) return transformed_data ``` 3. **调用API接口**:最后,将转换后的数据通过API接口写入目标平台。 ```python source_data = [ {"供应商编号": "123", "供应商名称": "ABC Corp", "联系方式": "+123456789"}, {"供应商编号": "", "供应商名称": "", "联系方式": ""} ] valid_transformed_data = validate_and_transform_data(source_data) if valid_transformed_data: write_to_target_platform(valid_transformed_data) else: print("No valid data to write") ``` 以上步骤展示了如何利用轻易云集成平台的API接口,将经过清洗和转换的数据成功写入目标平台。在实际应用中,还可以根据具体需求进一步优化和扩展这些步骤,以确保高效、可靠的数据集成过程。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T28.png~tplv-syqr462i7n-qeasy.image)