ETL技术在金蝶云星空数据集成中的应用

  • 轻易云集成顾问-黄宏棵
### 金蝶云星空到金蝶云星空的高效数据集成:JY-BDS采入提交-审核 在企业的数据集成实践中,合理配置和实现系统对接是确保业务流程顺畅运行的重要环节。本文将分享一个实际运行的案例——通过轻易云数据集成平台,将金蝶云星空中的数据高效集成到另一实例的金蝶云星空系统,该方案名称为“JY-BDS采入提交-审核”。此案例重点解决了大批量数据快速写入、实时监控和异常处理等关键技术问题。 首先,我们需要从源头金蝶云星空获取所需的数据,这一步主要依赖`ExecuteBillQuery`接口以定时抓取特定业务单据的信息。为了保证数据不出现遗漏,通过制定可靠的调度策略,能够定期且稳定地调用API,一次性获取大量单据信息,并通过分页技术来应对接口限流的问题。 接下来面对的是如何将这些获取的数据无缝、高效地传输至目标端金蝶云星空。这一过程中,轻易云提供了强大的支持,包括高吞吐量的数据写入能力及自定义转换逻辑功能,使得在批量写入前进行必要的数据加工与映射,以贴合目标端系统需求。同时,对接过程还利用了集中监控和告警机制,实现对任务状态和性能的实时跟踪,一旦检测到异常情况可以即时响应并触发重试机制,从而提升整体容错率。 完成初步转换后,通过调用目标端API `Audit` 将经过整理后的数据推送至新的金蝶云实例中。在此过程中,应特别注意两者之间可能存在的数据格式差异,通过可视化设计工具预先设定好映射规则,有效减少人工干预,提高效率。此外,为确保每个步骤都有迹可循,还针对每个操作进行了详细日志记录和实时监控管理。在整个生命周期内,每一个环节都经由全透明界面展示,使业务方能清晰了解当前进展与状态,不仅提高了操作便利性,也保障了业务连续性。 最终,这一整套方案成功导通了一条完整且高效、稳定、安全的数据流动路径,实现两个独立系统间的大规模自动化同步,大幅降低人力成本,提高处理效率。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/D1.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口ExecuteBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的`ExecuteBillQuery`接口,获取并加工数据。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`ExecuteBillQuery`接口。该接口采用POST方法进行请求,以下是元数据配置: ```json { "api": "ExecuteBillQuery", "method": "POST", "number": "FBillNo", "id": "FId", "pagination": { "pageSize": 10 }, "idCheck": true, "request": [ { "field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "50" }, { "field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}" }, { "field": "TopRowCount", "label": "", "type": "", "" }, { "" } ] } ``` #### 请求参数解析 在请求参数中,我们需要特别注意以下几个字段: - `Limit`: 最大行数,限制每次查询返回的数据条数。 - `StartRow`: 开始行索引,用于分页查询。 - `FilterString`: 过滤条件,用于筛选符合条件的数据。例如:`FDocumentStatus <> 'C'`表示只查询未关闭的单据。 - `FieldKeys`: 查询字段集合,以逗号分隔多个字段。 这些参数可以根据实际需求进行调整,以确保获取到所需的数据。 #### 数据请求与清洗 在完成接口配置后,我们可以发起数据请求,并对返回的数据进行清洗。以下是一个示例请求体: ```json { "FormId": "STK_InStock", "FieldKeys": ["FBillNo", ""], } ``` #### 数据转换与写入 在获取并清洗数据后,需要将其转换为目标系统所需的格式,并写入目标系统。这一步通常包括数据类型转换、字段映射等操作。例如,将金蝶云星空中的日期格式转换为目标系统所需的标准日期格式。 #### 实时监控与错误处理 在整个过程中,实时监控和错误处理是确保数据集成顺利进行的重要环节。轻易云平台提供了详细的日志记录和错误报告功能,可以帮助我们快速定位和解决问题。 通过以上步骤,我们可以高效地调用金蝶云星空接口`ExecuteBillQuery`,获取并加工所需的数据,为后续的数据处理和分析打下坚实基础。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成过程中,ETL(提取、转换、加载)是一个至关重要的环节。本文将重点探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并最终通过金蝶云星空API接口写入目标平台。 #### API接口配置与元数据解析 在本案例中,我们使用的是金蝶云星空的`Audit` API接口,该接口用于审核业务对象表单。以下是该接口的元数据配置: ```json { "api": "Audit", "method": "POST", "idCheck": true, "request": [ {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "STK_InStock"}, {"field": "Numbers", "label": "编码集合", "type": "string", "value": "{BillNo}"}, {"field": "Ids", "label": "id集合", "type": "string"}, {"field": "InterationFlags", "label": "交互标志集合", "type": "string", "describe":"字符串类型,分号分隔,格式:\"flag1;flag2;...\"(非必录) 例如(允许负库存标识:STK_InvCheckResult)","value":"STK_InvCheckResult"}, {"field": "IgnoreInterationFlag", "label":"是否允许忽略交互","type":"string","describe":"布尔类型,默认true(非必录)","value":"true"}, {"field":"NetworkCtrl","label":"是否启用网控","type":"string","describe":"布尔类型,默认false(非必录)","value":"false"}, {"field":"IsVerifyProcInst","label":"检验单据关联运行","type":"string","describe":"是否检验单据关联运行中的工作流实例,布尔类型,默认false(非必录)","value":"false"} ] } ``` #### 数据转换与映射 在ETL过程中,我们需要将源平台的数据字段映射到目标平台API所需的字段格式。以下是具体步骤: 1. **提取源数据**:从源平台提取原始数据,例如采购订单信息。 2. **字段映射**: - `FormId`:固定值为`STK_InStock`,表示库存入库单。 - `Numbers`:对应源数据中的订单编号字段`BillNo`。 - `Ids`:可以为空或根据需求填充。 - `InterationFlags`:固定值为`STK_InvCheckResult`,表示允许负库存标识。 - `IgnoreInterationFlag`:固定值为`true`。 - `NetworkCtrl`:固定值为`false`。 - `IsVerifyProcInst`:固定值为`false`。 3. **转换逻辑**: - 将源数据中的订单编号字段提取出来并赋值给目标API请求中的`Numbers`字段。 - 根据业务需求决定是否需要填充其他可选字段,如`Ids`, `InterationFlags`, 等。 #### 数据写入目标平台 完成数据转换后,通过HTTP POST请求将处理后的数据写入金蝶云星空。以下是示例代码: ```python import requests import json # 定义API URL api_url = 'https://api.kingdee.com/Audit' # 构建请求头 headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer your_access_token' } # 构建请求体 payload = { 'FormId': 'STK_InStock', 'Numbers': ['PO123456'], 'Ids': '', 'InterationFlags': 'STK_InvCheckResult', 'IgnoreInterationFlag': True, 'NetworkCtrl': False, 'IsVerifyProcInst': False } # 发起POST请求 response = requests.post(api_url, headers=headers, data=json.dumps(payload)) # 检查响应状态 if response.status_code == 200: print('Data successfully written to Kingdee Cloud.') else: print(f'Failed to write data: {response.text}') ``` #### 实时监控与错误处理 为了确保数据写入过程的可靠性和稳定性,需要对每个环节进行实时监控,并设置适当的错误处理机制。例如: - **日志记录**:记录每次API调用的请求和响应,以便后续分析和排查问题。 - **重试机制**:对于失败的请求,可以设置重试策略,例如间隔一段时间后重试三次。 - **告警通知**:当出现连续多次失败时,通过邮件或短信通知相关人员进行人工干预。 通过上述步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星空,实现不同系统间的数据无缝对接。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)