ETL转换在数据集成中的应用:轻易云与金蝶云星空

  • 轻易云集成顾问-彭亮
### 旺店通·企业奇门数据集成到金蝶云星空:案例解析 在本技术案例中,我们聚焦于如何实现旺店通·企业奇门的数据高效集成到金蝶云星空。在实际运行过程中,我们使用的方案名称为“旺店通其他出库-金蝶其他出库(成品)”,该方案不仅保证了数据的无缝对接,同时也极大地提高了业务处理效率。 #### API接口调用与数据抓取 首先,在系统对接上,关键的一步是通过调用旺店通·企业奇门的API接口`wdt.stockout.order.query`来获取所需的出库订单数据。为了确保不漏单以及数据抓取的可靠性,我们设置了定时任务,定期从接口中拉取最新的数据,并实时监控每次抓取过程中的日志和状态记录。此外,为了解决分页和限流问题,需要在调用API时进行分页处理,并合理设置请求频率,以避免触发限流机制导致的数据抓取失败。 ```json { "api": "wdt.stockout.order.query", "params": { "page_no": 1, "page_size": 50, ... } } ``` #### 数据映射与格式转换 在将获得的数据写入到金蝶云星空之前,必须解决两者之间的数据格式差异问题。这其中涉及字段映射、类型转换等多项工作。例如,将不同编码格式、日期时间格式,以及数值单位等信息都需要一一对应转换。采用自定义映射规则,可以确保双方系统对于同一种业务事件有一致理解: ```json { "src_field_name": "order_id", "dest_field_name": "document_number" }, ... ``` #### 批量写入及异常处理机制 批量写入是提升整体性能的重要策略。在将整理后的订单信息传输至金蝶云星空时,通过使用其提供的批量保存API `batchSave` 来实现快速、大量地提交数据。如果出现网络波动或服务器故障引起的数据传输错误,我们设计了一套完善的异常处理和错误重试机制来保障最终的一致性: ```json { "api": "/k3cloud/bill/SAVE", ... } ``` 通过实施上述各个步骤,本次集成顺利完成,实现了跨平台间高效、安全稳定的信息同步。不仅如此,这种完整透明化操作流程还为日后系统维护和升级奠定了坚实基础,使得整个业务链条更加直观可控。 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D27.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·企业奇门接口获取并加工数据的技术案例 在轻易云数据集成平台中,调用源系统接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用旺店通·企业奇门接口`wdt.stockout.order.query`来获取并加工数据。 #### 接口配置与请求参数 首先,我们需要配置接口及其请求参数。根据元数据配置,`wdt.stockout.order.query`接口采用POST方法,主要用于查询出库单信息。以下是关键的请求参数: - `start_time` 和 `end_time`:按最后修改时间增量获取数据,分别表示开始时间和结束时间,格式为`yyyy-MM-dd HH:mm:ss`。 - `order_type`:出库单类型,此处固定为"7",表示其他出库。 - `status`:出库单状态,固定为"110",表示已完成的单据。 - `warehouse_no`:仓库编号,用于区分不同仓库。 - `stockout_no`:出库单号,可选参数,如果传递该字段则可以不传时间。 此外,还有分页参数: - `page_size`:每页返回条数,默认值为40,最大值为100。 - `page_no`:页号,从0页开始。 #### 请求示例 根据上述配置,我们构建一个请求示例: ```json { "start_time": "2023-10-01 00:00:00", "end_time": "2023-10-01 23:59:59", "order_type": "7", "status": "110", "warehouse_no": "wdt01", "page_size": "100", "page_no": "0" } ``` #### 数据过滤与条件设置 在实际应用中,我们可能需要对返回的数据进行进一步过滤。元数据配置中提供了多组条件逻辑,例如: ```json [ {"field":"warehouse_no","logic":"eqv2","value":"wdt01"}, {"field":"stockout_reason","logic":"neqv2","value":"工厂生产领用"} ] ``` 这组条件表示仅获取仓库编号为"wdt01"且出库原因不等于"工厂生产领用"的记录。 #### 数据清洗与转换 获取到原始数据后,需要对其进行清洗和转换,以便后续处理。例如,可以对日期格式进行标准化处理,对字段名称进行映射等。以下是一个简单的数据清洗示例: ```python import pandas as pd # 假设response_data是从接口获取的原始数据 response_data = [ {"order_no": "12345", "order_type_name": "其他出库", "last_modified": "2023-10-01 12:34:56"}, # 更多记录... ] # 转换为DataFrame df = pd.DataFrame(response_data) # 日期格式标准化 df['last_modified'] = pd.to_datetime(df['last_modified']) # 字段名称映射 df.rename(columns={'order_no': 'OrderNumber', 'order_type_name': 'OrderType'}, inplace=True) print(df) ``` #### 自动填充响应 在元数据配置中,设置了`autoFillResponse: true`,这意味着系统会自动填充响应结果,无需手动处理。这一特性极大简化了开发工作量,提高了效率。 #### 实时监控与错误处理 在调用接口和处理数据过程中,实时监控和错误处理至关重要。轻易云平台提供了完善的监控机制,可以实时跟踪每个步骤的执行状态,并在出现错误时及时报警。例如,可以设置重试机制或通知相关人员以便快速响应。 通过以上步骤,我们实现了从调用旺店通·企业奇门接口到数据清洗和转换的完整流程。这一过程不仅确保了数据的准确性和一致性,还提高了业务处理效率,为后续的数据分析和决策提供了可靠支持。 ![用友与外部系统接口集成开发](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:ETL转换与金蝶云星空API接口集成案例 在数据集成过程中,将源平台的数据转换为目标平台所需的格式是至关重要的一步。本文将详细探讨如何使用轻易云数据集成平台,将旺店通其他出库的数据通过ETL转换,最终写入金蝶云星空API接口。 #### 元数据配置解析 在本案例中,我们需要将旺店通的其他出库数据转换为金蝶云星空能够接收的格式。以下是我们需要配置的元数据: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FBillNo", "label": "单据编号", "type": "string", "describe": "单据编号", "value": "{order_no}" }, { ... } ], ... } ``` #### 配置关键字段解析 1. **FBillNo(单据编号)** - `field`: FBillNo - `label`: 单据编号 - `type`: string - `describe`: 单据编号 - `value`: `{order_no}` 此字段用于标识每个出库单的唯一编号,直接从源数据中的`order_no`字段获取。 2. **FBillTypeID(单据类型)** - `field`: FBillTypeID - `label`: 单据类型 - `type`: string - `describe`: 单据类型 - `parser`: {"name":"ConvertObjectParser","params":"FNumber"} - `value`: `{reason}` - `mapping`: `"62e8ddee55eec0316710dab6"` 使用`ConvertObjectParser`解析器将源数据中的`reason`字段映射为金蝶系统中的单据类型编码。 3. **FStockOrgId(库存组织)** - `field`: FStockOrgId - `label`: 库存组织 - `type`: string - `describe`: 组织 - `parser`: {"name":"ConvertObjectParser","params":"FNumber"} - `value`: `{warehouse_no}` 同样使用`ConvertObjectParser`解析器,将源数据中的`warehouse_no`字段映射为金蝶系统中的库存组织编码。 4. **FDate(日期)** - `field`: FDate - `label`: 日期 - `type`: string - `describe`: 日期 - `value`: `"{{consign_time|datetime}}"` 将源数据中的`consign_time`字段格式化为日期字符串,供金蝶系统使用。 5. **FEntity(明细信息)** 明细信息部分包含多个子字段,如物料编码、实发数量等,这些子字段需要逐一配置并映射到目标系统中相应的字段。例如: ```json { "field": "FMaterialId", ... "value": "{{details_list.spec_no}}" }, { ... "value": "{{details_list.goods_count}}" } ``` #### 数据写入目标平台 在完成上述元数据配置后,接下来就是将这些配置应用到实际的数据转换和写入操作中。以下是一个示例请求体: ```json { "FormId": "STK_MisDelivery", ... "Model": { ... "FBillNo": "{order_no}", ... "FEntity": [ { ... "FMaterialId": "{{details_list.spec_no}}", ... "FQty": "{{details_list.goods_count}}" } ] } } ``` 通过轻易云平台,我们可以利用其全异步、多异构系统支持的特性,实现不同系统间的数据无缝对接。在这个过程中,确保每个字段都正确映射和转换,是保证数据准确性的关键。 #### API调用与验证 最后一步是通过API接口将转换后的数据写入金蝶云星空。我们使用POST方法调用`batchSave`接口,并附带必要的请求参数和验证信息: ```json { ... "IsAutoSubmitAndAudit": true, ... } ``` 此步骤不仅完成了数据的写入,还通过自动提交和审核功能,简化了后续的业务处理流程。 通过以上步骤,我们成功地将旺店通其他出库的数据转化并写入到金蝶云星空,实现了跨平台的数据集成。这一过程充分利用了轻易云平台强大的ETL能力和多系统兼容性,为企业提供了高效、透明的数据管理解决方案。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T30.png~tplv-syqr462i7n-qeasy.image)