完整案例解析:从SQLServer到金蝶云星空的数据集成

  • 轻易云集成顾问-彭萍
### SQL Server数据集成到金蝶云星空的实践案例 在本篇技术文章中,我们将详细探讨一个实际的系统对接集成案例:如何有效地将SQL Server中的数据无缝迁移和集成到金蝶云星空。具体来说,本次我们实现了“员工 泛微用户=>金蝶员工ok”的数据处理方案,展示了从获取SQL Server接口select开始,到最终采用batchSave API高效写入至金蝶云星空所涉及的技术要点。 首先,为确保大量数据能够快速且可靠地写入到金蝶云星空,我们利用轻易云平台提供的高吞吐量数据写入能力,使得整个过程具备高度时效性。此外,在此过程中,通过其集中监控和告警系统实时跟踪任务状态与性能,提前发现并解决可能存在的数据问题,这些措施有力保障了集成任务的顺利进行。 其次,本次实施特别注重异常处理与错误重试机制。在连接两大数据源时,不可避免会遇到诸如分页、限流以及不同格式的数据转换等问题。因此,在设计阶段我们引入了一系列定制化的数据转换逻辑,以适应特定业务需求。同时通过对SQL Server接口支持多种查询过滤功能,如API: select,实现准确抓取目标数据,并使用批量操作API: batchSave 将最终结果高效传输到目的端——金蝶云星空。这不仅减少了网络开销,也提高了整体运行效率。 最后,对于整个整合流程,轻易云的平台提供了一套直观且强大的可视化设计工具。这使得复杂的数据流更加易于管理,同时也提升了我们的工作效率。由此,一个贯穿全生命周期管理,从 数据抓取、转换再到落地 金蝶 云 星 空 的 高 效 集 成 解决 方案 得以 顺 利 落 地 实施 。 这只是该成功案例的一部分,后续将具体阐述各个步骤及其关键实现细节,包括如何调用SQL Server接口select、处理分页和限流,以及应对各种异常情况。通过这些经验分享,可以为类似场景中的企业系统对接提供参考和借鉴。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D1.png~tplv-syqr462i7n-qeasy.image) ### 调用SQL Server接口select获取并加工数据 在轻易云数据集成平台的生命周期中,调用源系统SQL Server接口select获取并加工数据是至关重要的第一步。本文将深入探讨如何通过配置元数据来实现这一过程,并分享具体的技术案例。 #### 元数据配置解析 我们使用以下元数据配置来调用SQL Server接口: ```json { "api": "select", "effect": "QUERY", "method": "POST", "number": "lastname", "id": "id", "idCheck": true, "request": [ { "field": "main_params", "label": "main_params", "type": "object", "describe": "111", "children": [ { "field": "fetch", "label": "fetch", "type": "int", "value": "_function 100*1" }, { "field": "offset", "label": "offset", "type": "int", "value": "_function 0*0" }, { "field": "lastmoddate", "label": "lastmoddate", "type": "date", "value": "{{DAYS_AGO_1|date}}" } ] } ], ... } ``` #### 配置详解 1. **API调用类型**: - `api: select` 表示我们要执行一个查询操作。 - `effect: QUERY` 指明了这是一个查询效果。 - `method: POST` 表示使用POST方法进行请求。 2. **参数设置**: - `number: lastname` 和 `id: id` 用于标识查询结果中的字段。 - `idCheck: true` 启用ID检查,确保每条记录都有唯一标识。 3. **请求参数**: - `main_params` 是一个对象,包含三个子参数: - `fetch`: 定义了每次查询获取的记录数,这里设置为100。 - `offset`: 定义了查询的偏移量,这里初始值为0。 - `lastmoddate`: 使用模板变量`{{DAYS_AGO_1|date}}`表示从当前日期前一天开始查询。 4. **SQL语句**: ```sql SELECT id, loginid, lastname, workcode, lastname, sex, departmentid, jobtitle, managerid, email, mobile, status, locationid, systemlanguage, belongto, jobcall, joblevel, jobactivitydesc, resourceimageid, textfield1, textfield2, telephone, mobilecall, fax, workroom, account, subcompanyid1 FROM hrmresource WHERE lastmoddate >= :lastmoddate AND status != '5' AND workcode IS NOT NULL AND workcode NOT LIKE '%-1%' ORDER BY (SELECT NULL) OFFSET :offset ROWS FETCH NEXT :fetch ROWS ONLY ``` 此SQL语句用于从hrmresource表中选择符合条件的数据,按时间过滤并分页获取。 #### 实际应用案例 假设我们需要从SQL Server数据库中获取员工信息,并将其集成到金蝶系统中。以下是具体步骤: 1. **配置请求参数**: 在轻易云平台上,我们首先配置上述元数据,将参数值替换为实际值。例如,将`{{DAYS_AGO_1|date}}`替换为实际日期,如2023-09-30。 2. **执行查询**: 平台会根据配置生成并执行SQL查询,获取符合条件的数据。假设我们得到以下结果: ```json [ { "id": 1, ... // 其他字段 }, ... // 更多记录 ] ``` 3. **数据清洗与转换**: 获取的数据可能需要进一步清洗和转换。例如,将日期格式统一、去除无效字符等。这一步可以在轻易云平台上通过内置的转换工具完成。 4. **写入目标系统**: 清洗后的数据将通过相应接口写入金蝶系统,实现跨系统的数据同步。 #### 技术要点总结 - **异步处理与高效分页**:通过设置fetch和offset参数,实现异步处理和高效分页,确保大规模数据处理的性能。 - **动态参数替换**:使用模板变量如`{{DAYS_AGO_1|date}}`实现动态参数替换,提高灵活性。 - **全生命周期管理**:尽管本文重点在于第一步,但整个过程包括后续的数据转换与写入,确保数据集成的完整性和一致性。 通过上述配置和操作,我们可以高效地从SQL Server中获取并加工数据,为后续的数据集成奠定基础。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S2.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与金蝶云星空API接口集成 在数据集成生命周期的第二步中,主要任务是将已经集成的源平台数据进行ETL(提取、转换、加载)转换,使其符合目标平台金蝶云星空API接口所能接收的格式,并最终写入目标平台。本文将深入探讨这一过程中涉及的技术细节和元数据配置。 #### 数据请求与清洗 在数据请求阶段,我们从泛微用户系统中提取员工信息。此阶段的数据清洗主要包括字段映射和数据格式转换,以确保数据能够无缝对接到金蝶云星空系统。 #### 数据转换与写入 在数据转换阶段,我们利用轻易云提供的元数据配置,将清洗后的数据转化为金蝶云星空API接口所需的格式。以下是关键步骤和技术细节: 1. **API接口调用配置** 元数据配置中的`api`字段指定了要调用的金蝶云星空API接口,这里我们使用的是`batchSave`接口,方法为`POST`。这个接口支持批量保存员工信息。 2. **字段映射与转换** 在元数据配置中,`request`字段定义了需要映射和转换的数据字段。每个字段都有详细的配置,包括字段名称、标签、类型、描述和值等。例如: - **FName(名称)**:这是一个多语言字段,需要根据不同语言环境进行转换。使用`ConvertJson`解析器将不同语言的名称映射到相应的键值对。 ```json { "field": "FName", "label": "名称", "type": "string", "describe": "111", "value": "[\n {\n \"Key\": 1033,\n \"Value\": \"{second_name}\"\n },\n {\n \"Key\": 2052,\n \"Value\": \"{first_name}\"\n },\n {\n \"Key\": 3076,\n \"Value\": \"{third_name}\"\n }\n ]", "parser": {"name": "ConvertJson"} } ``` - **FNumber(编码)**:直接映射员工编码。 ```json { "field": "FNumber", "label": "编码", "type": "string", "describe": "111", "value": "{workcode}" } ``` - **FUseOrgId(使用组织)** 和 **FCreateOrgId(创建组织)**:这两个字段需要通过`ConvertObjectParser`解析器,将组织ID转换为金蝶系统中的组织编码。 ```json { "field": "FUseOrgId", "label": "使用组织", "type": "string", "describe": "111", "value": "{subcompanyid1}", "parser": {"name": "ConvertObjectParser", "params": "FNumber"}, "mapping": {"target":"65a6684ecb140d246f2f0789", "direction":"reverse"} }, { ... } ``` 3. **其他请求参数** 除了基本字段映射外,还需要设置一些其他请求参数以确保API调用成功: - **FormId**:指定表单ID,例如这里是员工信息表单ID `BD_Empinfo`。 - **Operation**:操作类型,这里是 `BatchSave`。 - **IsAutoSubmitAndAudit**:是否自动提交和审核,设置为 `true`。 - **IsVerifyBaseDataField**:是否验证所有基础资料有效性,默认为 `false`。 4. **批量保存操作** 最后,通过元数据配置中的操作部分,我们定义了批量保存操作的方法和相关参数: ```json { ... ,"operation":{"method":"batchArraySave","rows":1,"rowsKey":"array"} } ``` #### 实际应用案例 在实际应用中,通过上述配置,我们可以实现以下功能: - 从泛微用户系统提取员工信息,并通过轻易云的数据清洗和转换功能,将这些信息转化为金蝶云星空API所需的格式。 - 利用批量保存接口,将处理后的员工信息一次性写入金蝶云星空系统,提高了数据处理效率和准确性。 通过这种方式,不仅实现了不同系统间的数据无缝对接,还保证了每个环节的数据透明度和可追溯性,大大提升了业务流程的效率和可靠性。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)