利用轻易云实现数据的清洗与高效写入

  • 轻易云集成顾问-张妍琪
### 金蝶单位查询:金蝶云星空到轻易云数据集成平台的系统对接案例 在本文中,我们将深入探讨一个具体的技术案例,通过使用ExecuteBillQuery API从金蝶云星空获取数据,并利用轻易云集成平台的batchSave接口高效写入。这个配置方案名为“金蝶单位查询”,旨在确保数据快速、准确和无漏单地实现全生命周期管理。 首先,为了保证集成过程中不遗漏任何记录,我们采取了定时可靠的数据抓取机制,周期性调用ExecuteBillQuery API,从而实时获取最新业务数据。同时,处理分页和限流问题是至关重要的一环,在每次API请求中,我们合理设置分页参数并通过并发控制避免触及接口限制。 其次,对于如何解决两大平台之间的数据格式差异,我们自定义了一套灵活的数据映射规则,使得原始数据能够精确转换为目标格式。在此基础上,再通过批量处理的方法,将大量数据迅速且有效率地写入到轻易云集成平台,以提高整体性能表现。 此外,对接过程中的异常情况不可避免,为此我们设计了完善的错误重试机制与日志记录功能。一旦出现错误,系统会自动进行重试操作,并详细记录下整个处理过程,以便于后续分析与排查。这种透明化与实时监控办法,大幅提升了业务运作的稳定性和可追溯性。 最后,一些特性的实现还包括通过定制化脚本对字段进行二次加工、复杂计算或合并,从而满足不同实际业务需求。以上种种措施共同构建起一个全面、高效且安全可靠的数据集成方案。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D6.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口ExecuteBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`ExecuteBillQuery`接口来获取和加工数据。 #### 接口配置与请求参数 首先,我们需要配置接口的元数据,以确保能够正确地调用金蝶云星空的API。以下是元数据配置的详细说明: ```json { "api": "ExecuteBillQuery", "method": "POST", "number": "FNumber", "id": "FNumber", "pagination": { "pageSize": 10 }, "idCheck": true, "request": [ { "field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}", "change": "固定=>int" }, { "field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}", "change": "固定=>int" }, { "field": "TopRowCount", "label": "返回总行数", "type": "int", ... ``` #### 请求参数详解 1. **Limit**: 最大行数,表示每次请求返回的数据条数。通过`{PAGINATION_PAGE_SIZE}`动态替换为实际值。 2. **StartRow**: 开始行索引,表示从哪一行开始读取数据。通过`{PAGINATION_START_ROW}`动态替换为实际值。 3. **TopRowCount**: 返回总行数,用于分页控制。 4. **FilterString**: 过滤条件,用于筛选特定的数据。例如:`FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'`表示只获取审批日期大于上次同步时间的数据。 5. **FieldKeys**: 查询字段集合,指定需要返回的字段。例如:`["FPOOrderEntry_FEntryId", ...]`。 6. **FormId**: 表单ID,必须填写金蝶系统中的表单ID,如:`BD_UNIT`。 #### 数据请求与清洗 在配置好元数据后,我们可以通过轻易云平台发起HTTP POST请求来调用金蝶云星空的接口。以下是一个示例请求体: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... } } } } } } } } } } } } } } ``` #### 数据转换与写入 获取到原始数据后,需要进行必要的数据清洗和转换,以便后续处理和存储。例如,将日期格式统一转换,将字段名映射到目标系统中的字段名等。 ```python def clean_data(raw_data): cleaned_data = [] for record in raw_data: cleaned_record = {} cleaned_record['单位编码'] = record['FNumber'] cleaned_record['单位名称'] = record['FName'] # 添加更多字段转换逻辑 cleaned_data.append(cleaned_record) return cleaned_data ``` #### 实践案例 假设我们需要从金蝶云星空中获取所有审批日期在上次同步时间之后的单位信息,并将其写入目标数据库。以下是具体步骤: 1. 配置元数据,如上所述。 2. 发起HTTP POST请求,获取原始数据。 3. 对原始数据进行清洗和转换。 4. 将清洗后的数据写入目标数据库。 ```python # 示例代码片段 response = requests.post(api_url, json=request_payload) raw_data = response.json() cleaned_data = clean_data(raw_data) # 写入数据库 for record in cleaned_data: db.insert(record) ``` 通过上述步骤,我们实现了从金蝶云星空获取并加工单位信息的数据集成过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台的ETL转换与写入技术案例 在数据集成生命周期的第二步,重点是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。 #### 1. 数据提取与清洗 首先,从源系统提取数据。这一步通常涉及到从多个异构系统中获取原始数据,并对其进行初步清洗和过滤,以确保数据的完整性和准确性。假设我们需要从金蝶系统中查询单位信息,并将其写入轻易云集成平台。 #### 2. 数据转换 在提取到原始数据后,需要对其进行转换,以符合目标平台API接口的要求。以下是一个具体的元数据配置示例,用于将金蝶系统中的单位信息转换为轻易云集成平台API接口所需的格式: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "otherRequest": [ { "field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder" }, { "field": "Operation", "label": "执行的操作", "type": "string", "value": "BatchSave" }, { "field": "IsAutoSubmitAndAudit", "label": "提交并审核", "type": "bool", "value": true }, { "field": "IsVerifyBaseDataField", "label": "验证基础资料", "type": "bool", "describe": "是否验证所有的基础资料有效性,布尔类,默认false(非必录)", "value": false } ] } ``` 在这个配置中,我们需要特别注意以下几个关键字段: - `FormId`: 必须填写金蝶系统中的表单ID,例如`PUR_PurchaseOrder`。 - `Operation`: 指定执行的操作类型,这里设置为`BatchSave`。 - `IsAutoSubmitAndAudit`: 设置为`true`表示自动提交并审核。 - `IsVerifyBaseDataField`: 设置为`false`表示不验证所有基础资料有效性。 #### 3. 数据加载 在完成数据转换后,下一步是将转换后的数据通过API接口写入目标平台。以下是一个示例代码片段,展示如何通过HTTP POST请求将数据发送到轻易云集成平台: ```python import requests import json # 配置API请求URL和Headers url = 'https://api.qingyiyun.com/batchSave' headers = {'Content-Type': 'application/json'} # 构建请求体 payload = { 'FormId': 'PUR_PurchaseOrder', 'Operation': 'BatchSave', 'IsAutoSubmitAndAudit': True, 'IsVerifyBaseDataField': False, # 其他业务相关的数据字段 } # 将请求体转换为JSON格式 data = json.dumps(payload) # 发送POST请求 response = requests.post(url, headers=headers, data=data) # 检查响应状态码和内容 if response.status_code == 200: print('Data successfully saved to the target platform.') else: print(f'Failed to save data. Status code: {response.status_code}, Response: {response.text}') ``` 上述代码展示了如何使用Python编程语言,通过HTTP POST请求将经过ETL处理的数据发送到轻易云集成平台。关键步骤包括: 1. 配置API请求URL和Headers。 2. 构建请求体,包括必要的业务字段。 3. 将请求体转换为JSON格式。 4. 使用requests库发送POST请求。 5. 检查响应状态码和内容,以确认数据是否成功写入目标平台。 #### 技术细节与优化 在实际应用中,为了确保数据传输过程中的安全性和可靠性,可以考虑以下技术优化措施: - **认证与授权**:使用OAuth或其他认证机制,确保只有授权用户才能访问API接口。 - **错误处理**:增强错误处理逻辑,对不同类型的错误进行分类处理,并记录日志以便于后续排查问题。 - **性能优化**:对于大批量的数据传输,可以采用批量处理、异步调用等方式,提高传输效率。 通过以上步骤,我们可以实现从源系统到目标平台的数据无缝对接,有效提升业务流程的自动化程度和效率。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)