使用轻易云平台进行ETL转换与数据写入

  • 轻易云集成顾问-叶威宏
### 金蝶云星空数据集成轻易云平台的技术案例分享 在企业应用系统中,确保数据的高效、准确流动是一项重要任务。本文将重点探讨如何通过定制化的数据映射对接,实现金蝶云星空与轻易云集成平台之间的无缝衔接。本次案例我们以“Done-金蝶-员工——>空操作”方案为例,展示了API接口操作和常见问题的解决方式。 首先我们面临的问题是如何调用金蝶云星空的`executeBillQuery`接口,以便获取员工相关数据,并处理分页及限流问题。为此,我们构建了一套可靠抓取机制,通过定时调度程序访问`executeBillQuery`接口,确保在规定时间内完成数据抓取,同时避免因请求频繁导致接口超载或响应超时。 其次,大量的数据需要快速写入到轻易云集成平台,这就要求我们的系统能够支持批量数据操作以及错误重试机制。在实现过程中,我们使用了轻易云提供的“写入空操作”的API,将从金蝶获取的数据统一格式化后批量提交。同时,为应对可能出现的数据格式差异和异常情况,每一批次都配备详细日志记录和重试逻辑,有效提高了整体运行稳定性。 在整个对接过程中特别值得注意的是两者间的数据格式差异。针对这一点,我们制定了一套专门的数据映射规则,通过预处理脚本进行清洗转换,使得输入输出字段完全匹配。此外,由于轻易云提供全生命周期管理特性,因此可以实时监控每个环节,从而迅速定位并排除故障,提高业务透明度及效率。 以上仅是此次技术方案中的几个关键点,在实际实施过程中,还有更多细节需要考量,如分页限流处理策略、异常捕获与回滚等,将在后续章节中详细介绍。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取并加工员工数据。 #### 接口配置与请求参数 首先,我们需要配置元数据以便正确调用金蝶云星空的API。根据提供的元数据配置,`executeBillQuery`接口的主要参数如下: - **api**: `executeBillQuery` - **effect**: `QUERY` - **method**: `POST` - **number**: `FNumber` - **id**: `FNumber` 请求参数包含两个部分:`request`和`otherRequest`。 ##### Request参数 这些参数用于指定我们希望从金蝶系统中查询的数据字段: ```json [ {"field":"FNumber","label":"FNumber","type":"string","describe":"111","value":"FNumber"}, {"field":"FID","label":"FID","type":"string","describe":"111","value":"FID"}, {"field":"FName","label":"FName","type":"string","describe":"111","value":"FName"}, {"field":"FMobile","label":"FMobile","type":"string","describe":"111","value":"FMobile"}, {"field":"FEmail","label":"FEmail","type":"string","describe":"111","value":"FEmail"}, {"field":"FPostDept","label":"FPostDept","type":"string","describe":"111","value":"FPostDept"}, {"field":"F_TLQG_TextDDBM","label":"钉钉编码","type":"string","value":"F_TLQG_TextDDBM"} ] ``` ##### OtherRequest参数 这些参数用于控制查询行为,例如分页和过滤条件: ```json [ {"field": "Limit", "label": "Limit", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "StartRow", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "TopRowCount", "label": "TopRowCount", "type": "int", "describe": "金蝶的查询分页参数"}, {"field": "FilterString", "label": "FilterString", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FModifyDate>='{{LAST_SYNC_TIME|dateTime}}' and FDocumentStatus='C'" }, {"field": "FieldKeys", "label": "FieldKeys", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "value": "{MAIN_REQUEST}" }, {"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "BD_Empinfo" } ] ``` #### 数据请求与清洗 在配置好元数据后,我们可以通过轻易云平台发起POST请求,调用`executeBillQuery`接口。以下是一个示例请求体: ```json { "FormId": "BD_Empinfo", "FieldKeys": ["FID", "FNumber", "FName", "FMobile", "FEmail", "FPostDept", { field: '钉钉编码', value: '钉钉编码' }], // 分页控制 { field: 'Limit', value: '100' }, { field: 'StartRow', value: '0' }, // 查询条件 { field: 'FilterString', value: 'FModifyDate>=\'2023-01-01\' and FDocumentStatus=\'C\'' } } ``` 在这个请求中,我们指定了要查询的表单ID为`BD_Empinfo`,并定义了需要返回的字段以及分页和过滤条件。 #### 数据转换与写入 获取到原始数据后,需要对其进行清洗和转换,以符合目标系统或业务需求。例如,可以使用轻易云的数据转换功能对字段进行重新映射或格式化。 假设我们需要将员工手机号进行掩码处理,可以在轻易云平台上配置相应的数据转换规则: ```json { field: '手机号码', transform: function(value) { return value.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2'); } } ``` 通过这种方式,我们可以确保敏感信息得到保护,同时保证数据的一致性和完整性。 #### 实时监控与调试 在整个数据集成过程中,实时监控和调试是确保数据准确性的关键。轻易云平台提供了丰富的日志和监控工具,可以帮助我们快速定位和解决问题。 例如,通过查看API调用日志,我们可以确认每次请求是否成功,以及返回的数据是否符合预期。如果出现错误,可以根据日志信息进行排查和修正。 综上所述,通过合理配置元数据并利用轻易云平台强大的功能,我们可以高效地调用金蝶云星空接口获取并加工所需的数据,为后续的数据处理和分析奠定坚实基础。 ![如何开发用友BIP接口](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换与写入技术案例 在数据集成的生命周期中,ETL(Extract, Transform, Load)转换和写入是关键步骤之一。本文将重点探讨如何将已经集成的源平台数据进行ETL转换,并通过轻易云集成平台API接口将其写入目标平台。 #### 数据请求与清洗 在数据请求与清洗阶段,我们已经从源系统(如金蝶)获取了员工数据,并进行了必要的数据清洗和预处理。这一步确保了数据的准确性和一致性,为后续的ETL转换奠定了基础。 #### 数据转换 在数据转换阶段,我们需要将清洗后的数据转化为目标平台所能接受的格式。这里我们使用轻易云集成平台提供的API接口进行操作。以下是具体的元数据配置: ```json { "api": "写入空操作", "effect": "EXECUTE", "method": "POST", "idCheck": true } ``` 根据上述配置,我们可以看到以下几个关键点: 1. **API接口**:`api`字段指定了目标接口为“写入空操作”。 2. **操作效果**:`effect`字段表示该操作是执行类型(EXECUTE)。 3. **HTTP方法**:`method`字段指定了使用POST方法。 4. **ID检查**:`idCheck`字段设为true,表示需要对ID进行检查。 #### 实现步骤 1. **准备请求数据**: 在这一阶段,我们需要准备好要发送到目标API的数据。假设我们从金蝶系统获取到的员工数据如下: ```json { "employeeId": "12345", "name": "张三", "department": "研发部" } ``` 2. **构建请求体**: 根据API接口要求,将上述数据构建为符合目标平台格式的请求体。例如: ```json { "id": "12345", "operation": "write", "data": { "name": "张三", "department": "研发部" } } ``` 3. **发送HTTP请求**: 使用POST方法将请求体发送到目标API接口。以下是一个Python示例代码,展示如何使用requests库发送HTTP请求: ```python import requests import json url = 'https://api.qingyiyun.com/execute' headers = {'Content-Type': 'application/json'} payload = { 'id': '12345', 'operation': 'write', 'data': { 'name': '张三', 'department': '研发部' } } response = requests.post(url, headers=headers, data=json.dumps(payload)) if response.status_code == 200: print('Data successfully written to target platform.') else: print(f'Failed to write data: {response.status_code}, {response.text}') ``` 4. **处理响应结果**: 检查响应状态码和返回结果,确保数据成功写入目标平台。如果出现错误,根据返回的信息进行相应处理。 #### 数据验证与监控 在完成数据写入后,需要对写入的数据进行验证,确保其准确性。同时,通过轻易云集成平台提供的实时监控功能,可以随时查看数据流动和处理状态,及时发现并解决问题。 通过以上步骤,我们实现了从源系统获取员工数据、进行ETL转换,并最终通过轻易云集成平台API接口将其写入目标平台。这一过程不仅提高了数据处理效率,还确保了业务流程的透明度和可追溯性。 ![用友与MES系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)