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

  • 轻易云集成顾问-陈洁琳
### 案例分享:金蝶云星空数据集成到金蝶云星空的方案「收款退款单-miniluo」 在实际业务场景中,多系统间的数据对接往往是实现企业信息流通的关键一步。本次技术案例将展示如何通过轻易云平台,将金蝶云星空中的数据无缝集成到同样为金蝶云星空的目标系统,具体案例为“收款退款单-miniluo”。 #### 系统对接背景 我们面临一个主要挑战,即如何确保来自源端金蝶云星空的数据能够快速、高效且不丢失地写入目标端。为了处理这一问题,我们设计了如下几个核心步骤,其中包括高吞吐量的数据写入、实时监控和告警机制,以及定制化的数据转换逻辑等。 #### 实现方案概述 1. **获取与解析数据** - 利用executeBillQuery接口抓取源端金蝶云星空中的收款退款单数据。这一过程需要考虑分页和限流的问题,以避免API调用次数超出限制。 2. **数据转换与映射** - 针对不同系统之间可能存在的数据格式差异,采用自定义的数据转换逻辑,使得抓取来的原始数据适配目标系统要求。 3. **批量写入** - 使用batchSave接口实现大量数据的批量写入,提高了整体效率,并能有效支持高吞吐量需求。 4. **实时监控与异常处理** - 建立集中式的监控和告警体系,对每一个任务进行全程跟踪。一旦出现错误,通过异常重试机制保证任务最终成功完成,从而提高系统可靠性。 5. **日志记录及分析** - 在整个过程中,对各个环节进行详细的日志记录,便于后期分析与优化。同时,利用可视化工具直观展示每一步操作详情和执行状态。 这种方法不仅提升了所需业务流程自动化程度,还确保了从源头到目标端每个环节都得到严密控制,实现业务透明度最大化。对于大多数涉及复杂多变数据信息桥接的问题,此类解决方案提供了一种全面且灵活的方法来应对多样化挑战。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/D35.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取收款退款单的数据,并进行初步加工。 #### 接口配置与请求参数 首先,我们需要配置接口和请求参数。根据元数据配置,我们使用POST方法调用`executeBillQuery`接口,主要参数如下: - **api**: `executeBillQuery` - **method**: `POST` - **number**: `FBillNo` - **id**: `FREFUNDBILLENTRY_FEntryID` - **pagination**: 支持分页,每页500条记录 - **idCheck**: true,表示需要检查ID 请求字段包括但不限于以下内容: ```json [ {"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string"}, {"field":"FID","label":"实体主键","type":"string"}, {"field":"FBillNo","label":"单据编号","type":"string"}, {"field":"FDOCUMENTSTATUS","label":"单据状态","type":"string"}, {"field":"FCreaterId","label":"创建人","type":"string"}, {"field":"FCreateDate","label":"创建日期","type":"string"}, // 更多字段... ] ``` 其他请求参数包括分页参数、过滤条件等: ```json [ {"field": "Limit", "label": "最大行数", "type": "string", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "开始行索引", "type": "string", "value": "{PAGINATION_START_ROW}"}, {"field": "FilterString", "label": "过滤条件", "type": "string", "value": "FCONTACTUNIT.FNumber= 'PDD14' and FDate >='2024-08-01 00:00:00'"}, {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "parser":{"name":"ArrayToString","params": ","}}, {"field": "FormId", "label": "业务对象表单Id", "type": "string", "value": "AR_REFUNDBILL"} ] ``` #### 调用接口获取数据 在轻易云平台上配置好上述参数后,我们可以发起API请求。示例代码如下: ```python import requests url = 'https://api.kingdee.com/executeBillQuery' headers = {'Content-Type': 'application/json'} payload = { 'FormId': 'AR_REFUNDBILL', 'FieldKeys': 'FID,FBillNo,FDOCUMENTSTATUS,FCreateDate,FREFUNDBILLENTRY_FEntryID', 'FilterString': 'FCONTACTUNIT.FNumber= \'PDD14\' and FDate >=\'2024-08-01 00:00:00\'', 'Limit': 500, 'StartRow': 0 } response = requests.post(url, headers=headers, json=payload) data = response.json() ``` #### 数据清洗与初步加工 获取到数据后,需要对其进行清洗和初步加工,以便后续处理。以下是一些常见的数据清洗步骤: 1. **去除空值和重复值**:确保数据完整性。 2. **字段格式转换**:例如,将日期字符串转换为日期对象。 3. **数据筛选**:根据业务需求筛选出需要的记录。 示例代码如下: ```python import pandas as pd # 假设data是从API返回的数据列表 df = pd.DataFrame(data) # 去除空值和重复值 df.dropna(inplace=True) df.drop_duplicates(inplace=True) # 字段格式转换 df['FCreateDate'] = pd.to_datetime(df['FCreateDate']) # 数据筛选 filtered_df = df[df['FDOCUMENTSTATUS'] == 'A'] ``` #### 小结 通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口,可以高效地获取收款退款单的数据。在此过程中,合理配置API请求参数、有效地清洗和加工数据,是确保数据集成成功的关键步骤。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/S16.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口 在轻易云数据集成平台中,将已经集成的源平台数据进行ETL转换,并最终写入目标平台金蝶云星空API接口,是一个复杂但高效的过程。本文将深入探讨这一过程中的技术细节,特别是如何利用元数据配置来实现这一目标。 #### 数据请求与清洗 在数据生命周期的第一步,我们已经完成了数据的请求与清洗。这一步确保了从源系统获取的数据是干净且结构化的,为后续的ETL转换打下了坚实的基础。 #### 数据转换与写入 接下来,我们重点关注如何将清洗后的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。以下是详细步骤和技术要点: #### 配置API接口元数据 根据提供的元数据配置,我们需要将各个字段映射到金蝶云星空所需的格式。以下是关键字段及其配置解析: 1. **单据类型(FBillTypeID)** - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 默认值:`SKTKDLX01_SYS` 2. **日期(FDATE)** - 类型:字符串 - 值:`{FDATE}` 3. **往来类型(FCONTACTUNITTYPE)** - 类型:字符串 - 值:`{FCONTACTUNITTYPE}` 4. **往来单位(FCONTACTUNIT)** - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 映射目标ID:`63556c380bc98d4c8e11c30d` 5. **收款单位类型(FRECTUNITTYPE)** - 类型:字符串 - 值:`{FRECTUNITTYPE}` 6. **收款单位(FRECTUNIT)** - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 映射目标ID:`63556c380bc98d4c8e11c30d` 7. **币别(FCURRENCYID)** - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 默认值:`PRE001` 8. **结算组织(FSETTLEORGID)** - 类型:字符串 - 解析器:`ConvertObjectParser` - 参数:`FNumber` - 映射目标ID:`6355fe20c4a6d536d27cd8dc` 9. **销售组织(FSALEORGID)** 同上,与结算组织类似。 10. **业务类型(FBUSINESSTYPE)** 同上,直接映射。 11. **汇率(FEXCHANGERATE)** 同上,直接映射。 12. **支付组织(FPAYORGID)** 同上,与结算组织类似。 13. **结算本位币(FSETTLEMAINBOOKID)** 同上,默认值为 `PRE001`. 14. **明细部分 (数组) FREFUNDBILLENTRY** 明细部分包含多个字段,每个字段都有其特定配置。例如: ```json { "field": "FACCOUNTID", "label": "我方银行账号", "type": "string", "parser": { "name": "ConvertObjectParser", "params": "FNumber" }, "value": "_function case when '{FCONTACTUNIT}' ='PDD14' then '18011967948' else '{FACCOUNTID}' end", "parent": "FREFUNDBILLENTRY" } ``` 上述配置表明,如果 `FCONTACTUNIT` 为 `PDD14`, 则银行账号为 `18011967948`, 否则使用 `{FACCOUNTID}` 的值。 #### 批量保存操作 最后一步是将处理后的数据通过批量保存操作 (`batchSave`) 写入金蝶云星空。具体请求参数如下: ```json { "FormId": "AR_REFUNDBILL", "Operation": "BatchSave", "IsAutoSubmitAndAudit": false, "IsVerifyBaseDataField": false, } ``` 这些参数确保了我们可以批量保存并提交审核,同时验证基础资料有效性。 ### 总结 通过上述详细步骤和技术要点,我们成功地将源平台的数据进行了ETL转换,并最终写入到金蝶云星空API接口中。这一过程充分利用了轻易云数据集成平台提供的强大功能,实现了不同系统间的数据无缝对接,大大提升了业务效率和透明度。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)