使用轻易云实现金蝶云数据ETL与写入

  • 轻易云集成顾问-冯潇
### 金蝶云星空数据集成案例:委外领料-其他出库单 在本次技术方案中,我们将探讨如何高效地实现金蝶云星空系统之间的数据集成,具体应用于"委外领料-其他出库单"的处理。通过对API接口的深入使用和轻易云数据集成平台的全面管理功能,我们不仅确保了大量数据能快速可靠地写入目标系统,还保障了整个流程中的数据质量和监控。 首先,让我们简要介绍一下关键技术组件。在这一方案中,`executeBillQuery` API用于从金蝶云星空获取订单数据,而`batchSave` API则负责将处理后的数据批量写入目的端。针对海量并发请求,通过轻易云的数据流设计工具,可以直观且便捷地配置各个节点,并实时监控任务执行情况。 在实际操作过程中,我们采用了一些核心特性: 1. **支持自定义数据转换逻辑**:保证源系统的字段与目标系统完美匹配。例如,将委外领料单中的编码格式按需转化为其他出库单所需要求。 2. **高吞吐量的数据写入能力**:借助轻易云优化过的数据传输通道,实现每秒数千条记录无缝对接到金蝶云星空,提高整体效率。 3. **集中监控和告警系统**:设置实时告警策略,当检测到异常情况时及时通知相关人员进行处理,同时提供详细日志以便问题追溯与分析。 为了更好地适应业务复杂多变的需求,本次实施还特别注意了以下几点: 1. **分页与限流机制**:考虑到API性能瓶颈,通过合理设计每次请求的数据页大小及频率,有效避免因超负荷访问导致服务不可用的问题。 2. **错误重试机制**:当出现偶发性错误时,如网络波动或短暂服务停滞,可以自动尝试重新提交未成功的数据包,确保最终的一致性。 3. **定制化映射规则**:利用灵活的映射模板,根据不同类型订单属性进行差异化处理,使得两套金蝶云星空系统间的信息能够精准对应。 以上这些措施不仅显著提高了我们的部署效率,也为企业日常经营活动提供了强有力的技术支撑。在接下来的章节中,我们会更加详细讲解各环节具体实现方法,包括代码实现、参数配置以及一些实战经验总结。 ![打通企业微信数据接口](https://pic.qeasy.cloud/D37.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是关键的第一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,以获取委外领料-其他出库单的数据,并进行初步加工。 #### 配置元数据 首先,我们需要配置元数据,以便正确地调用金蝶云星空的API接口。以下是元数据配置的详细内容: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "Fentity_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"Fentity_FEntryID","label":"Fentity_FEntryID","type":"string","describe":"Fentity_FEntryID","value":"Fentity_FEntryID"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","describe":"单据状态","value":"FDocumentStatus"}, {"field":"FApproverid_FName","label":"审核人_名称","type":"string","describe":"审核人_名称","value":"FApproverid.FName"}, {"field":"FApproveDate","label":"审核日期","type":"string","describe":"审核日期","value":"FApproveDate"}, {"field":"FModifierId_FName","label":"修改人_名称","type":"string","describe":"修改人_名称","value":"FModifierId.FName"}, {"field":"FCreateDate","label":"创建日期","type":"string","describe":"创建日期","value":"FCreateDate"}, {"field":"FCreatorId_FName","label":"创建人_名称","type":"string","describe":"创建人_名称","value":"FCreatorId.FName"}, {"field":"FModifyDate","label":"修改日期","type":"string","describe":"修改日期","value":"FModifyDate"}, {"field":... (省略部分字段) ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field":... (省略部分字段) ] } ``` #### 调用API接口 在配置好元数据后,我们可以通过轻易云平台发起对金蝶云星空`executeBillQuery`接口的调用。以下是一个示例请求: ```json { "FormId": "SUB_PickMtrl", "FieldKeys": [ ... (省略部分字段) ], "FilterString": "", ... (省略部分字段) } ``` 在这个请求中,`FormId`指定了业务对象表单ID为`SUB_PickMtrl`,而`FieldKeys`则包含了我们需要查询的字段集合。 #### 数据清洗与转换 获取到原始数据后,我们需要对其进行清洗和转换,以便后续处理和分析。以下是一些常见的数据清洗和转换操作: 1. **去除无效数据**:过滤掉不符合业务需求的数据,例如状态为作废或未审核的数据。 2. **格式转换**:将日期、金额等字段转换为标准格式。 3. **字段映射**:根据业务需求,将原始字段映射到目标系统所需的字段。 例如,对于日期字段,可以使用以下代码进行格式转换: ```python import datetime def convert_date(date_str): return datetime.datetime.strptime(date_str, '%Y-%m-%d').strftime('%d/%m/%Y') ``` #### 分页处理 由于API返回的数据量可能较大,需要进行分页处理。我们可以通过设置分页参数来控制每次请求返回的数据量。例如: ```json { ... (省略部分字段), "Limit": 500, "StartRow": start_row_index } ``` 在每次请求后,根据返回结果更新`start_row_index`,直到所有数据都被获取完毕。 #### 数据写入目标系统 最后,将清洗和转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口或直接写入数据库。在此过程中,需要确保数据的一致性和完整性。 例如,可以使用以下代码将处理后的数据写入数据库: ```python import sqlite3 def write_to_db(data): conn = sqlite3.connect('example.db') cursor = conn.cursor() for record in data: cursor.execute("INSERT INTO target_table VALUES (?, ?, ?)", (record['FBillNo'], record['FDate'], record['FAmount'])) conn.commit() conn.close() ``` 通过以上步骤,我们完成了从调用源系统接口获取数据,到清洗、转换并写入目标系统的整个过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台实现委外领料-其他出库单的ETL转换与写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们需要将源平台的数据进行ETL转换,使其符合目标平台金蝶云星空API接口的要求,并最终写入目标平台。以下是详细的技术实现步骤和关键配置。 #### 1. 数据请求与清洗 首先,我们从源平台请求数据并进行初步清洗,确保数据完整性和一致性。由于本文重点在于ETL转换和写入过程,这部分内容简要提及。 #### 2. 数据转换与写入 ##### 2.1 配置元数据 根据提供的元数据配置,我们需要将源平台的数据字段映射到金蝶云星空API接口所需的字段格式。以下是关键字段及其配置解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FDate", "bodyName": "details", "bodySum": ["FActualQty"], "header": ["FBillNo", "FDate", "FSubOrgId_FNumber", "FStockOrgId_FNumber"], "body": ["FMaterialId_FNumber", "FActualQty", "FSubOrgId_FNumber"] }, ... } ``` - `api` 和 `method` 指定了调用金蝶云星空的批量保存接口。 - `idCheck` 表示是否进行ID校验。 - `operation` 定义了如何合并和处理数据,包括主表和子表字段。 ##### 2.2 请求字段映射 我们需要将源平台的数据字段映射到目标平台所需的字段格式。以下是部分关键字段及其映射规则: ```json [ { "field": "FBillNo", "label": "单据编号", ... "value": "{FBillNo}" }, { "field": "FStockOrgId", ... "value": "_function case when '{FStockOrgId_FNumber}' ='100' then '125' when '{FStockOrgId_FNumber}' ='202' then '120' else '126' end" }, ... ] ``` - `FBillNo` 对应源平台的单据编号。 - `FStockOrgId` 使用条件函数根据不同的库存组织编号转换为目标平台所需的编号。 ##### 2.3 子表明细信息映射 子表中的明细信息也需要进行相应的字段映射: ```json [ { ... "field": "FEntity", ... "children": [ { ... "field": "FMaterialId", ... "value": "{FMaterialId_FNumber}" }, { ... "field": "FQty", ... "value": "{FActualQty}" }, ... ] } ] ``` - `FMaterialId` 对应物料编码,需要转换为目标平台格式。 - `FQty` 对应实际数量。 ##### 2.4 其他请求参数配置 除了上述主要字段外,还需要配置一些其他请求参数,以确保数据能够正确写入目标平台: ```json [ { ... "field": "FormId", ... "value": "STK_MisDelivery" }, { ... "field": "IsAutoSubmitAndAudit", ... "value": false }, { ... ... } ] ``` - `FormId` 指定业务对象表单ID。 - `IsAutoSubmitAndAudit` 设置是否自动提交并审核。 #### 3. 数据写入 完成上述配置后,通过轻易云数据集成平台调用金蝶云星空API接口,将转换后的数据写入目标系统。此过程包括发送HTTP POST请求,传递已映射好的JSON数据结构,并处理返回结果以确认操作成功。 通过以上步骤,我们实现了从源平台到金蝶云星空API接口的数据ETL转换与写入,确保数据在不同系统间无缝对接,实现高效、透明的数据集成管理。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T12.png~tplv-syqr462i7n-qeasy.image)