使用轻易云平台实现企业级数据ETL转换与写入

  • 轻易云集成顾问-杨嫦
### 用友BIP系统对接轻易云集成平台的技术实现案例分享 在复杂企业业务流程中,系统间的数据集成至关重要。本文将通过一个实际运行的方案“〇内部交易对应表-v”详细介绍如何将用友BIP数据高效、安全地集成到轻易云数据集成平台。 首先我们关注的是用友BIP接口的调用与处理。在这个案例中,我们使用API ` /fc0dltfc/qeasy_datahub/qeasy_datahub/query_mapping_Internaltransactions`来抓取相关数据。为了确保不漏单并能够及时获取最新数据,我们采用了定时任务机制,通过轻易云平台内置的调度功能,每隔固定时间段稳定抓取API提供的新数据,并且设置错误重试机制以应对可能出现的数据请求失败问题。 其次,大量数据需要快速写入到轻易云集成平台,这是性能优化的重要环节。我们利用批量写入操作,将获取的大规模数据信息通过API `wdt.purchase.provider.create`进行汇入。这不仅提高了传输速度,还有效减少了网络开销和资源占用,从而保证整个过程流畅无阻。 与此同时,我们必须处理分页与限流的问题,以避免读取大批量记录时超过接口限制或者引起服务器负担过重。对此,设计了一套合理的分页策略,使得每次请求返回的数据保持在安全范围之内。此外,对接过程中涉及两边系统之间的数据格式差异,也通过自定义映射规则进行了精确转换,确保本地数据库中的字段和类型一致性得到充分保障。 最后,为实现更加细致入微的监控和日志记录,用友BIP原生支持实时监控其所有操作状态,而这些状态信息也同步上报至轻易云平台。当出现异常情况时,根据预设触发相应告警及启用自动化修复脚本,提高响应效率,同时降低人为干预风险。这些都为业务团队后续跟进分析、改进治理提供可靠依据。 以上简要概述了从对接需求识别,到具体技术执行中的关键步骤和解决方案。下一步将详细探讨各个模块配置方法,以及遇到挑战后的最佳实践经验分享。 ![打通用友BIP数据接口](https://pic.qeasy.cloud/D17.png~tplv-syqr462i7n-qeasy.image) ### 用友BIP接口数据集成与加工技术案例 在数据集成的生命周期中,调用源系统接口获取并加工数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用用友BIP接口`/fc0dltfc/qeasy_datahub/qeasy_datahub/query_mapping_Internaltransactions`来获取和处理内部交易对应表的数据。 #### 接口调用配置 首先,我们需要配置元数据以便正确调用用友BIP的API接口。以下是具体的元数据配置: ```json { "api": "/fc0dltfc/qeasy_datahub/qeasy_datahub/query_mapping_Internaltransactions", "method": "POST", "number": "id", "id": "id", "request": [ { "label": "时间戳", "field": "ts", "type": "string", "value": "{LAST_SYNC_TIME}0000" } ], "autoFillResponse": true } ``` 该配置指定了API的路径、请求方法、主键字段以及请求参数等信息。特别需要注意的是`"value"`字段中的`{LAST_SYNC_TIME}`,它代表上次同步的时间戳,用于增量获取数据。 #### 数据请求与清洗 在实际操作中,首先需要通过POST请求向用友BIP系统发送带有时间戳参数的请求,以获取自上次同步以来的新数据。以下是一个示例请求体: ```json { "ts": "202310120000" } ``` 该请求体中的时间戳`202310120000`表示从2023年10月12日00:00之后的数据。 收到响应后,轻易云平台会自动填充响应内容(因为`autoFillResponse`设置为true),这一步骤确保了我们可以直接对返回的数据进行处理,而无需手动解析响应。 #### 数据转换与写入 接下来,我们需要对获取到的数据进行必要的清洗和转换,以便写入目标系统。在这个过程中,可以利用轻易云平台提供的可视化工具,对数据进行筛选、过滤、格式转换等操作。例如: 1. **筛选无效记录**:通过条件过滤去除不符合业务需求的记录。 2. **字段映射**:将源系统中的字段映射到目标系统中的相应字段。 3. **格式转换**:例如,将日期格式从字符串转换为标准日期类型。 以下是一个简单的数据转换示例: ```json [ { "sourceField": "transaction_id", "targetField": "id" }, { "sourceField": "transaction_date", "targetField": "date", "transformation": { "type": "dateFormat", "format": "yyyy-MM-dd" } } ] ``` 在这个示例中,`transaction_id`被映射为目标系统中的`id`字段,而`transaction_date`则经过日期格式转换后映射为目标系统中的`date`字段。 #### 实时监控与调试 为了确保数据集成过程的准确性和高效性,实时监控和调试是必不可少的。轻易云平台提供了详细的日志和监控功能,可以帮助我们实时查看每个步骤的执行情况,并快速定位和解决问题。例如,通过查看日志可以发现某条记录因格式不正确而被过滤掉,从而及时调整清洗规则。 #### 总结 通过上述步骤,我们成功地调用了用友BIP接口获取内部交易对应表的数据,并进行了必要的数据清洗和转换。这一过程不仅提高了数据处理的效率,还确保了数据的一致性和准确性。在实际应用中,根据具体业务需求,还可以进一步定制和优化这些操作,以实现更复杂的数据集成任务。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/S22.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换与写入目标平台 在数据集成生命周期的第二阶段,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)转换,并转为目标平台能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台的API接口实现这一过程。 #### API接口配置与元数据解析 在本案例中,我们将使用`wdt.purchase.provider.create` API接口来创建供应商信息。以下是该API接口的元数据配置: ```json { "api": "wdt.purchase.provider.create", "method": "POST", "idCheck": true, "request": [ {"field": "provider_no", "label": "供应商编号", "type": "string", "describe": "代表供应商所有属性的唯一编码,用于供应商区分,ERP内支持自定义(ERP供应商界面设置),用于创建供应商数据信息", "value": "{code}"}, {"field": "provider_name", "label": "供应商名称", "type": "string", "describe": "供应商名称", "value": "{name}"}, {"field": "min_purchase_num", "label": "最小采购量", "type": "string", "describe": "最小采购量", "value":"1"}, {"field": "purchase_cycle_days", "label": "采购周期", "type": "string", "describe":"采购周期","value":"1"}, {"field":"arrive_cycle_days","label":"到货周期","type":"string","describe":"到货周期","value":"1"}, {"field":"contact","label":"联系人","type":"string","describe":"联系人"}, {"field":"telno","label":"座机","type":"string","describe":"座机"}, {"field":"mobile","label":"移动电话","type":"string","describe":"手机号"}, {"field":"fax","label":"传真","type":"string","describe":"传真"}, {"field":"zip","label":"邮编","type":"string","describe":"邮政编码"}, {"field":"email","label":"邮箱","type":"string","describe":"电子邮箱"}, {"field":"qq","label":"qq","type":"string","describe":"腾讯QQ号码"}, {"field":"wangwang","label":"旺旺","type":"string","describe":"淘宝旺旺号"}, {"field":"address","label":"地址","type":"string","describe":"省、市、区(县)、地址详情"}, {"field" :"website" ,"label" :"网址" ,"type" :"string" ,"describe" :"供应商官网地址"}, {"field" :"last_purchase_time" ,"label" :"最后采购日期" ,"type" :"string" ,"describe" :"对供应商最后一次采购日期,不传默认接口创建供应商的年月日,格式:yyyy-MM-dd HH:mm:ss"}, {"field" :"is_disabled" ,"label" :"停用" ,"type" :"string" ,"describe" :"是否停用"}, {"field" :"charge_cycle_days" ,"label" :"结算周期" ,"type" :"string" ,"describe" :"对供应商的账款结算周期,单位(天),不传默认0",value:"1"} ] } ``` #### 数据提取与清洗 首先,从源平台提取原始数据。假设我们从ERP系统中获取了如下JSON格式的数据: ```json { "_id": 12345, "_name": "ABC Supplies", "_contactPerson": { "_name": "John Doe", "_phoneNumber": "+123456789" }, "_addressDetails":{ "_provinceCityDistrictDetailAddress":"", "_zipCode":"", "_emailAddress":"", "_qqNumber":"", "_wangWangNumber":"", "_websiteURL":"", "_lastPurchaseDate":"", "_isDisabled":"", "_chargeCycleDays":"", } } ``` 提取后,需要对这些数据进行清洗和转换,以符合目标API接口的要求。例如,将源数据中的字段名转换为目标API所需的字段名: ```json { "{code}": 12345, "{name}": “ABC Supplies”, "{contact}”: “John Doe”, "{mobile}”: “+123456789” } ``` #### 数据转换与写入 接下来,我们使用轻易云数据集成平台提供的可视化工具,将清洗后的数据映射到API请求参数中。以下是映射后的请求体示例: ```json { “provider_no”: “12345”, “provider_name”: “ABC Supplies”, “min_purchase_num”: “1”, “purchase_cycle_days”: “1”, “arrive_cycle_days”: “1”, “contact”: “John Doe”, “mobile”: “+123456789” } ``` 通过轻易云的数据转换功能,可以自动将这些映射关系应用于批量处理的数据,确保每条记录都能准确无误地转换并准备好发送至目标API。 #### API调用与结果处理 使用配置好的API接口和请求体,通过POST方法发送请求: ```python import requests url = 'https://api.example.com/wdt.purchase.provider.create' headers = {'Content-Type': 'application/json'} data = { # 请求体内容 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to target platform.") else: print("Failed to write data:", response.text) ``` 成功调用后,系统会返回相应的结果信息,包括是否成功创建了供应商以及任何错误信息。这些信息可以用于进一步的数据监控和错误处理。 通过上述步骤,我们完成了从源平台到目标平台的数据ETL转换与写入,实现了不同系统间的数据无缝对接。这不仅提高了数据处理效率,也确保了业务流程的一致性和可靠性。 ![数据集成平台可视化配置API接口](https://pic.qeasy.cloud/T8.png~tplv-syqr462i7n-qeasy.image)