通过轻易云平台实现数据的ETL转换与写入金蝶云星空

  • 轻易云集成顾问-姚缘
### 简道云数据集成到金蝶云星空的最佳实践案例分享 在现代企业信息化建设中,数据的高效、准确传递至关重要。本文将详细介绍如何将简道云中的“其他入库单”数据集成到金蝶云星空,实现业务流程的自动化与高效管理。本方案名为“简道云-其他入库单--->金蝶-其他入库单”,通过轻易云的数据集成平台,我们可以灵活、高效地配置和监控整个数据处理过程。 为了确保每一笔简道云中的“其他入库单”都能精准、不遗漏地写入到金蝶云星空,我们需要进行以下关键技术操作: 1. **调用简道云API接口**:首先,通过 `/api/v2/app/{app_id}/entry/{entry_id}/data` 接口从简道云获取所需的数据。该接口支持分页机制,使得当有大量记录时,可以分批次抓取,避免超出接口限流规定。 2. **处理分页与限流问题**:由于简道云API接口对返回的数据量有限制,因此我们必须合理利用分页参数,每次抓取固定数量的数据。同时,为防止触发限流限制,应设置合适的请求速率。 3. **数据格式转换**:鉴于简道云与金蝶云星空之间存在数据格式差异,在进行数据传输前,需要将获取到的数据经过规范化转换,以符合金蝶系统要求。这一步骤涉及字段映射及特殊值处理等细节工作,这里依托轻易平台提供丰富的ETL工具,大幅提升改造效率。 4. **大批量快速写入**:集成过程中,经常会遇到需要同步大量历史数据或高频交易流水。在这一环节,通过调用 `batchSave` API 可以实现批量快速录入;特别注意的是,为提高稳定性和安全性,还应搭配错误重试机制,即在出现异常时可重新执行操作以保证任务最终完成。 5. **实时监控与日志记录**:使用轻易平台内置的全透明可视化操作界面,可针对各个环节状态进行实时追踪,确保随时掌握任务进展。同时,本方案强调了详细日志记录功能,让运维人员能迅速定位并解决潜在问题,提高整体服务可靠性。 以上是本文章开头部分内容,引导您进入本案例中具体实施技术细节。接下来,将结合实际运行环境逐步分析如何通过这些步骤实现二者间无缝、高效、安全对接,从而进一步优化企业内部管理流程。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image) ### 调用简道云接口获取并加工数据 在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用简道云接口`/api/v2/app/{app_id}/entry/{entry_id}/data`来获取并加工数据。 #### 接口配置与调用 首先,我们需要配置并调用简道云提供的API接口。根据元数据配置,以下是具体的请求参数和方法: - **API路径**: `/api/v2/app/{app_id}/entry/{entry_id}/data` - **请求方法**: `POST` - **主要参数**: - `appId`: 应用ID - `entryId`: 表单ID - `fields`: 需要查询的字段,多个字段以逗号隔开 - `limit`: 每页返回数量,默认值为100 - `filter`: 过滤参数 以下是一个示例请求体: ```json { "appId": "642307c010703500087839ac", "entryId": "64a7b2656a020e0009870703", "fields": "_widget_1689138470701,_id", "limit": "100", "filter": { "rel": "and", "cond_1": { "field": "updateTime", "type": "datetime", "method": "range", "value": ["2023-01-01T00:00:00Z", "{{LAST_SYNC_TIME|datetime}}"] }, "cond_2": { "field": "flowState", "type": "flowState", "method": "in", "value": ["1"] } } } ``` #### 数据清洗与转换 在获取到原始数据后,下一步是对数据进行清洗和转换。这一步骤确保数据符合目标系统的要求,并且可以无缝对接。以下是一些常见的数据清洗与转换操作: 1. **字段映射**: 将简道云中的字段映射到目标系统中的相应字段。例如,将简道云中的`_widget_1689138470701`映射到金蝶系统中的`itemCode`。 2. **数据格式转换**: 将日期格式从ISO 8601转换为目标系统所需的格式。例如,将`2023-01-01T00:00:00Z`转换为`2023/01/01 00:00:00`。 3. **数据过滤**: 根据业务需求过滤掉不需要的数据。例如,只保留状态为“已审核”的记录。 以下是一个示例代码片段,用于将简道云的数据转换为金蝶系统所需的格式: ```python import datetime def transform_data(record): transformed_record = { 'itemCode': record['_widget_1689138470701'], 'entryId': record['_id'], 'updateTime': datetime.datetime.strptime(record['updateTime'], '%Y-%m-%dT%H:%M:%SZ').strftime('%Y/%m/%d %H:%M:%S'), 'flowState': record['flowState'] } return transformed_record # 示例原始记录 raw_record = { '_widget_1689138470701': 'ITEM001', '_id': '1234567890', 'updateTime': '2023-01-01T00:00:00Z', 'flowState': '1' } # 转换后的记录 transformed_record = transform_data(raw_record) print(transformed_record) ``` #### 自动填充响应与条件检查 在轻易云平台中,可以配置自动填充响应和条件检查,以确保数据处理的准确性和完整性。根据元数据配置,我们可以设置如下条件: ```json "autoFillResponse": true, "condition":[[{"field":"_widget_1602228805094","logic":"egt","value":"2024-04-01timestamp"}]] ``` 这意味着在处理过程中,如果某个字段满足特定条件(例如大于等于某个时间戳),则自动填充响应。这种机制有助于提高数据处理的效率和准确性。 #### 实时监控与调试 为了确保整个过程顺利进行,实时监控和调试是必不可少的。轻易云平台提供了全透明可视化的操作界面,可以实时监控数据流动和处理状态。一旦发现异常,可以迅速定位问题并进行修正。 通过以上步骤,我们可以高效地调用简道云接口获取并加工数据,为后续的数据写入和集成打下坚实基础。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/S26.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台金蝶云星空API接口所能接收的格式,并最终写入目标平台。本文将详细探讨这一过程中的关键技术和实现细节。 #### 配置元数据 在进行ETL转换之前,首先需要配置元数据。以下是元数据配置的详细说明: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "QTRKD01_SYS" }, { ... } ], ... } ``` #### 数据请求与清洗 在ETL过程的第一步,我们从源平台(如简道云)请求数据并进行清洗。这个步骤主要涉及到对原始数据进行初步处理,如去除无效数据、填补缺失值等。 ```json { "_widget_1704939983297": "...", "_widget_1689138470701": "...", "_widget_1602228805094|datetime": "...", ... } ``` #### 数据转换 接下来,我们将清洗后的数据进行转换,以符合金蝶云星空API接口的要求。以下是一些关键字段及其转换规则: 1. **单据类型(FBillTypeID)**: - 类型:字符串 - 描述:单据类型 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`QTRKD01_SYS` 2. **库存组织(FStockOrgId)**: - 类型:字符串 - 描述:组织 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`{_widget_1704939983297}` 3. **单据编号(FBillNo)**: - 类型:字符串 - 描述:单据编号 - 值:`{_widget_1689138470701}` 4. **日期(FDate)**: - 类型:字符串 - 描述:日期 - 值:`{{_widget_1602228805094|datetime}}` 5. **供应商(FSUPPLIERID)**: - 类型:字符串 - 值: `_findCollection find FNumber from ... where FName={_widget_1706800755390} FUseOrgId_FNumber={_widget_1704939983297}` - 转换器:`ConvertObjectParser` - 参数:`FNumber` 6. **货主类型(FOwnerTypeIdHead)**: - 类型:字符串 - 描述:多类别基础资料列表 - 值:`BD_OwnerOrg` 7. **货主(FOwnerIdHead)**: - 类型:字符串 - 描述:多类别基础资料 - 转换器:`ConvertObjectParser` - 参数:`FNumber` - 值:`{_widget_1704939983297}` 8. **备注(FNOTE)**: - 类型:字符串 - 描述:多行文本 - 值:`{_widget_1682315028057}` #### 明细信息处理 对于明细信息,我们需要处理每一条记录,并确保其格式符合目标平台的要求: ```json { "field": "FEntity", ... "children": [ { ... { "field": "FMATERIALID", ... "value": "{{_widget_1602228805384._widget_1682160091458}}" }, ... } ] } ``` #### 数据写入目标平台 完成所有转换后,使用配置好的API接口将数据写入金蝶云星空。以下是关键参数: - `FormId`: `STK_MISCELLANEOUS` - `IsVerifyBaseDataField`: `true` - `Operation`: `Save` - `IsAutoSubmitAndAudit`: `true` 使用POST方法调用API,将处理后的数据发送至金蝶云星空,实现最终的数据写入。 ```json { ... "operation": { ... "method": "batchArraySave" } } ``` 通过上述步骤,我们成功地将源平台的数据经过ETL转换后,写入到了金蝶云星空中。这一过程不仅保证了数据的一致性和完整性,还提高了系统间的数据交互效率。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/T6.png~tplv-syqr462i7n-qeasy.image)