使用轻易云进行ETL转换:源数据到金蝶云星空API接口的全过程

  • 轻易云集成顾问-何语琴
### 管易采购入库单-->金蝶分步式调入单数据集成案例分析 在本文中,我们将深入探讨管易云的"采购入库单"如何通过轻易云数据集成平台高效对接至金蝶云星空系统中的“分步式调入单”。此方案名为“管易采购入库单-->金蝶分步式调入单(合格品采购入库单对接分步式调入单)--手工处理”。 首先,针对这一集成任务,我们需要处理的是从管易云接口`gy.erp.purchase.arrive.get`获取到的采购入库数据,并借助轻易云平台,将这些数据准确无误地传输至金蝶云星空,通过其API `batchSave`进行批量写入操作。整个过程中,我们不仅要确保每条数据不漏掉,还要保证其质量和格式符合目标系统要求。 #### 数据获取与转换 利用管易云提供的API接口`gy.erp.purchase.arrive.get`,我们可以定时可靠地抓取最新的采购订单信息。由于轻易云支持自定义的数据转换逻辑和可视化的数据流设计工具,我们能够灵活地实现复杂业务需求,比如将源系统中多级嵌套的数据进行平铺或者重组,以吻合目标系统所需格式。另外,在面对分页及限流问题时,可以通过设置合理的请求频率和限额控制策略来规避可能产生的问题。 #### 数据写入与监控 在完成数据转换后,需要将处理后的有效条目使用金蝶云星空的API `batchSave`批量写入到目标数据库。在这一步骤中,高吞吐量的数据写能力显得尤为关键,因为它决定了大量订单信息能否快速而稳定地进入金蝶系统。同时,为预防异常情况发生以及提高错误发现效率,集中监控和告警功能对实时跟踪当前任务执行状态非常重要。一旦检测到任何偏差或故障,即刻启动重试机制,对未成功操作予以补充处理。此外,最后还需确保所有上传记录都完整保存,以备审计或进一步分析用途。 透过这次技术分享,希望读者能更清晰了解如何借助高度适应性的平台特性,有效实现企业间复杂业务场景下的数据无缝衔接,从而全面提升信息化管理水平。 ![打通企业微信数据接口](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image) ### 调用管易云接口gy.erp.purchase.arrive.get获取并加工数据的技术案例 在轻易云数据集成平台中,调用源系统管易云接口`gy.erp.purchase.arrive.get`是数据集成生命周期的第一步。本文将深入探讨如何通过该接口获取采购入库单数据,并进行必要的数据清洗和加工。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,以下是关键参数及其含义: - **API名称**: `gy.erp.purchase.arrive.get` - **请求方法**: `POST` - **主要字段**: - `start_create`: 起始创建时间 - `end_create`: 结束创建时间 - `start_approve`: 起始审核时间 - `end_approve`: 结束审核时间 - `warehouse_code`: 仓库编码 - `supplier_code`: 供应商编码 - `code`: 单据编号 - `status`: 状态,固定值为`1` - `start_modify`: 起始修改时间,动态值为上次同步时间`{{LAST_SYNC_TIME|datetime}}` - `end_modify`: 结束修改时间,动态值为当前时间`{{CURRENT_TIME|datetime}}` - `has_cancel_data`: 是否包含取消数据,固定值为`false` - `has_account`: 是否已记账 此外,还有分页参数: - **分页大小**: 默认值为`{PAGINATION_PAGE_SIZE}` - **起始页码**: 默认值为`{PAGINATION_START_PAGE}` #### 数据请求与清洗 在实际操作中,我们需要通过上述配置向管易云发起请求,以获取采购入库单数据。以下是一个示例请求体: ```json { "start_create": "2023-01-01T00:00:00", "end_create": "2023-12-31T23:59:59", "start_approve": "2023-01-01T00:00:00", "end_approve": "2023-12-31T23:59:59", "warehouse_code": "WH001", "supplier_code": "SUP001", "code": "", "status": "1", "start_modify": "{{LAST_SYNC_TIME|datetime}}", "end_modify": "{{CURRENT_TIME|datetime}}", "has_cancel_data": "false", "has_account": "", "page_size": "{PAGINATION_PAGE_SIZE}", "page_no": "{PAGINATION_START_PAGE}" } ``` 在接收到响应后,需要对数据进行清洗和加工。例如,过滤掉不符合条件的数据、转换日期格式、处理缺失字段等。 #### 数据转换与写入 清洗后的数据需要转换成目标系统所需的格式,并写入到目标系统。在本案例中,我们将采购入库单数据转换为金蝶分步式调入单的数据格式。以下是一个示例转换逻辑: 1. **字段映射**:将管易云的字段映射到金蝶系统对应的字段。 2. **数据类型转换**:确保所有字段的数据类型符合目标系统要求。 3. **业务逻辑处理**:根据业务需求进行特定的数据处理,例如计算总金额、生成唯一标识等。 示例代码片段如下: ```python def transform_data(source_data): transformed_data = [] for record in source_data: transformed_record = { 'entry_id': record['id'], 'entry_code': record['code'], 'warehouse': record['warehouse_code'], 'supplier': record['supplier_code'], 'entry_date': convert_date_format(record['create_time']), 'status': map_status(record['status']), # 添加更多字段映射和处理逻辑... } transformed_data.append(transformed_record) return transformed_data def convert_date_format(date_str): # 实现日期格式转换逻辑 pass def map_status(status): # 实现状态映射逻辑 pass ``` #### 自动填充响应 根据元数据配置中的`autoFillResponse`属性,我们可以自动填充响应结果。这意味着在处理完每一批次的数据后,可以自动更新同步状态,并准备下一次请求所需的参数,如分页信息和时间戳。 通过上述步骤,我们完成了从调用源系统接口获取数据,到清洗、转换并写入目标系统的全过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![系统集成平台API接口配置](https://pic.qeasy.cloud/S9.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将源平台数据转换为金蝶云星空API接口格式 在数据集成的生命周期中,ETL(Extract, Transform, Load)过程是至关重要的一环。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,最终写入金蝶云星空API接口所能够接收的格式。 #### 元数据配置解析 在进行ETL转换时,元数据配置是关键。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号"}, {"field":"FStockOrgID","label":"调入库存组织","type":"string","describe":"调入库存组织","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FStockInOrgID from 65ecfea9-6416-381a-b85e-6f6cddd2cbd4 where FSrcBillNo={note}"}, {"field":"FOwnerTypeIdHead","label":"调入货主类型","type":"string","describe":"调入货主类型","value":"BD_OwnerOrg"}, {"field":"FOwnerIdHead","label":"调入货主","type":"string","describe":"调入货主","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"_findCollection find FOwnerInIdHead from 65ecfea9-6416-381a-b85e-6f6cddd2cbd4 where FSrcBillNo={note}"}, {"field":"FBillTypeID","label":"单据类型","type":"string","describe":"单据类型","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"FBDR01_SYS"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"{create_date}"}, {"field":"FTransferDirect","label":"调拨方向","type":"string","describe":"调拨方向","value":"GENERAL"}, {"field": "FBizType", "label": "业务类型", "type": "string", "value": "normal"}, {"field": "FTransferMode", "label": "调拨方式", "type": "string", "value": "INDIRECT"}, {"field": "FTransferBizType", "label": "调拨类型", "type": "string", "describe": "调拨类型", "value": "_findCollection find FTransferBizType from 65ecfea9-6416-381a-b85e-6f6cddd2cbd4 where FSrcBillNo={note}"}, // 省略部分字段... ], // 省略部分配置... } ``` #### 数据请求与清洗 在这个阶段,我们需要从源系统中提取原始数据,并对其进行清洗和预处理。例如,获取采购入库单的数据,并确保其格式和内容符合目标系统的要求。 1. **提取数据**:使用API或数据库查询,从源系统中获取采购入库单的数据。 2. **清洗数据**:对提取的数据进行必要的清洗,包括去除冗余信息、修正错误值等。 #### 数据转换与写入 接下来,我们需要将清洗后的数据转换为金蝶云星空API接口所能接受的格式,并通过API写入目标系统。 1. **字段映射与转换**: - 使用`ConvertObjectParser`等解析器,将源系统中的字段值转换为目标系统所需的格式。例如,将源系统中的库存组织ID转换为金蝶云星空中的库存组织ID。 - 使用`_findCollection`方法,根据特定条件查询并获取对应的值。例如,通过源单编号查询对应的库存组织ID。 2. **构建请求体**: 根据元数据配置,构建符合金蝶云星空API接口要求的请求体。以下是一个简化示例: ```json { "FormId": "STK_TRANSFERIN", "Operation": "BatchSave", // 省略部分字段... "Model": { // 主表信息 ... // 明细信息 ... } } ``` 3. **发送请求**: 使用HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口。确保请求头和认证信息正确无误。 ```python import requests url = 'https://api.kingdee.com/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.BatchSave' headers = { 'Content-Type': 'application/json', 'Authorization': 'Bearer <your_access_token>' } response = requests.post(url, json=request_body, headers=headers) if response.status_code == 200: print('Data successfully written to Kingdee Cloud') else: print('Failed to write data:', response.text) ``` #### 实际案例应用 假设我们需要将管易采购入库单的数据对接到金蝶分步式调入单。在这个过程中,我们需要按照上述步骤进行操作: 1. 提取管易采购入库单的数据。 2. 清洗并转换这些数据,使其符合金蝶分步式调入单的格式要求。 3. 构建并发送HTTP POST请求,将转换后的数据写入金蝶云星空。 通过这种方式,我们可以实现不同系统间的数据无缝对接,大大提升了业务处理效率和透明度。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T17.png~tplv-syqr462i7n-qeasy.image)