ETL转换:将金蝶客户数据写入每刻自定义档案

  • 轻易云集成顾问-张妍琪
### 金蝶客户->每刻自定义档案—店铺:高效数据集成案例分享 在复杂业务环境中,如何实现金蝶云星空与每刻系统之间的数据无缝对接,是一个重要且具有挑战性的任务。本文将重点介绍金蝶客户数据集成到每刻自定义档案—店铺的具体实现过程,特别是解决大规模数据快速写入、定时抓取及分页限流等问题的方法。 首先,为了确保从金蝶云星空获取不到遗漏订单,我们调用了其提供的executeBillQuery API接口,该接口能够实时查询并返回最新的业务单据信息。在这个过程中,我们还需要考虑同一时间段内可能存在的大量数据请求,因此在API调用中设计了可靠的数据抓取机制,包括自动重试和错误处理,以最大化地保证数据完整性。 接下来,大量获得的数据需要被快速批量地写入到每刻系统。我们使用了每刻系统开放的/api/openapi/reference/data/detail API进行多线程并发写入,通过优化网络带宽和请求频率,有效提升了写入效率。此外,每次批量写入操作都进行了详细日志记录和状态监控,确保整个流程透明可追溯。 与此同时,在处理分页与限流问题上,我们采取了一些技术措施,例如根据返回结果中的标识符进行分段请求,并设置合理的速率限制,从而避免触发API访问频率过高的问题。这不仅有效防止服务器压力过大,还能保障系统运行稳定性。 对于不同平台之间的数据格式差异,我们通过预先制定映射规则来完成数据转换。例如,将金蝶云星空格式化后的JSON数据结构映射为符合每刻要求的字段格式,这样可以使后续步骤顺利开展且减少出错几率。此外,对于偶尔出现的数据对接异常情况,也有专门设计的错误重试机制,对失败记录进行修复尝试,直至最后成功或给出详细故障报告以供人工干预处理。 整体方案实现过程中,通过轻易云平台全生命周期管理功能,实现上述操作透明可见,使得各个环节配合更加紧密,各部门协作更加高效稳定。这不仅缩短了项目上线周期,还极大提高了企业运营效率,为业务发展提供可靠支持。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D21.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细介绍如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取客户数据并进行初步加工。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。以下是元数据配置的关键部分: ```json { "api": "executeBillQuery", "method": "POST", "number": "FName", "id": "FNumber", "pagination": { "pageSize": 100 }, "condition": [ [ {"field":"FGroup","logic":"neq","value":"01"}, {"field":"FGroup","logic":"neq","value":"02"}, {"field":"FGroup","logic":"neq","value":"03"}, {"field":"FGroup","logic":"neq","value":"04"}, {"field":"FGroup","logic":"neq","value":"05"}, {"field":"FGroup","logic":"neq","value":"wldw002"}, {"field":"FGroup","logic":"neq","value":"wldw003"}, {"field":"FGroup","logic":"neq","value":"wldw004"}, {"field":"FGroup","logic":"neq","value":"wldw005"}, {"field":"FGroup","logic":"neq","value":"wldw006"}, {"field":"FGroup","logic":"neq","value":"wldw007"}, {"field":"FGroup","logic":"neq","value":"wldw008"}, {"field":"FGroup","logic":"neq","value":"wldw009"}, {"field":"FGroup","logic":"neq","value":"wldw010"}, {"field":"FGroup","logic":"neq","value":"wldw011"}, {"field": "FGroup", "logic": "neq", "value": "06"} ] ], ... } ``` 该配置指定了需要过滤掉的客户分组(`FGroup`),确保我们只获取特定分组之外的客户数据。 #### 请求字段与分页参数 为了确保请求的数据完整性和有效性,我们需要定义请求字段和分页参数。以下是请求字段的配置: ```json { "request": [ {"field": "FCUSTID", "label": "FCUSTID", "type": "string", "value": "FCUSTID"}, {"field": "FNumber", "label": "编码", "type": "string", "value": "FNumber"}, ... {"field": "FTEL", "label": "电话", "type": "string", "value": "FTEL"} ], ... } ``` 分页参数配置如下: ```json { ... "otherRequest":[ { ... {"field": "Limit", "label": "最大行数", "type": "string", "describe": "", "value": "{PAGINATION_PAGE_SIZE}"}, ... } ] } ``` 这些字段定义了我们需要从金蝶云星空获取的数据,包括客户ID、编码、名称、电话等信息。同时,分页参数确保我们可以分批次获取大规模数据,提高效率。 #### 数据请求与清洗 在完成接口配置后,我们通过轻易云平台发起HTTP POST请求,调用`executeBillQuery`接口。以下是一个示例请求体: ```json { ... { ... { ..., FilterString: `FSupplierId.FNumber = 'VEN00010' and FApproveDate>='${LAST_SYNC_TIME|dateTime}'`, FieldKeys: ["FCUSTID", ..., ,...].join(","), FormId: 'BD_Customer' } } } ``` 通过这种方式,我们可以动态生成过滤条件和字段集合,并传递给金蝶云星空接口以获取所需的数据。 #### 数据转换与写入 在成功获取到原始数据后,我们需要对其进行初步清洗和转换。例如,可以使用轻易云提供的数据转换工具,将原始JSON格式的数据转换为目标系统所需的格式。以下是一个简单的转换示例: ```javascript function transformData(data) { return data.map(item => ({ customerId: item.FCUSTID, code: item.FNumber, name: item.FName, phone: item.FTEL, // 更多字段映射... })); } ``` 经过转换后的数据可以直接写入目标系统,完成整个数据集成过程中的第一步。 通过上述步骤,我们实现了从金蝶云星空获取客户数据并进行初步加工,为后续的数据处理和写入奠定了基础。这种全透明可视化的操作不仅提高了业务透明度,也极大提升了效率。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:从金蝶客户到每刻自定义档案 在数据集成的生命周期中,数据转换与写入是至关重要的一步。在这一阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台API接口的要求,并最终写入目标平台。本文将深入探讨如何通过轻易云数据集成平台将金蝶客户数据转换为每刻自定义档案的数据格式,并成功写入每刻平台。 #### 接口与元数据配置解析 在本案例中,我们需要调用每刻平台的自定义档案API接口。根据提供的元数据配置,API接口路径为`/api/openapi/reference/data/detail`,请求方法为POST。以下是元数据配置的详细解析: ```json { "api": "/api/openapi/reference/data/detail", "method": "POST", "idCheck": true, "request": [ { "field": "bizCode", "label": "自定义档案根目录code", "type": "string", "describe": "(全局唯一)", "value": "dp" }, { "field": "referenceDataDetails", "label": "选项信息", "type": "array", "children": [ { "field": "name", "label": "选项名称", "type": "string", "value": "{FName}", "parent": "referenceDataDetails" }, { "field": "bizCode", "label": "自定义档案下的选项code", "type": "string", "describe": "(全局唯一)", "value": "{FNumber}", "parent": "referenceDataDetails" }, { "parent":"referenceDataDetails", "label":"是否启用", "field":"enabled", "type":"string", "value":"true" }, { "parent":"referenceDataDetails", { label: '自定义档案下的分类的编码', field: 'categoryBizCode', type: 'string', value: '{FUseOrgId_FNumber}' } ] } ] } ``` #### 数据转换过程 1. **提取源数据**: 从金蝶系统中提取客户信息,包括客户名称(FName)、客户编号(FNumber)以及使用组织编号(FUseOrgId_FNumber)。 2. **数据映射与转换**: 根据每刻API接口要求,将提取的数据字段映射到相应的位置。具体映射关系如下: - `bizCode` 固定值为 `"dp"`。 - `referenceDataDetails` 为一个数组,其中包含多个字段: - `name` 对应金蝶系统中的 `FName`。 - `bizCode` 对应金蝶系统中的 `FNumber`。 - `enabled` 固定值为 `"true"`。 - `categoryBizCode` 对应金蝶系统中的 `FUseOrgId_FNumber`。 3. **构建请求体**: 根据上述映射关系,构建符合每刻API接口要求的请求体。例如: ```json { “bizCode”: “dp”, “referenceDataDetails”: [ { “name”: “客户A”, “bizCode”: “C001”, “enabled”: “true”, “categoryBizCode”: “ORG001” }, { “name”: “客户B”, “bizCode”: “C002”, “enabled”: “true”, “categoryBizCode”: “ORG002” } ] } ``` #### 数据写入目标平台 通过轻易云数据集成平台,我们可以使用配置好的元数据和构建好的请求体,调用每刻API接口,将转换后的数据写入目标平台。具体步骤如下: 1. **配置HTTP请求节点**: 在轻易云平台中,添加一个HTTP请求节点,并配置其URL为 `/api/openapi/reference/data/detail`,请求方法为POST。 2. **设置请求头**: 根据每刻API接口要求,设置必要的请求头信息,例如Content-Type等。 3. **发送请求**: 将构建好的请求体作为HTTP请求的body,通过HTTP请求节点发送到每刻平台。 4. **处理响应**: 接收并处理每刻平台返回的响应信息,根据响应结果判断数据写入是否成功,并进行相应处理。 通过以上步骤,我们实现了从金蝶客户到每刻自定义档案的数据转换与写入。这一过程不仅确保了不同系统间的数据无缝对接,还提升了业务流程的自动化程度和效率。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)