使用轻易云实现ETL操作并集成金蝶云星空

  • 轻易云集成顾问-彭亮
### 每刻数据集成到金蝶云星空:一个系统对接集成案例分享 在本次技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将每刻投资项目的数据精准、高效地传输到金蝶云星空。此次集成的方案名为“每刻投资项目->金蝶投资项目”,重点解决了跨系统间的大量数据的快速、可靠写入和格式差异问题。 为了确保整个过程不漏单,并保证定时可靠地抓取每刻接口的数据,我们采用了轻易云提供的全透明可视化操作界面及实时监控功能。在此基础上,针对每刻接口(/api/openapi/reference/data/detail/query)的分页和限流特性进行了专项处理,以保障API调用的稳定性与效率。 批量数据由每刻系统拉取后,通过自定义脚本实现与金蝶云星空标准格式之间的数据映射,再利用金蝶提供的数据写入API(batchSave)完成高效存储。这一过程中,为确保异常情况能够得到及时妥善处理,我们设计并实现了完整的错误重试机制,使得任何潜在的问题都能被迅速发现并解决。 另外,为应对两套系统间可能存在的数据格式差异,我们特别构建了一系列转换规则,这些规则不仅涵盖基本字段类型映射,也考虑到了特殊业务场景下的数据校验与调整需求。同时,通过实时监控和日志记录功能,对整个处理链路进行全面跟踪,提高整体运维效果。 接下来,将详细阐述具体技术实施步骤,从初始配置到实际运行中的注意事项,一一解析。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image) ### 调用每刻接口获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台调用每刻接口`/api/openapi/reference/data/detail/query`来获取并加工数据。 #### 接口配置与请求参数 根据提供的元数据配置,我们需要向每刻系统发送一个POST请求,具体的API路径为`/api/openapi/reference/data/detail/query`。以下是请求参数的详细配置: - `referenceDataBizCode`: 档案编码,固定值为"TZXM"。 - `keyword`: 根据选项名称和选项编码进行模糊查询,可选参数。 - `offset`: 分页起始位置,默认值为0。 - `pageSize`: 分页条数,默认值为50,最大值为100。 - `updatedStartAt`: 最近修改时间的起始时间戳,用于查询在此时间及之后修改的数据。 - `updatedEndAt`: 最近修改时间的结束时间戳,用于查询在此时间及之前修改的数据。 以下是请求参数的JSON格式示例: ```json { "referenceDataBizCode": "TZXM", "keyword": "", "offset": "0", "pageSize": "50", "updatedStartAt": "{LAST_SYNC_TIME}000", "updatedEndAt": "{CURRENT_TIME}000" } ``` #### 请求与响应处理 1. **构建请求**: 使用轻易云平台的可视化界面或API调用工具(如Postman)构建上述请求。确保在请求头中设置必要的认证信息,如API密钥或Token。 2. **发送请求**: 将构建好的请求发送到每刻系统。由于轻易云平台支持全异步操作,可以同时处理多个请求,提高效率。 3. **处理响应**: 每刻系统返回的数据通常包含项目的详细信息,包括项目名称、业务编码等。以下是一个可能的响应示例: ```json { "data": [ { "name": "投资项目A", "bizCode": "TZXM001", ... }, { "name": "投资项目B", "bizCode": "TZXM002", ... } ], ... } ``` #### 数据清洗与转换 获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统(金蝶投资项目)。主要步骤包括: 1. **字段映射**: 将每刻系统中的字段映射到金蝶系统中的相应字段。例如,将`name`映射到金蝶系统中的项目名称字段,将`bizCode`映射到金蝶系统中的业务编码字段。 2. **数据验证**: 根据元数据配置中的`idCheck`参数,对业务编码进行唯一性检查,确保没有重复记录。 3. **格式转换**: 根据目标系统要求,对日期、数值等字段进行格式转换。例如,将时间戳转换为标准日期格式。 4. **错误处理**: 对于不符合要求的数据记录,进行日志记录并通知相关人员进行人工干预。 #### 实践案例 假设我们需要同步最近一小时内修改过的投资项目数据,可以通过以下步骤实现: 1. 获取当前时间和一小时前的时间戳。 2. 构建请求参数,将`updatedStartAt`设置为一小时前的时间戳,将`updatedEndAt`设置为当前时间戳。 3. 发送请求并获取响应数据。 4. 对响应数据进行清洗、转换和验证。 5. 将处理后的数据写入金蝶投资项目系统。 通过以上步骤,我们可以高效地实现每刻投资项目到金蝶投资项目的数据集成,确保数据的一致性和准确性。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/S28.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步中,关键任务是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转化为目标平台能够接收的格式。在本案例中,我们将探讨如何通过轻易云数据集成平台,将每刻投资项目的数据转换为金蝶云星空API接口所能接受的格式,并最终写入目标平台。 #### 数据请求与清洗 在开始数据转换之前,首先需要从源平台获取原始数据,并对其进行清洗和预处理。假设我们已经完成了这一阶段,接下来进入数据转换与写入阶段。 #### 数据转换与写入 为了将每刻投资项目的数据写入金蝶云星空,我们需要使用其提供的API接口。在本案例中,我们使用`batchSave` API来实现批量保存操作。以下是详细的元数据配置和具体操作步骤。 ##### 元数据配置解析 ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FNumber", "label": "编码", "type": "string", "value": "{bizCode}" }, { "field": "FDataValue", "label": "名称", "type": "string", "value": "{name}" }, { "field": "FId", "label": "类别", "type": "string", "value": "TZXM_SYS", "parser": { "name": "ConvertObjectParser", "params": "FNumber" } } ], ... } ``` 1. **API接口配置** - `api`: 指定使用的API接口名称,这里是`batchSave`。 - `method`: HTTP请求方法,这里是`POST`。 - `idCheck`: 是否进行ID检查,设置为`true`。 2. **操作配置** - `operation`: 定义批量操作的方式。 - `rowsKey`: 指定数组键名,这里是`array`。 - `rows`: 每次处理的数据行数,这里是1行。 - `method`: 批量保存的方法,这里是`batchArraySave`。 3. **请求字段映射** - `request`: 定义要发送到API接口的字段映射。 - `FNumber`: 映射到源数据中的业务编码 `{bizCode}`。 - `FDataValue`: 映射到源数据中的名称 `{name}`。 - `FId`: 固定值 `"TZXM_SYS"`,通过解析器 `ConvertObjectParser` 转换为目标格式。 4. **其他请求参数** ```json [ { ... {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"}, {"field":"Operation","label":"执行的操作","type":"string","value":"BatchSave"}, {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"}, {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"} } ] ``` ##### 实际操作步骤 1. **准备源数据** 从每刻投资项目系统中提取所需的数据,例如: ```json [ {"bizCode": "INV001", "name": "投资项目A"}, {"bizCode": "INV002", "name": "投资项目B"} ] ``` 2. **转换数据格式** 根据元数据配置,将提取的数据转换为金蝶云星空API能够接收的格式: ```json [ { array: [ {"FNumber": "{INV001}", ...}, {"FNumber": "{INV002}", ...} ], FormId: 'BOS_ASSISTANTDATA_DETAIL', Operation: 'BatchSave', IsAutoSubmitAndAudit: true, IsVerifyBaseDataField: false } ] ``` 3. **发送HTTP请求** 使用HTTP POST方法,将转换后的数据发送到金蝶云星空API接口: ```python import requests url = 'https://api.kingdee.com/batchSave' headers = {'Content-Type': 'application/json'} data = { ... } response = requests.post(url, json=data, headers=headers) if response.status_code == 200: print("Data successfully saved to Kingdee Cloud.") else: print("Failed to save data:", response.content) ``` 通过上述步骤,我们成功地将每刻投资项目的数据转换并写入到金蝶云星空系统。这一过程展示了如何利用轻易云数据集成平台高效地进行ETL转换和系统间的数据无缝对接。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T25.png~tplv-syqr462i7n-qeasy.image)