轻易云与金蝶云星空的数据集成技术详解

  • 轻易云集成顾问-冯潇
### 金蝶云星空数据集成案例分享:销售出库单-(分销&京东&唯品&虚拟除外)手表汇总_copy 在企业日常业务处理过程中,确保数据流动的高效性和准确性至关重要。本文将介绍利用轻易云数据集成平台,实现金蝶云星空与金蝶云星空之间的数据无缝对接。本次案例侧重于销售出库单—(分销&京东&唯品会&虚拟除外)手表汇总_copy方案的实际运行情况。 为了实现这一目标,我们精细化设计了相应的数据集成流程。在此过程中,通过executeBillQuery API从源系统中定时抓取所需数据,并利用batchSave API批量写入目标系统。这不仅涵盖了大规模数据快速交换,还保证了每条记录都能被可靠地处理,从而避免可能出现的数据遗漏问题。 一个显著的特性是我们采用了自定义的数据转换逻辑,以满足特定业务需求和适应不同系统间的数据结构差异。通过可视化的数据流设计工具,对整个流程进行直观管理,有效降低配置复杂度。 实时监控和告警机制起到了关键作用,帮助我们及时发现并解决任何潜在的问题。此外,在面对分页与限流挑战时,我们引入了一套完善的异常处理与错误重试机制,进一步提升了任务执行的稳定性及可靠性。最后,每一次操作都会被详细记录到日志中,使得整个过程透明且可追溯,为后续排错优化提供依据。 本篇将逐步揭示这一技术方案具体实施步骤及实践经验,希望为相关领域从业者提供参考。 ![如何对接金蝶云星空API接口](https://pic.qeasy.cloud/D33.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空接口`executeBillQuery`来获取销售出库单的数据,并进行初步加工。 #### 接口配置与请求参数 调用金蝶云星空的`executeBillQuery`接口需要配置一系列请求参数,这些参数决定了我们要获取的数据范围和格式。以下是关键的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FBillNo", "id": "FEntity_FENTRYID", "pagination": {"pageSize": 500}, "idCheck": true, "formatResponse": [{"old":"FApproveDate","new":"FApproveDate_new","format":"date"}], "request": [ {"field":"FBillTypeID_FNumber","label":"单据类型","type":"string","describe":"单据类型","value":"FBillTypeID.FNumber"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FDate","label":"日期","type":"string","describe":"日期","value":"FDate"}, {"field":"FApproveDate","label":"审核时间","type":"string","describe":"日期","value":"FApproveDate"}, // ...(省略其他字段) ], "otherRequest": [ {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"}, {"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"}, {"field":"FilterString","label":"过滤条件","type":"string","describe":"","value":"","mapping":"","mappingDirection":""}, {"field":"FieldKeys","label":"需查询的字段key集合","type":"array"} ] } ``` #### 请求示例 为了调用该接口,我们需要构建一个HTTP POST请求,包含上述配置中的字段。以下是一个示例请求体: ```json { "FormId": "SAL_OUTSTOCK", "FieldKeys": ["FBillNo", "FDate", "FApproveDate", ...], // 包含所有需要查询的字段 "FilterString": "FBillNo='XSCKD8758516'", "Limit": 500, "StartRow": 0 } ``` #### 数据清洗与转换 在获取到原始数据后,我们需要对其进行清洗和转换,以便后续处理。以下是几个关键步骤: 1. **日期格式转换**:将审核时间`FApproveDate`转换为新的字段`FApproveDate_new`,并格式化为标准日期格式。 2. **字段重命名**:根据业务需求,对部分字段进行重命名,以便更好地理解和使用。例如,将`FBillTypeID_FNumber`重命名为`单据类型`。 3. **分页处理**:由于数据量可能较大,需要进行分页处理,每次请求500条记录,并根据返回结果继续请求下一页。 #### 实现代码示例 以下是一个Python示例代码,展示如何调用该接口并处理返回的数据: ```python import requests import json # 配置请求URL和头信息 url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} # 构建请求体 payload = { 'FormId': 'SAL_OUTSTOCK', 'FieldKeys': ['FBillNo', 'FDate', 'FApproveDate', ...], 'FilterString': "FBillNo='XSCKD8758516'", '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['FApproveDate_new'] = format_date(record['FApproveDate']) # 重命名其他字段... else: print(f"Error: {response.status_code}") def format_date(date_str): # 日期格式转换函数实现... ``` #### 总结 通过上述步骤,我们成功调用了金蝶云星空的`executeBillQuery`接口,获取了销售出库单的数据,并进行了初步的清洗和转换。这一步骤为后续的数据处理和写入奠定了基础。在实际应用中,可以根据具体业务需求进一步优化和扩展数据处理逻辑。 ![钉钉与CRM系统接口开发配置](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。以下是详细的技术实现过程。 #### 1. 数据提取与转换 首先,我们从源系统中提取销售出库单的数据。提取的数据包括单据类型、日期、发货组织、销售组织、客户信息等。使用轻易云提供的元数据配置,可以将这些数据映射到金蝶云星空API所需的字段格式。 ```json { "field": "FBillTypeID", "label": "单据类型", "type": "string", "describe": "单据类型", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "XSCKD01_SYS" } ``` 以上配置将源系统中的单据类型字段转换为金蝶云星空所需的`FBillTypeID`字段,并使用`ConvertObjectParser`进行解析。 #### 2. 数据清洗与格式化 在数据清洗阶段,我们需要确保所有字段都符合目标系统的要求。例如,将日期字段格式化为标准日期格式: ```json { "field": "FDate", "label": "日期", "type": "string", "describe": "日期", "value": "{FDate}" } ``` 此外,对于一些复杂的映射关系,例如客户信息,需要使用映射配置来确保数据的一致性: ```json { "field": "FCustomerID", "label": "客户", "type": "string", "describe": "基础资料", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "{FCustomerID_FNumber}", "mapping": { "target": "63556c380bc98d4c8e11c30d", "direction": "positive" } } ``` #### 3. 数据加载与写入 完成数据清洗和格式化后,我们将数据加载到目标系统金蝶云星空。通过调用其API接口实现数据写入。以下是具体的API请求配置: ```json { "api":"batchSave", "method":"POST", ... } ``` 其中,`api`指定了调用的API名称,`method`指定了HTTP请求方法为POST。 请求体包含了头部信息和明细信息: ```json "header":[ ... ], "body":[ ... ] ``` 例如,头部信息中的单据编号和日期: ```json { ... { “label”: “单据编号”, “field”: “FBillNo”, “type”: “string”, “value”: “{FBillNo}” }, { “label”: “日期”, “field”: “FDate”, “type”: “string”, “value”: “{FDate}” } ] ``` 明细信息中的物料编码和实发数量: ```json { ... { “field”: “FMaterialID”, “label”: “物料编码”, “type”: “string”, “describe”:“基础资料”, “parser”: { ”name“: ”ConvertObjectParser“, ”params“: ”FNumber“ }, ”value“: ”{{details.FMaterialID_FNumber}}“, ”parent“: ”FEntity“ }, { ”field“: ”FRealQty“, ”label“: ”实发数量“, ”type“: ”string“, ”describe“: ”数量“, ”value“: ”{{details.FRealQty}}“ parent:“ FEntity” } ] ``` #### API调用示例 最终,通过构建完整的请求体并调用金蝶云星空API,实现数据写入: ```json { ... { field:"FormId", label:"业务对象表单Id", type:"string", describe:"必须填写金蝶的表单ID如:PUR_PurchaseOrder", value:"SAL_OUTSTOCK" }, { field:"Operation", label:"执行的操作", type:"string", value:"Save" }, ... } ``` 通过上述步骤,我们成功地将源平台的数据经过ETL转换后,写入到目标平台金蝶云星空,实现了不同系统间的数据无缝对接。这不仅提高了数据处理效率,还保证了数据的一致性和准确性。 ![如何对接企业微信API接口](https://pic.qeasy.cloud/T16.png~tplv-syqr462i7n-qeasy.image)