ETL转换科技案例:轻易云集成金蝶云星空客户信息

  • 轻易云集成顾问-吴伟
### 每刻往来单位—客户->金蝶客户:一个集成案例分享 在现代数据管理中,系统间的数据集成是不可或缺的环节。本篇文章将详细解析如何通过使用轻易云数据集成平台,实现每刻(Meike)系统中的往来单位(客户)数据与金蝶云星空客户信息的高效对接。 为了实现这一目标,我们利用了每刻提供的`/api/openapi/tradingPartner/list` API接口从源系统抓取数据,并将其写入到金蝶云星空对应的批量保存API `batchSave`。本技术案例将集中解答以下几个关键问题: 1. **确保不漏单**:如何避免在数据抓取过程中遗漏记录。 2. **快速大量写入**:应对大规模批量写入时可能出现的性能瓶颈。 3. **定时可靠抓取**:配置自动和定期同步,以保证业务连续性。 4. **分页和限流处理**:有效应对API调用次数限制及分页返回结果的问题。 首先,由于每刻API接口采用的是分页机制,每页返回固定数量的数据,因此我们需要设计一个循环逻辑,通过不断请求不同页码以获取所有记录。这种方式不仅允许我们完整获取所有客户信息,还能避免一次性加载大量数据造成服务器压力过大。同时,为了防止由于网络延迟或其他原因导致部分请求失败,需要加入重试机制,在一定次数内重新尝试未成功的请求。 其次,当获取到完整的数据后,需要解决两套系统间的数据格式差异问题。例如,每刻系统中的字段名、类型与金蝶云星空并不完全一致。在这种情况下,必须进行预处理,对原始数据做必要转换,再提交给金蝶接口。此外,为了增强操作透明度和追溯能力,我们还引入了实时监控与日志记录功能。通过这些手段,可以随时查看当前任务执行状态以及历史执行情况,从而及时发现和纠正潜在问题。 最后,对于实际应用中可能发生的一些异常,比如网络故障、数据库锁定等,我们也有相应的错误处理策略。一旦捕获到异常,会立即触发重试逻辑,尽最大努力确保任务顺利完成。如果多次重试仍未成功,则会生成报警信息通知相关人员介入修复。 以上仅为整体方案的一瞥,接下来让我们深入探讨各个步骤及背后的技术细节。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D22.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统每刻接口/api/openapi/tradingPartner/list获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用每刻接口`/api/openapi/tradingPartner/list`,并对获取的数据进行加工处理。 #### 接口配置与请求参数 首先,我们需要理解接口的元数据配置。以下是该接口的详细配置: ```json { "api": "/api/openapi/tradingPartner/list", "method": "POST", "number": "name", "id": "bizCode", "idCheck": true, "condition": [ [ {"field": "parentBizCode", "logic": "like", "value": "wldw"}, {"field": "parentBizCode", "logic": "neq", "value": "wldw001"}, {"field": "enabled", "logic": "eq", "value": "true"} ] ], "request": [ {"field": "startTime", "label": "查询开始(创建/更新)时间戳", "type": "string", "value": "{LAST_SYNC_TIME}000"}, {"field": "endTime", "label": "查询结束(创建/更新)时间戳", "type": "string", "value": "{CURRENT_TIME}000"}, {"field": "pageNo", "label": "分页序号", "type": "string", "describe":"(默认为1)", "value":"1"}, {"field":"pageSize","label":"分页大小","type":"string","describe":"(默认为50)","value":"50"}, {"field":"bizCodes","label":"往来单位编码","type":"string"}, {"field":"parentBizCode","label":"分类的业务编码","type":"string"}, {"field":"keyword","label":"往来单位编码/名字","type":"string","describe":"(模糊查询)"} ] } ``` 该配置定义了请求方法为POST,并且包含多个请求参数,如`startTime`、`endTime`、`pageNo`、`pageSize`等。这些参数用于控制数据查询的时间范围和分页信息。 #### 数据请求与清洗 在实际操作中,我们需要根据业务需求设置这些参数。例如,假设我们需要获取从上次同步时间到当前时间之间的数据,可以这样设置: ```json { ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/S2.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换与写入金蝶云星空API接口技术案例 在数据集成过程中,ETL(Extract, Transform, Load)转换是至关重要的一环。本文将详细探讨如何利用轻易云数据集成平台,将源平台的客户数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在开始ETL转换之前,首先需要从源平台提取客户数据并进行初步清洗。假设我们已经完成了这一步,获得了结构化的客户数据,包括客户名称、客户编码、创建组织、使用组织等信息。 #### 数据转换与写入 接下来,我们重点关注如何将这些清洗后的数据通过ETL过程转换为金蝶云星空API能够接收的格式,并写入目标平台。 ##### 配置元数据 根据提供的元数据配置,我们需要使用`batchSave` API,通过POST方法提交请求。以下是关键配置项及其解释: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "distributionOrg": "100534,229953,157036,364761,100535,100536,104847,104848,104849,337348,104850,158696,218598,897173,897172,897174,897167,897168,897171,1005646", "request": [ {"field": "FName", "label": "客户名称", "type": "string", "value": "{name}"}, {"field": "FNumber", "label": "客户编码", "type": "string", "value": "{bizCode}"}, {"field": "FCreateOrgId", "label": "创建组织", "type": "string", "parser": {"name":"ConvertObjectParser","params":"FNumber"}, "value":"100" }, {"field": "FUseOrgId", "label": "使用组织", "type":"string", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"100" }, {"field":"FDescription","label":"描述","type":"string"}, {"label":"客户分组","field":"FGroup","type":"string","value":"{parentBizCode}","parser":{"name":"ConvertObjectParser","params":"FNumber"}} ], ... } ``` ##### 数据字段解析 1. **客户名称 (FName)**:直接映射源数据中的`name`字段。 2. **客户编码 (FNumber)**:直接映射源数据中的`bizCode`字段。 3. **创建组织 (FCreateOrgId)** 和 **使用组织 (FUseOrgId)**:这两个字段都需要通过`ConvertObjectParser`解析器将值转换为对应的金蝶云星空格式,默认值为"100"。 4. **描述 (FDescription)**:可选字段,根据业务需求填写。 5. **客户分组 (FGroup)**:通过`ConvertObjectParser`解析器,将源数据中的`parentBizCode`字段转换为金蝶云星空格式。 ##### 请求示例 以下是一个完整的POST请求示例,用于向金蝶云星空API批量保存客户信息: ```json { "FormId": "BD_Customer", "Operation": { ... }, ... } ``` ##### 提交并审核 为了确保数据在提交后自动审核,我们设置了以下参数: ```json { ... { ... {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"} } } ``` #### 实际操作步骤 1. **准备请求体**:根据上述配置和解析规则,构建完整的JSON请求体。 2. **发送HTTP请求**:通过HTTP POST方法,将请求体发送到金蝶云星空API接口。 3. **处理响应**:检查响应状态和返回结果,确认数据是否成功写入目标平台。 #### 技术要点总结 - 使用轻易云平台提供的全异步、多系统支持特性,实现不同系统间的数据无缝对接。 - 利用元数据配置中的解析器(如ConvertObjectParser)进行必要的数据转换,以满足目标系统的格式要求。 - 设置自动提交和审核参数,提高业务处理效率。 通过上述步骤,我们可以高效地将源平台的数据转换并写入到金蝶云星空API接口中,实现跨系统的数据集成和同步。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/T1.png~tplv-syqr462i7n-qeasy.image)