如何使用轻易云平台进行ETL转换与数据写入金蝶云星空

  • 轻易云集成顾问-蔡威
### 小满OKKICRM数据集成到金蝶云星空案例分享 在企业信息化系统中,如何高效地实现不同系统之间的数据对接和集成一直是一个关键挑战。本次我们聚焦于将小满OKKICRM的回款登记数据高效、实时地集成到金蝶云星空资金账户的具体技术场景。 #### 系统对接背景及需求分析 为了确保小满OKKICRM与金蝶云星空之间的数据对接无缝、高效,我们首先明确了两个关键API接口: - **小满OKKICRM获取数据的API**:/v1/invoices/receiptRegistration/list - **金蝶云星空写入数据的API**:batchSave 此次任务目标是通过轻易云平台,实现从小满OKKICRM获取最新的回款登记列表,并批量导入至金蝶云星空资金账户,保证不会出现任何漏单现象,同时处理好双方接口调用频次和分页问题。为此,我们需要重点关注以下几个技术点: 1. **调度与抓取机制**:利用轻易云平台定时可靠地抓取小满OKKICRM接口数据。 2. **数据转换逻辑**:自定义符合业务需求的数据转换规则,以适应两个系统间的数据结构差异。 3. **异常处理及重试机制**:确保在网络故障或API调用失败时,能够进行有效的错误记录与重试操作。 4. **性能优化及监控告警**:支持高吞吐量数据写入能力,并通过集中监控和告警系统及时发现并解决潜在问题。 这些技术方案均依据实际运营实践中的可靠性和效率要求设计,为此,我们细化了具体实现步骤。 --- 以上内容介绍了本次案例分享涉及的一些关键背景知识和核心技术点。后续部分将详细阐述每个步骤如何操作,以确保实现最佳效果并满足业务需求。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用小满OKKICRM接口/v1/invoices/receiptRegistration/list获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用小满OKKICRM的接口`/v1/invoices/receiptRegistration/list`,并对获取的数据进行加工处理。 #### 接口配置与调用 首先,我们需要配置API接口的元数据,以便正确地请求和处理数据。以下是针对`/v1/invoices/receiptRegistration/list`接口的元数据配置: ```json { "api": "/v1/invoices/receiptRegistration/list", "effect": "QUERY", "method": "GET", "number": "cash_collection_invoice_no", "id": "cash_collection_invoice_id", "idCheck": true, "request": [ {"field": "start_time", "label": "start_time", "type": "string", "value": "{{LAST_SYNC_TIME|datetime}}"}, {"field": "end_time", "label": "end_time", "type": "string", "value": "{{CURRENT_TIME|datetime}}"}, {"field": "status", "label": "status", "type": "string"}, {"field": "start_index", "label": "start_index", "type": "string", "value":"1"}, {"field":"count","label":"count","type":"string","value":"20"}, {"field":"removed","label":"removed","type":"string"}, {"field":"time_type","label":"time_type","type":"string","value":"2"} ], "otherRequest":[ {"field":"info_api","label":"info_api","type":"string","describe":"111","value":"/v1/invoices/receiptRegistration/info"}, {"field":"info_key","label":"info_key","type":"string","describe":"111","value":"cash_collection_invoice_id"} ], "autoFillResponse": true } ``` #### 请求参数解析 - `start_time` 和 `end_time`: 用于定义查询时间范围,分别取上次同步时间和当前时间。 - `status`: 可选参数,用于过滤特定状态的数据。 - `start_index` 和 `count`: 用于分页查询,从第一个记录开始,每次查询20条记录。 - `removed`: 标识是否包含已删除的数据。 - `time_type`: 固定值为2,表示按某种特定时间类型进行查询。 这些参数确保了我们能够精确地获取所需的数据,并且可以通过分页机制高效地处理大批量数据。 #### 数据请求与清洗 在完成API调用后,我们会得到一组原始数据。接下来需要对这些数据进行清洗和转换,以便后续处理。以下是一个简单的清洗示例: ```python import requests import json # 定义API URL和请求头 api_url = 'https://api.xiaoman.com/v1/invoices/receiptRegistration/list' headers = {'Content-Type': 'application/json'} # 构建请求参数 params = { 'start_time': '2023-01-01T00:00:00Z', 'end_time': '2023-01-31T23:59:59Z', 'status': '', 'start_index': '1', 'count': '20', 'removed': '', 'time_type': '2' } # 发起GET请求 response = requests.get(api_url, headers=headers, params=params) data = response.json() # 数据清洗示例:移除无效字段、格式化日期等 cleaned_data = [] for item in data['results']: cleaned_item = { 'invoice_no': item['cash_collection_invoice_no'], 'invoice_id': item['cash_collection_invoice_id'], # 添加其他需要保留和转换的字段 # ... } cleaned_data.append(cleaned_item) print(json.dumps(cleaned_data, indent=4)) ``` #### 数据转换与写入 清洗后的数据需要进一步转换,以符合目标系统(如金蝶收款单)的要求。以下是一个简单的转换示例: ```python def transform_data(cleaned_data): transformed_data = [] for item in cleaned_data: transformed_item = { '收款单号': item['invoice_no'], '收款单ID': item['invoice_id'], # 添加其他字段映射规则 # ... } transformed_data.append(transformed_item) return transformed_data transformed_data = transform_data(cleaned_data) print(json.dumps(transformed_data, indent=4)) ``` 最后,将转换后的数据写入目标系统。这一步通常通过另一个API接口实现,但具体实现细节取决于目标系统的要求。 通过上述步骤,我们实现了从小满OKKICRM获取回款登记列表并进行加工处理,为后续的数据集成奠定了基础。这一过程展示了如何利用轻易云平台高效地管理和处理异构系统间的数据集成任务。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在数据集成的生命周期中,数据转换与写入是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据通过ETL(提取、转换、加载)过程,转化为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 配置元数据 在进行ETL转换之前,我们需要配置元数据。以下是一个详细的元数据配置示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "batchArraySave", "rows": 1, "rowsKey": "array" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{cash_collection_no}" }, { "field": "FSETTLEORGID", "label": "结算组织", "type": "string", "describe": "结算组织", ... }, ... ], ... } ``` #### 数据提取与清洗 首先,从源平台提取原始数据,并进行必要的清洗操作。清洗包括去除无效数据、修正错误值等,以确保后续转换步骤的准确性和有效性。 #### 数据转换 在轻易云平台上,我们可以利用配置好的元数据,将清洗后的数据按照目标平台要求的格式进行转换。以下是一些关键字段的转换示例: 1. **单据编号(FBillNo)**: ```json { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{cash_collection_no}" } ``` 将源平台中的`cash_collection_no`映射为金蝶云星空API中的`FBillNo`。 2. **结算组织(FSETTLEORGID)**: ```json { ... // 使用ConvertObjectParser将固定值100转化为金蝶云星空系统识别的对象 ... } ``` 3. **币别(FCURRENCYID)**: ```json { ... // 使用_mongoQuery从数据库中查询对应币别代码并转化为目标格式 ... } ``` 4. **业务日期(FDATE)**: ```json { ... // 将源平台中的collection_date直接映射为FDATE ... } ``` 5. **收款单明细(FRECEIVEBILLENTRY)**: ```json { ... // 定义收款单明细数组,并对每个子项进行详细配置 ... } ``` #### 数据写入 完成数据转换后,使用HTTP POST请求将处理后的数据发送到金蝶云星空API接口。以下是一个示例请求体: ```json { ..., // 包含所有已转换的数据字段 } ``` 在发送请求时,需要特别注意以下几点: - **API路径和方法**:确保使用正确的API路径和HTTP方法(如POST)。 - **认证和授权**:根据金蝶云星空API的要求,提供必要的认证信息。 - **错误处理和重试机制**:处理可能出现的错误,并实现重试机制以提高可靠性。 #### 实践案例 假设我们有一笔回款登记,需要将其转化并写入金蝶云星空系统。具体步骤如下: 1. 提取回款登记信息,包括`cash_collection_no`, `collection_date`, `currency`, `amount`等。 2. 根据上述元数据配置,将提取的信息逐一映射到目标字段。 3. 构建HTTP POST请求体,包含所有已转换的数据。 4. 发起请求,将构建好的请求体发送到金蝶云星空API接口。 通过以上步骤,我们成功地将源平台的数据转化为目标平台所需格式,并顺利写入金蝶云星空系统,实现了不同系统间的数据无缝对接。这不仅提高了业务效率,还确保了数据的一致性和准确性。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)