轻易云平台在ETL流程中的应用:转换金蝶数据为旺店通格式

  • 轻易云集成顾问-杨嫦
### 金蝶云星空数据集成到旺店通·企业奇门:案例解析 在本篇文章中,我们将详细拆解一个实际运行的系统对接集成案例,即如何实现金蝶云星空的数据集成到旺店通·企业奇门平台,具体任务为将“金蝶分布式调入单”转换并写入为“旺店通其他入库单(组织内)”。该方案主要依赖于API接口操作,包括从金蝶云星空获取数据的executeBillQuery接口和向旺店通·企业奇门推送数据的wdt.stockin.order.push接口。 首先,我们需要确保每条从金蝶云星空提取的数据都能顺利抓取,不漏单。为此,通过定时可靠地调用executeBillQuery接口,批量获取待处理业务记录,并针对分页和限流问题进行合理设计,确保大规模数据传输过程中不出现遗漏或超时现象。 其次,在大量数据快速写入到旺店通·企业奇门平台前,需要解决两个关键技术点:第一是两者之间的数据格式差异;第二是如何高效、稳定地完成批量写入操作。为了适应不同平台间的数据结构特性,我们进行了精细化的字段映射及类型转换。此外,为了防止网络波动和异常中断带来的影响,实现了自动重试机制,使得任何失败操作都有机会进行恢复与重试,从而达到可靠性要求。 这个案例不仅展示了繁复节点间流程接力和多种监控机制下的大型系统集成,还揭示了在同一业务场景下通过定制化策略实现最佳性能输出的重要思路。在后续章节中,将深入介绍每个组件模块及其交互细节,以供实践参考。 ![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/D4.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口是关键的第一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`,获取并加工数据。 #### 配置元数据 首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是元数据配置的详细信息: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FSTKTRSINENTRY_FEntryID", "pagination": { "pageSize": 500 }, "idCheck": true, "request": [ {"field":"FSTKTRSINENTRY_FEntryID","label":"FEntryID","type":"string","value":"FSTKTRSINENTRY_FEntryID"}, {"field":"FID","label":"实体主键","type":"string","value":"FID"}, {"field":"FBillNo","label":"单据编号","type":"string","value":"FBillNo"}, {"field":"FDocumentStatus","label":"单据状态","type":"string","value":"FDocumentStatus"}, {"field":"FStockOrgID_FNumber","label":"调入库存组织","type":"string","value":"FStockOrgID.FNumber"}, {"field":"FDate","label":"日期","type":"string","value":"FDate"}, {"field":"FBillTypeID","label":"单据类型","type":"string","value":"FBillTypeID"}, {"field":"FTransferDirect","label":"调拨方向","type":"string","value":"FTransferDirect"}, {"field":"FNOTE","label":"备注","type":"string","value":"FNOTE"}, {"field":"FCreateDate","label":"创建日期","type":"string","value":"FCreateDate"}, {"field":"FApproveDate","label":"审核日期","type":"string","value":"FApproveDate"}, {"field":"FTransferMode","label":"调拨方式","type":"string","value":"FTransferMode"}, {"field":...}, ... ], "otherRequest": [ {"field":...}, ... ] } ``` #### 调用API接口 在轻易云数据集成平台中,调用API接口需要按照以下步骤进行: 1. **设置请求参数**:根据元数据配置中的`request`字段,设置请求参数。每个字段都需要对应金蝶云星空中的具体字段。 2. **分页处理**:由于可能存在大量数据,需要进行分页处理。通过`pagination`字段设置每页的数据量(如500条)。 3. **过滤条件**:使用`FilterString`字段设置过滤条件,例如按时间范围和组织编号过滤。 4. **字段选择**:通过`FieldKeys`字段选择需要查询的字段集合。 以下是一个示例请求体: ```json { "FormId": "STK_TRANSFERIN", "FieldKeys": ["FID", "FBillNo", ...], "FilterString": "FApproveDate>='2023-01-01' and FStockOrgID.fnumber = '7000' and FSrcStockID.FNumber = '1082'", "Limit": 500, "StartRow": 0 } ``` #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的要求。主要包括以下几个步骤: 1. **字段映射**:将源系统中的字段映射到目标系统中对应的字段。例如,将金蝶云星空中的`FBillNo`映射到旺店通中的订单编号。 2. **数据格式转换**:根据目标系统的要求,对日期、数值等字段进行格式转换。例如,将日期格式从“YYYY-MM-DD”转换为“DD/MM/YYYY”。 3. **异常处理**:对缺失或异常的数据进行处理,如填充默认值或丢弃无效记录。 #### 示例代码 以下是一个示例代码片段,用于调用API并处理返回的数据: ```python import requests import json # 设置请求URL和头部信息 url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} # 构建请求体 payload = { 'FormId': 'STK_TRANSFERIN', 'FieldKeys': ['FID', 'FBillNo', ...], 'FilterString': "FApproveDate>='2023-01-01' and FStockOrgID.fnumber = '7000' and FSrcStockID.FNumber = '1082'", 'Limit': 500, 'StartRow': 0 } # 发起POST请求 response = requests.post(url, headers=headers, data=json.dumps(payload)) # 检查响应状态码 if response.status_code == 200: data = response.json() # 数据清洗与转换 for record in data: record['订单编号'] = record['FBillNo'] record['日期'] = convert_date_format(record['FDate']) # 更多清洗与转换逻辑... else: print(f"请求失败,状态码: {response.status_code}") ``` #### 总结 通过轻易云数据集成平台,我们可以高效地调用金蝶云星空接口`executeBillQuery`,获取并加工所需的数据。这一步骤为后续的数据写入和业务处理奠定了坚实基础。在实际操作中,灵活运用元数据配置和API调用技术,可以极大提升数据集成的效率和准确性。 ![打通企业微信数据接口](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将金蝶分布式调入单转换为旺店通其他入库单 在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何利用轻易云数据集成平台,将金蝶分布式调入单的数据转换为旺店通·企业奇门API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 在数据集成生命周期的第一步,我们已经完成了从源系统(金蝶)中提取并清洗数据。现在我们进入第二步:数据转换与写入。 #### 数据转换与写入 为了将金蝶分布式调入单的数据转换为旺店通其他入库单,我们需要配置元数据,并使用轻易云提供的ETL工具进行处理。以下是具体的元数据配置: ```json { "api": "wdt.stockin.order.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo,FSrcStockID_FNumber,FDestStockID_FNumber", "bodyName": "details_list", "bodySum": ["F_UHZG_JJQty"], "header": ["FBillNo", "FSrcStockID_FNumber", "FDestStockID_FNumber", "FStockID", "FSupplierId", "FNOTE", "FSUPPLIERID_FNumber"], "body": ["FLOT", "FMaterialId", "FQty", "FPrice", "FMaterialID_FNumber", "FDestStockID_FNumber", "FEntryNote", "F_UHZG_JJQty"] }, ... } ``` 该配置文件定义了如何将源系统的数据字段映射到目标系统(旺店通)的字段。以下是主要字段的映射关系: - `outer_no` 映射到 `{FBillNo}`,表示外部单号。 - `warehouse_no` 映射到 `{FDestStockID_FNumber}`,表示仓库编号。 - `remark` 映射到 `{FNOTE}`,表示备注。 - `goods_list` 是一个数组节点,其中包含多个子字段,如 `spec_no`、`stockin_num`、`src_price` 等,这些子字段分别映射到源系统中的相应字段。 #### 请求参数配置 为了使API请求能够成功执行,我们需要配置请求参数: ```json [ { "field": "outer_no", "label": "外部单号", ... }, { ... }, { ... } ] ``` 这些请求参数确保了我们能够正确地将数据从源系统传输到目标系统。 #### 数据处理逻辑 在数据处理过程中,我们需要注意以下几点: 1. **字段合并**:通过配置 `"method": "merge"` 和 `"field"` 参数,我们可以将多个字段合并为一个复合键,用于唯一标识一条记录。 2. **数组节点处理**:对于 `goods_list` 节点中的每个子字段,需要确保其值正确映射。例如,`spec_no` 对应于 `{details_list.FMaterialID_FNumber}`,而 `stockin_num` 对应于 `{details_list.F_UHZG_JJQty}`。 3. **特殊字段处理**:如税率等特殊字段,需要根据业务需求进行额外处理。 #### API接口调用 最后,通过调用 `wdt.stockin.order.push` API接口,将处理后的数据推送到旺店通平台。以下是一个示例请求体: ```json { ... } ``` 该请求体包含了所有必要的字段和节点,确保目标平台能够正确接收和解析数据。 通过以上步骤,我们成功地将金蝶分布式调入单的数据转换为旺店通其他入库单,并写入目标平台。这一过程充分利用了轻易云数据集成平台的强大功能,实现了不同系统间的数据无缝对接。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/T14.png~tplv-syqr462i7n-qeasy.image)