ETL流程解析:从金蝶系统到轻易云数据集成的技术细节

  • 轻易云集成顾问-陈洁琳
### 金蝶云星空与轻易云集成平台的数据对接案例分享 在企业信息化系统中,数据的及时性和准确性尤为重要。本文将重点分享一个实际应用案例:如何通过轻易云数据集成平台,实现金蝶云星空系统物料信息的高效、稳定对接。本方案名为“查询金蝶物料(刷新金蝶许可用勿关闭)”。 #### 1. API接口调用 - executeBillQuery 首先,我们通过调用金蝶云星空提供的`executeBillQuery`接口来获取最新的物料信息,该API能够有效地支持高吞吐量的数据请求,从而确保大量数据能够快速被抓取。同时,为了应对接口调用可能出现的大量分页和限流问题,我们在设计时采用了批量处理策略,并结合定时任务进行可靠的定期抓取。这些机制保障了数据漏单现象得以避免。 #### 2. 数据写入过程 - 写入空操作 获取到的原始数据需要按需转换后写入到轻易云集成平台中。为了实现这一点,我们使用了轻易云提供的数据写入API:`写入空操作`。该API拥有强大的并发处理能力,可以快速将大批量数据插入目标数据库,有效提升整体流程效率。此外,通过可视化的数据流设计工具,使得整个转换及插入过程更加直观且便于管理。 #### 3. 数据监控和异常处理 实时监控是保证数据质量的重要环节。借助轻易云的平台特性,建立了一套完整的数据质量监控与告警系统,可以实时跟踪每一个任务节点中的状态变化以及性能表现。一旦发现异常情况,比如捕获错误或网络延迟过长,系统会立即触发重试机制,同时记录详细日志,以便后续分析处理。这一功能从根本上提高了系统运行稳定性,确保业务连续性不受影响。 以上三部分构成了我们此次技术方案实施的重要模块。而如何处理两端间复杂多样的数据结构差异,以及具体配置细节,将在下一步内容详述。在这之前,需要明确的是,仅凭标准API无法覆盖各种个性的需求场景,因此灵活有效地融合自定义逻辑成为解决此类问题的重要手段。 接下来让我们逐步展开具体实现步骤。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/D19.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是调用源系统的接口以获取原始数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,并对获取的数据进行初步加工。 #### 接口配置与调用 首先,我们需要配置和调用金蝶云星空的`executeBillQuery`接口。以下是该接口的元数据配置: ```json { "api": "executeBillQuery", "method": "POST", "number": "FNumber", "id": "FMasterId", "pagination": { "pageSize": 500 }, "request": [ {"field":"FMasterId","label":"id","type":"string","value":"FMasterId"}, {"field":"FNumber","label":"编码","type":"string","value":"FNumber"}, {"field":"FName","label":"名称","type":"string","value":"FName"}, {"field":"FSpecification","label":"规格型号","type":"string","value":"FSpecification"}, {"field":"FMnemonicCode","label":"助记码","type":"string","value":"FMnemonicCode"}, {"field":"FOldNumber","label":"旧物料编码","type":"string","value":"FOldNumber"}, {"field":"FBARCODE","label":"条码","type":"string","value":"FBARCODE"}, {"field":"FDescription","label":"描述","type":"string","value":"FDescription"}, {"field":"FMaterialGroup_FNumber","label":"物料分组","type":"string","value":"FMaterialGroup.FNumber"}, {"field":"FErpClsID","label":"物料属性","type":"string","value":"FErpClsID"}, {"field":"FDocumentStatus","label":"数据状态","type":"string","value":"FDocumentStatus"}, {"field":"FForbidStatus","label":"禁用状态","type":"string","value":"FForbidStatus"}, {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FUseOrgId.fnumber='100' and FModifyDate>='{{LAST_SYNC_TIME|datetime}}'"} ], "otherRequest": [ {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"}, {"field": "StartRow", "label": "开始行索引", "type": "string", describe: 金蝶的查询分页参数, value: "{PAGINATION_START_ROW}"}, {"field": FieldKeys, label: 需查询的字段key集合, type: array, describe: 金蝶分录主键ID格式: FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber, parser: {name: ArrayToString, params: ,}}, {"field": FormId, label: 业务对象表单Id, type: string, describe: 必须填写金蝶的表单ID如:PUR_PurchaseOrder, value: BD_MATERIAL} ] } ``` #### 数据请求与清洗 在配置好元数据后,我们可以通过POST请求来调用该接口。以下是一个示例请求: ```json { "FormId": "BD_MATERIAL", "FieldKeys": ["FMasterId", ..., ...], ... } ``` 在请求中,我们指定了需要查询的字段以及过滤条件,例如: ```json "FilterString" : “FSupplierId.FNumber = 'VEN00010' and FApproveDate>=2023-01-01” ``` 这将确保我们只获取符合条件的数据。 #### 数据转换与写入 一旦我们成功获取到数据,下一步就是对数据进行转换和写入。在轻易云平台上,这一步通常包括以下几个步骤: 1. **字段映射**:将源系统中的字段映射到目标系统中的相应字段。例如,将`金蝶云星空`中的`FMasterId`映射到目标系统中的`id`。 2. **数据清洗**:对获取的数据进行清洗,包括去除无效字符、格式化日期等操作。 3. **批量处理**:由于每次请求只能获取有限数量的数据,因此需要实现分页处理,逐页获取并处理所有数据。 #### 示例代码 以下是一个简单的示例代码,用于展示如何通过轻易云平台实现上述过程: ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'BD_MATERIAL', 'FieldKeys': ['FMasterId', '...', '...'], 'FilterString': “FSupplierId.FNumber = 'VEN00010' and FApproveDate>=2023-01-01”, ... } response = requests.post(url, headers=headers, json=payload) data = response.json() # 数据清洗与转换 cleaned_data = [] for item in data: cleaned_item = { 'id': item['FMasterId'], ... } cleaned_data.append(cleaned_item) # 写入目标系统 write_to_target_system(cleaned_data) ``` 通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行初步加工,为后续的数据集成奠定基础。 ![如何开发企业微信API接口](https://pic.qeasy.cloud/S4.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台中的ETL转换与写入 在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程的第二步至关重要,即将已经集成的源平台数据进行转换,并转为目标平台能够接收的格式,最终写入目标平台。本文将深入探讨这一过程中涉及的技术细节,特别是API接口的配置和使用。 #### 数据转换与API接口配置 在数据集成过程中,首先需要确保源数据经过清洗和初步处理,接下来便是通过ETL流程将这些数据转换为目标平台所需的格式。以下是一个具体的元数据配置示例,用于将金蝶物料数据写入到轻易云集成平台: ```json { "api": "写入空操作", "effect": "EXECUTE", "method": "POST", "number": "number", "id": "id", "name": "编码", "idCheck": true } ``` #### 配置解析 1. **API Endpoint**: - `"api": "写入空操作"`:指定了目标API接口名称。在实际应用中,这个字段会被替换为具体的API路径。 2. **Effect**: - `"effect": "EXECUTE"`:指明了操作类型。在此配置中,`EXECUTE`表示执行写入操作。 3. **HTTP Method**: - `"method": "POST"`:指定了HTTP请求方法为POST,用于向目标平台发送数据。 4. **Field Mapping**: - `"number": "number"`:映射源数据中的`number`字段到目标API中的`number`字段。 - `"id": "id"`:映射源数据中的`id`字段到目标API中的`id`字段。 - `"name": "编码"`:映射源数据中的`name`字段到目标API中的`编码`字段。 5. **ID Check**: - `"idCheck": true`:表示在写入前需要检查ID是否存在,以避免重复或冲突的数据写入。 #### 数据转换流程 1. **提取(Extract)**: 从金蝶系统中提取物料信息,通过预先配置好的连接器和查询语句获取原始数据。这一步通常涉及到对数据库或REST API进行访问,并获取JSON或XML格式的数据。 2. **转换(Transform)**: 根据元数据配置,对提取的数据进行必要的转换。例如,将金蝶系统中的物料编码字段映射到轻易云集成平台所需的格式。这一步可能涉及到多种数据处理操作,如类型转换、字段重命名、值映射等。 3. **加载(Load)**: 使用配置好的API接口,将转换后的数据通过POST请求发送到目标平台。确保在发送前进行ID检查,以防止重复记录。以下是一个简化的Python代码示例,展示了如何实现这一过程: ```python import requests import json # 示例源数据 source_data = { 'number': '12345', 'id': '67890', 'name': '物料A' } # 转换后的目标数据 target_data = { 'number': source_data['number'], 'id': source_data['id'], '编码': source_data['name'] } # API接口配置 api_url = 'https://example.com/api/写入空操作' headers = {'Content-Type': 'application/json'} # 发送POST请求 response = requests.post(api_url, headers=headers, data=json.dumps(target_data)) if response.status_code == 200: print('Data successfully written to the target platform.') else: print(f'Failed to write data: {response.status_code}, {response.text}') ``` #### 关键技术点 - **异构系统支持**:确保不同系统间的数据格式和协议兼容性,通过灵活的元数据配置实现无缝对接。 - **实时监控与日志记录**:在ETL过程中实时监控每个环节,并记录详细日志以便于后续分析和故障排查。 - **错误处理机制**:设计健壮的错误处理机制,在发生异常时能够及时捕获并采取相应措施,如重试、告警等。 通过以上技术手段,可以有效地实现从金蝶系统到轻易云集成平台的数据转换与写入,提高业务流程的自动化程度和效率。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)