轻易云平台下金蝶云星空数据写入与ETL转换实战

  • 轻易云集成顾问-杨嫦
### 案例分享:管易云数据集成到金蝶云星空 在系统对接与数据集成的过程中,确保各环节无缝连接、高效处理是一个极具挑战性的任务。本文将介绍如何通过轻易云数据集成平台,将管易云的数据高效、稳定地同步至金蝶云星空。我们以实际运行方案“wk_供应商同步”为例,深入探讨集成过程中的关键技术点。 #### 管易云API接口调用:gy.erp.supplier.get 首先,我们需要从管易云获取供应商数据。这部分通过调用其提供的API接口 `gy.erp.supplier.get` 来实现。在配置过程中,我们重点关注以下几方面: 1. **分页和限流处理** 由于管易云接口对单次返回的数据量有限制,因此我们必须合理设置分页参数,以确保所有数据完整抓取。此外,为避免触发访问频率限制,需要加入限流机制,保障请求平稳执行。 2. **定时可靠的抓取机制** 配置定时任务,每隔固定时间自动调用 `gy.erp.supplier.get` 接口进行数据刷新。这保证了即使有新的供应商信息添加或更新,也能及时捕获并同步。 3. **实时监控与日志记录** 实现整个抓取过程的实时监控,并详细记录每次API调用的状态和响应结果。如果出现异常情况,可以快速定位问题并进行重试操作,提高系统的鲁棒性。 #### 数据写入到金蝶云星空:batchSave 将从管易云获取的数据写入到金蝶云星空,通过使用其提供的批量保存接口 `batchSave` 实现。这个阶段需关注如下几个关键点: 1. **大量数据快速写入** 为提高效率,大量供应商信息需要一次性批量提交给金蝶云星空。通过优化批量提交策略,不仅减少了网络开销,还提升了整体传输速度。 2. **数据格式转换** 管理两端不同的数据格式,是成功对接的重要前提。在这一过程中,我们实现了一套灵活的数据映射工具,根据需求完成字段匹配及格式转换,使得源与目标系统之间的信息能够无缝衔接。 3. **异常处理与错误重试** 在向金蝶云提交供应商信息时,可能会遇到各种异常情况,如网络波动、权限不足等。因此,在设计解决方案时整合了全面的异常处理逻辑及错误重试机制,包括但不限于失败记录、二次尝试等措施,以确保最终所有有效信息都能准确写入目标数据库中。 这些技术细节构建起“wk_供应商同步”方案坚实稳定基础,而后续 ![企业微信与OA系统接口开发配置](https://pic.qeasy.cloud/D9.png~tplv-syqr462i7n-qeasy.image) ### 调用管易云接口gy.erp.supplier.get获取并加工数据的技术实现 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用管易云接口`gy.erp.supplier.get`,并对获取的数据进行初步加工处理。 #### 接口概述 管易云提供的`gy.erp.supplier.get`接口用于获取供应商信息。该接口采用POST请求方式,支持分页查询,并通过指定时间范围来筛选数据。以下是该接口的元数据配置: ```json { "api": "gy.erp.supplier.get", "method": "POST", "number": "code", "id": "code", "pagination": { "pageSize": 40 }, "idCheck": true, "request": [ { "field": "start_date", "label": "开始时间", "type": "string", "describe": "与end_date搭配使用" }, { "field": "end_date", "label": "结束时间", "type": "string", "describe": "与start_date搭配使用" } ], "otherRequest": [ { "field": "page_size", "label": "分页大小", "type": "string", "describe": "默认为10", "value": "{PAGINATION_PAGE_SIZE}" }, { "field": "page_no", "label": "页号", "type": "string", "describe": "默认1", "value": "{PAGINATION_START_PAGE}" } ] } ``` #### 请求参数配置 在调用接口时,需要配置以下请求参数: 1. **开始时间(start_date)**和**结束时间(end_date)**:用于指定查询的时间范围。 2. **分页大小(page_size)**和**页号(page_no)**:用于控制分页查询,每次请求返回的数据量和当前页码。 示例请求体如下: ```json { "start_date": "<START_DATE>", "end_date": "<END_DATE>", "_pagination_":{ "_page_size_":"40", "_page_no_":"1" } } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和存储。以下是常见的数据清洗步骤: 1. **字段映射**:将源系统中的字段映射到目标系统中对应的字段。例如,将`code`映射为供应商编码,将`name`映射为供应商名称。 2. **数据格式转换**:将日期、数值等字段转换为目标系统所需的格式。例如,将日期字符串转换为标准日期格式。 3. **去重处理**:根据供应商编码等唯一标识字段,去除重复记录。 示例代码如下: ```python def clean_and_transform(data): cleaned_data = [] for record in data: transformed_record = { 'supplier_code': record['code'], 'supplier_name': record['name'], 'contact': record['contact'], 'phone': record['phone'], 'address': record['address'] } cleaned_data.append(transformed_record) return cleaned_data ``` #### 分页处理 由于接口支持分页查询,因此需要实现自动分页处理,以确保所有数据都能被完整获取。可以通过循环请求每一页的数据,直到没有更多数据为止。 示例代码如下: ```python def fetch_all_suppliers(api_client, start_date, end_date): page_no = 1 all_data = [] while True: response = api_client.post( api='gy.erp.supplier.get', data={ 'start_date': start_date, 'end_date': end_date, 'page_size': 40, 'page_no': page_no } ) if not response['data']: break all_data.extend(response['data']) page_no += 1 return all_data ``` #### 实时监控与日志记录 在整个数据集成过程中,实时监控和日志记录是确保数据准确性和及时发现问题的重要手段。可以通过轻易云平台提供的监控功能,对每一次API调用、数据清洗和转换过程进行实时监控,并记录详细日志。 示例日志记录代码如下: ```python import logging logging.basicConfig(level=logging.INFO) def log_api_call(api, params, response): logging.info(f"API Call: {api}") logging.info(f"Parameters: {params}") logging.info(f"Response: {response}") # 在实际调用API时记录日志 log_api_call('gy.erp.supplier.get', {'start_date': start_date, 'end_date': end_date, 'page_size': 40, 'page_no': page_no}, response) ``` 通过上述步骤,我们可以高效地调用管易云接口获取供应商信息,并对数据进行清洗和转换,为后续的数据处理奠定基础。在实际应用中,还可以根据具体需求进一步优化和扩展这些步骤,以满足不同业务场景的需求。 ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/S30.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。 #### API接口配置 为了将数据写入金蝶云星空,我们需要配置相应的API接口。根据提供的元数据配置,我们使用的是`batchSave`接口,采用POST方法提交请求。以下是具体的元数据配置: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 20, "method": "batchArraySave" }, "request": [ {"field":"FNumber","label":"编码","type":"string","value":"{code}"}, {"field":"FName","label":"名称","type":"string","value":"{name}"}, {"field":"FUseOrgId","label":"使用组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FCreateOrgId","label":"创建组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"} ], "otherRequest": [ {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BD_Supplier"}, {"field":"Operation","label":"执行的操作","type":"string","value":"batchSave"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"} ] } ``` #### 数据请求与清洗 在进行ETL转换之前,首先需要从源平台获取原始数据,并对其进行清洗和预处理。这一步骤确保我们获取的数据是准确且符合目标平台要求的。 #### 数据转换与写入 1. **字段映射**: - `FNumber`:对应源数据中的编码字段 `{code}`。 - `FName`:对应源数据中的名称字段 `{name}`。 - `FUseOrgId` 和 `FCreateOrgId`:使用固定值 `100`,并通过 `ConvertObjectParser` 转换为金蝶云星空所需格式。 2. **其他请求参数**: - `FormId`:设置为 `BD_Supplier`,表示业务对象表单ID。 - `Operation`:设置为 `batchSave`,表示执行批量保存操作。 - `IsVerifyBaseDataField`:设置为 `false`,表示不验证所有基础资料有效性。 - `IsAutoSubmitAndAudit`:设置为 `true`,表示提交并审核。 3. **批量处理**: 配置中指定了批量处理方式,即每次处理20条记录,通过 `"rowsKey": "array"` 和 `"rows": 20"` 实现批量保存。 #### 请求示例 以下是一个示例请求体,用于将清洗后的供应商数据写入金蝶云星空: ```json { "FormId": "BD_Supplier", "Operation": "batchSave", "IsVerifyBaseDataField": false, "IsAutoSubmitAndAudit": true, "array": [ { "FNumber": "SUP001", "FName": "供应商A", "FUseOrgId": { "FNumber": "100" }, "FCreateOrgId": { "FNumber": "100" } }, { "FNumber": "SUP002", "FName": "供应商B", ... } ] } ``` 通过上述配置和请求体,我们可以实现从源平台到金蝶云星空的数据无缝对接。轻易云数据集成平台提供了全透明可视化操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。在实际应用中,根据具体需求调整元数据配置,可以灵活应对各种复杂的数据集成场景。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)