ETL转换与写入简道云API的技术探索

  • 轻易云集成顾问-曾平安
### 金蝶云星空到简道云的高效数据集成案例分享 在某大型制造企业实施的“金蝶-供应商--->空操作”项目中,我们成功将金蝶云星空的数据无缝集成到简道云。本文将详细介绍该系统对接过程中的技术要点和实现方法。 **确保集成金蝶云星空数据不漏单** 为了保证从金蝶云星空获取的数据不被遗漏,首先我们调用了其提供的`executeBillQuery`接口。这一API可以精准地提取特定业务范围内所有相关记录,同时支持多种查询条件,以确保获取到每一个符合条件的数据条目。通过设置定时任务,持续监控和抓取不同时间段的新数据,进一步提高了数据采集的覆盖面。 **处理分页与限流问题** 大规模数据处理常常需要面对分页和限流的问题。针对这一情况,在使用`executeBillQuery`接口时,我们设计了一套自动化的分页机制,根据实际返回结果动态调整页码,从而完整获取所有分片数据。同时,为了应对API访问频率限制,每次调用之间合理安排间隔时间,并且在超过额度后设立重试机制,避免因频繁请求导致服务阻塞。 **大量数据快速写入至简道云** 从金蝶云星空顺利获取到大批量订单信息后,需要迅速、高效地写入至目标平台——简道云。为此,我们结合轻易云的平台特性,通过优化并行处理策略,将多个请求拆分并发执行,大幅缩减整体传输所需时间。此外,对每批次上传的数据进行了预先校验和格式转换,以匹配简道云接受标准,实现高效稳定的数据同步。 **异常处理与错误重试机制** 系统集成过程中难免发生意外错误,为此构建健全的异常捕获与重试机制尤为重要。当检测到某一次API调用失败,如网络超时或响应不符期望值,会立即触发预定义重试逻辑,包括递增等待时间、多次尝试等措施。同时,通过记录日志来跟踪细节,有助于事后分析和问题定位,提高整体方案稳定性及可靠性。 如上所述,这一系列核心技术手段有效保障了从金蝶云星空向简道**** ![钉钉与ERP系统接口开发配置](https://pic.qeasy.cloud/D36.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取供应商相关数据并进行初步加工。 #### 接口配置与请求参数 首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据提供的元数据配置,接口采用POST方法进行调用,主要用于查询(effect: QUERY)。以下是请求参数的详细说明: - **FSupplierId**: 供应商ID - **FNumber**: 编码 - **FName**: 名称 - **FCreateOrgId_FNumber**: 创建组织 - **FUseOrgId_FNumber**: 使用组织 - **FDescription**: 描述 - **FShortName**: 简称 - **FMinPOValue**: 最小订单量 - **FCountry_FNumber**: 国家 - **FBusinessStatus**: 业务状态 - **FProvincial_FNumber**: 地区 - **FWebSite**: 公司网址 - **FCustomerId_FNumber**: 对应客户 - **FPayCurrencyId_FNumber**: 结算币别 - **FSettleTypeId_FNumber**: 结算方式 - **FPayCondition_FNumber**: 付款条件 - **FSettleId_FNumber**: 结算方 - **FPayAdvanceAmount**: 单次预付额度 - **FChargeId_FNumber**: 收款方 - **FInvoiceType**: 发票类型 - **FProviderId_FNumber**: 供货方 - **FRegisterAddress**: 注册地址 - **FDeptId_FNumber**: 负责部门 - **FStaffId_FNumber**: 负责人 此外,还有一些其他请求参数,如分页参数、过滤条件等: ```json { "Limit": "{PAGINATION_PAGE_SIZE}", "StartRow": "{PAGINATION_START_ROW}", "TopRowCount": null, "FilterString": "FAuditDate>='{{LAST_SYNC_TIME|dateTime}}' and FUseOrgId.FNumber in ('102','109')", "FieldKeys": ["FSupplierId", "FNumber", "FName", ...], "FormId": "BD_Supplier" } ``` #### 调用接口获取数据 在轻易云数据集成平台上,我们可以通过配置上述参数来调用`executeBillQuery`接口。以下是一个示例请求体: ```json { "FormId": "BD_Supplier", "FieldKeys": [ "FSupplierId", "FNumber", "FName", ... ], "FilterString": "FAuditDate>='2023-01-01' and FUseOrgId.FNumber in ('102','109')", "Limit": 100, "StartRow": 0, ... } ``` 该请求体将会返回符合条件的供应商数据,包括供应商ID、编码、名称等字段。 #### 数据清洗与加工 获取到原始数据后,需要对其进行清洗和初步加工,以便后续的数据转换与写入步骤。以下是一些常见的数据清洗操作: 1. **字段重命名与映射** - 将原始字段名映射为目标系统所需的字段名。 - 示例:将`FSupplierId`映射为目标系统中的`SupplierID`。 2. **数据格式转换** - 将日期格式统一转换为目标系统所需的格式。 - 示例:将`FAuditDate`从字符串格式转换为日期对象。 3. **缺失值处理** - 对于必填字段,检查是否存在缺失值,并进行相应处理(如填充默认值或丢弃记录)。 - 示例:如果`FCountry_FNumber`为空,则填充默认国家代码。 4. **过滤无效数据** - 根据业务规则过滤掉不符合要求的数据记录。 - 示例:只保留业务状态为“有效”的供应商记录。 #### 实际案例分析 假设我们需要获取所有在2023年1月1日之后审核通过且使用组织编号为102或109的供应商信息,并将其导入到目标系统中。具体步骤如下: 1. 配置并发送API请求,获取原始数据。 2. 对返回的数据进行清洗和初步加工,包括字段映射、格式转换、缺失值处理和无效数据过滤。 3. 将清洗后的数据传递给下一阶段进行进一步处理(如数据转换与写入)。 通过以上步骤,我们可以高效地完成从金蝶云星空获取并加工供应商数据,为后续的数据集成工作打下坚实基础。这不仅提升了数据处理的效率,也确保了数据质量,为企业决策提供了可靠的数据支持。 ![用友BIP接口开发配置](https://pic.qeasy.cloud/S7.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入简道云API接口的技术案例 在数据集成的生命周期中,将源平台的数据转换为目标平台可接收的格式是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台将金蝶供应商数据通过ETL转换,最终写入简道云API接口。 #### 1. 数据请求与清洗 在进行ETL转换之前,首先需要从金蝶系统获取供应商数据。假设我们已经完成了这一阶段,并且获得了以下结构化数据: ```json { "FUseOrgId_FNumber": "ORG001", "FNumber": "SUP001", "FNAME": "供应商A", "FUseOrgId_FName": "组织A" } ``` #### 2. 数据转换与写入 接下来,我们将进入数据生命周期的第二步:将上述数据转换为简道云API接口能够接收的格式,并写入目标平台。元数据配置如下: ```json { "api": "空操作", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "_widget_1704877011053", "label": "使用组织编码", "type": "string", "describe": "111", "value": "{FUseOrgId_FNumber}", "parser": { "name": "ConvertObjectParser", "params": "value" } }, { "field": "_widget_1704877011054", "label": "编码", "type": "string", "describe": "111", "value": "{FNumber}", "parser": { "name": "ConvertObjectParser", "params": "value" } }, { "field": "_widget_1602205469196", "label": "供应商名称", "type": "string", "value": "{FNAME}", "parser": { "name": 'ConvertObjectParser', 'params': 'value' } }, { 'field': '_widget_1704877011055', 'label': '使用组织', 'type': 'string', 'value': '{FUseOrgId_FName}', 'parser': { 'name': 'ConvertObjectParser', 'params': 'value' } } ], 'otherRequest': [ { 'field': 'is_start_workflow', 'label': 'is_start_workflow', 'type': 'string', 'describe': '111', 'value': 'true' }, { ... } ] } ``` #### 3. 元数据解析与配置 在上述配置中,我们定义了多个字段,这些字段将从源数据中提取并转换为目标API所需的格式。 - **使用组织编码** (`_widget_1704877011053`): 对应 `FUseOrgId_FNumber` - **编码** (`_widget_1704877011054`): 对应 `FNumber` - **供应商名称** (`_widget_1602205469196`): 对应 `FNAME` - **使用组织** (`_widget_1704877011055`): 对应 `FUseOrgId_FName` 每个字段都使用了 `ConvertObjectParser` 解析器,该解析器负责将源字段值直接映射到目标字段。 #### 4. API调用与数据写入 根据元数据配置,构造出最终的API请求体: ```json { "_widget_1704877011053":"ORG001", "_widget_1704877011054":"SUP001", "_widget_1602205469196":"供应商A", "_widget_1704877011055":"组织A", ... } ``` 通过轻易云平台发起POST请求,将上述JSON对象发送至简道云API接口。其他参数如 `is_start_workflow`, `is_start_trigger`, `appId`, 和 `entryId` 也会一同发送,以确保业务流程的正确触发和执行。 ```http POST /api/空操作 HTTP/1.1 Host: jdy.com Content-Type: application/json Authorization: Bearer <token> { "_widget_1704877011053":"ORG001", "_widget_1704877011054":"SUP001", "_widget_1602205469196":"供应商A", "_widget_1704877011055":"组织A", ... } ``` #### 5. 数据验证与监控 轻易云平台提供实时监控功能,可以实时查看数据流动和处理状态,确保每个环节都清晰可见。如果出现错误,可以根据日志和监控信息快速定位并修复问题。 通过以上步骤,我们成功地将金蝶系统中的供应商数据经过ETL转换后写入简道云,实现了不同系统间的数据无缝对接。这不仅提高了业务效率,也确保了数据的一致性和准确性。 ![如何对接用友BIP接口](https://pic.qeasy.cloud/T4.png~tplv-syqr462i7n-qeasy.image)