轻易云数据集成平台ETL转换与写入金蝶云星辰V2

  • 轻易云集成顾问-吴伟
### 仓库调拨-杭州佰健盛吉:汤臣倍健营销云数据集成到金蝶云星辰V2技术案例分享 在本案例中,我们将详细解析如何通过轻易云数据集成平台,将汤臣倍健营销云的数据高效整合到金蝶云星辰V2系统中。具体操作涉及的API接口分别是:从汤臣倍健营销云获取数据的`/erp/api/order/query/borrowOrder`接口,以及向金蝶云星辰V2写入数据的`/jdy/v2/scm/inv_tfmove`接口。 #### 数据抓取与高吞吐量处理 首先,通过定时任务可靠地抓取汤臣倍健营销云提供的数据。这些操作通过调用其API,确保每一次抓取都完整且无遗漏。在处理过程中,面对大量的数据流,采用支持高吞吐量的数据写入能力,以保证信息能够及时、高效地转移到目标系统。 #### 数据转换和映射 对于不同系统间可能存在的数据格式差异问题,本方案特别注重自定义数据转换逻辑。这种灵活性使得我们能根据业务需求精细化编排和调整数据信息,使之符合目标系统金蝶云星辰V2的要求。同样,对于分页和限流等常见的问题,也有特定策略进行有效应对。 #### 监控、告警与异常处理 为了保障整个集成过程顺利进行,我们利用集中化的监控和告警系统来实时跟踪每一个步骤。如果出现任何异常情况,该机制将立刻触发预设的错误重试流程,从而最大程度上降低潜在风险。此外,还可以实时查看日志记录,全面掌握各个操作环节的信息反馈,这为后期维护及优化提供了重要依据。 下一步,将详细介绍具体实施方案,包括调用各类API的方法、参数配置以及返回结果分析。 ![如何开发金蝶云星空API接口](https://pic.qeasy.cloud/D34.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统汤臣倍健营销云接口/erp/api/order/query/borrowOrder获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过调用汤臣倍健营销云的接口`/erp/api/order/query/borrowOrder`来获取仓库调拨数据,并进行初步的数据加工。 #### 接口调用配置 首先,我们需要配置API调用的元数据。根据提供的元数据配置,我们可以看到该接口使用POST方法进行请求,主要参数如下: - `tenantId`: 经销商id,必填项。 - `number`: 系统订单号(调拨出库单),传此参数时其他时间状态等条件无效。 - `status`: 订单状态,0表示未审核,1表示已审核(已出库)。 - `beginTime`: 开始时间,基于更新时间查询。 - `endTime`: 结束时间,基于更新时间查询。 - `pageNo`: 页码,默认值为1。 - `pageSize`: 每页条数,默认值为30。 #### 请求参数设置 为了确保请求的有效性和准确性,我们需要设置必要的请求参数。以下是一个示例请求参数配置: ```json { "tenantId": "08e2fd9d074f4ef7b5e6416b74d006d6", "status": "1", "beginTime": "{{DAYS_AGO_1|datetime}}", "endTime": "{{CURRENT_TIME|datetime}}", "pageNo": "1", "pageSize": "30" } ``` 在这个配置中,我们指定了经销商ID、订单状态为已审核、开始时间为一天前、结束时间为当前时间,以及分页信息。 #### 数据清洗与加工 在获取到原始数据后,需要对数据进行清洗和加工,以便后续的数据转换与写入。以下是一些常见的数据清洗步骤: 1. **字段映射**:将源系统中的字段映射到目标系统中的字段。例如,将`number`映射到目标系统中的订单号字段。 2. **数据过滤**:根据业务需求过滤掉不需要的数据。例如,只保留订单状态为已审核的数据。 3. **格式转换**:将日期格式转换为目标系统所需的格式。 以下是一个简单的数据清洗示例代码: ```python import datetime def clean_data(raw_data): cleaned_data = [] for record in raw_data: if record['status'] == '1': # 只保留已审核的数据 cleaned_record = { 'order_id': record['number'], 'dealer_id': record['tenantId'], 'update_time': datetime.datetime.strptime(record['updateTime'], '%Y-%m-%d %H:%M:%S') } cleaned_data.append(cleaned_record) return cleaned_data ``` #### 异常处理与补偿机制 在实际操作中,可能会遇到各种异常情况,例如网络故障、接口超时等。因此,需要设计异常处理与补偿机制,以确保数据集成过程的稳定性和可靠性。 元数据配置中提到了一个补偿机制`omissionRemedy`,其中包含了定时任务和接管请求的配置。例如,每两小时执行一次定时任务,以确保遗漏的数据能够被及时补偿。 ```json "omissionRemedy": { "crontab": "2 */2 * * *", "takeOverRequest": [ { "field": "beginTime", "label": "修改时间开始段", "type": "string", "is_required": true, "value": "{{HOURE_AGO_2|datetime}}" } ] } ``` 通过这种方式,可以定期检查并补偿遗漏的数据,从而提高数据集成过程的可靠性。 #### 总结 通过调用汤臣倍健营销云接口`/erp/api/order/query/borrowOrder`获取仓库调拨数据,并进行初步的数据清洗与加工,可以有效地实现不同系统间的数据无缝对接。在实际操作中,需要注意请求参数的设置、数据清洗的方法以及异常处理与补偿机制,以确保整个过程的顺利进行。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S15.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期第二步:ETL转换与写入金蝶云星辰V2API接口 在数据集成过程中,ETL(Extract, Transform, Load)转换是关键的一环。本文将详细探讨如何使用轻易云数据集成平台,将源平台的数据经过ETL转换后,转为金蝶云星辰V2API接口所能接收的格式,并最终写入目标平台。 #### 数据请求与清洗 首先,从源平台获取初始数据,并进行必要的清洗和预处理。这一步骤确保了数据的准确性和一致性,为后续的转换和写入打下基础。清洗后的数据需要符合目标平台的要求,特别是在字段类型和格式上。 #### 数据转换与写入 在数据清洗完成后,进入数据转换阶段。根据提供的元数据配置,我们需要将源数据映射到金蝶云星辰V2API接口所需的格式。 以下是具体的元数据配置解析及其应用: ```json { "api": "/jdy/v2/scm/inv_tfmove", "effect": "EXECUTE", "method": "POST", "number": "1", "autoCheck": "inv_tfmove_bill_order", "id": "1", "name": "1", "idCheck": true, "request": [ { "field": "bill_date", "label": "出库日期", "type": "string", "describe": "出库日期,格式:2019-01-01", "value": "{created}" }, { "field": "trans_type", "label": "业务类型", "type": "string", "describe": "1:同价调拨(默认),2:异价调拨", "value": "1" }, { "field": "trans_fer_status", "label": "调拨状态", ... } ] } ``` ##### 核心字段解析与映射 1. **bill_date(出库日期)** - 类型:字符串 - 描述:出库日期,格式为`YYYY-MM-DD` - 映射值:`{created}`,从源数据中提取创建日期并格式化为目标格式。 2. **trans_type(业务类型)** - 类型:字符串 - 描述:1表示同价调拨(默认),2表示异价调拨 - 固定值:`1` 3. **trans_fer_status(调拨状态)** - 类型:字符串 - 描述:0表示未出库(默认),1表示未入库,2表示部分入库,3表示全部入库 - 固定值:`3` 4. **remark(单据备注)** - 类型:字符串 - 描述:单据备注信息 - 映射值:`来自营销云{number}`,将源系统中的编号信息嵌入备注中。 ##### 商品分录字段解析与映射 商品分录是一个数组,其中每个元素代表一个商品条目。以下是主要字段及其映射方式: 1. **material_id(商品)** - 类型:字符串 - 描述:商品编码 - 映射值:通过`_findCollection`函数,根据商品编码从指定集合中查找对应ID。 2. **in_stock_id(调入仓库)** - 类型:字符串 - 描述:调入仓库编码 - 映射值:通过`_findCollection`函数,根据仓库编码从指定集合中查找对应ID。 3. **out_stock_id(调出仓库)** - 类型:字符串 - 描述:调出仓库编码 - 映射值:通过`_findCollection`函数,根据仓库编码从指定集合中查找对应ID。 4. **batch_no(批次号)、kf_date(生产日期)、valid_date(有效日期)、kf_period(保质期天数)、kf_type(保质期单位)、qty(数量)、unit_id(单位)** - 各字段分别从源数据中的相应字段进行映射,如批次号、生产日期、有效日期等。 ##### 数据提交 完成所有字段的映射后,通过POST方法将转换后的数据提交至金蝶云星辰V2API接口: ```http POST /jdy/v2/scm/inv_tfmove HTTP/1.1 Host: api.kingdee.com Content-Type: application/json { ... } ``` #### 实践案例 假设我们有一条源系统的数据记录,其包含如下信息: - 创建日期 `2023-10-01` - 商品列表包含若干条目,每个条目包含商品编码、数量、仓库编码等信息。 我们将这些信息按照上述元数据配置进行ETL转换,并通过API接口提交至金蝶云星辰V2系统,实现跨系统的数据无缝对接。 通过轻易云数据集成平台,我们能够高效地完成这一过程,确保每个环节都透明可控,从而大幅提升业务效率和准确性。 ![用友与SCM系统接口开发配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)