ETL技术:将源平台数据转换为旺店通标准格式并写入

  • 轻易云集成顾问-黄宏棵
### 用友U8数据集成到旺店通·企业奇门的技术案例分享 在本案例中,我们将探讨如何通过轻易云数据集成平台,实现用友U8系统的数据无缝对接到旺店通·企业奇门(以下简称“WDT”),具体方案名称为:“K u8其他入库(所有类型)->其他入库”。这个过程涉及多项关键技术,包括API接口调用、分页处理、数据格式转换及异常处理。 #### 数据获取与分类——调用用友U8接口 首先,确保从用友U8系统准确地抓取所需的“其他入库”类型数据。使用`/apilink/u8api`接口可以有效解决这一问题,通过定时任务可靠触发,避免漏单现象。在实际操作中,我们需要重点考虑分页和限流的问题,以防止大量请求导致系统性能下降或超时错误。 ```http POST /apilink/u8api Host: yourserver.com Content-Type: application/json { "type": "other_storage", "date_range": { "start": "2023-01-01", "end": "2023-10-31" }, ... } ``` #### 数据快速写入WDT——批量集成 成功获取数据后,需要将其写入到WDT中的库存订单表。利用`wdt.vip.wms.stockinout.order.push` API实现这一目标。同样,为了提升效率,大量数据需要批量写入,同时保证每条记录都能被正确处理,没有遗漏。 ```http POST wdt.vip.wms.stockinout.order.push Host: api.wangdiantong.com Content-Type: application/json { ... // 批量订单列表字段设置, ... } ``` #### 解决兼容性挑战——格式差异与映射对接 由于两个系统的数据格式存在一定差异,在进行转换和映射时特别重要。在这一步骤中,需要借助轻易云的定制化工具进行精细化配置,从而适应不同业务需求。同时,实时监控和日志记录有助于及时发现并修正潜在问题,确保整个流程透明可追溯。 #### 异常处理机制与重试策略设定 为了提高系统稳定性和健壮性,对可能出现的异常情况进行识别并设计相应的重试机制十分必要。例如,当某一记录推送失败时,可以自动重新尝试发送特定次数,并且生成详细日志以供进一步分析。这不仅降低了人工干预成本,还显著提升了整体工作效率。 以上步骤简要描述了用友U8至WDT的数据集成过程核心环节。下一部分将深入探讨每个环节 ![金蝶与CRM系统接口开发配置](https://pic.qeasy.cloud/D21.png~tplv-syqr462i7n-qeasy.image) ### 用友U8接口调用与数据加工技术案例 在轻易云数据集成平台中,调用用友U8接口获取并加工数据是生命周期的第一步。本文将详细探讨如何通过配置元数据来实现这一过程。 #### 接口调用配置 首先,我们需要配置用友U8接口的调用参数。根据提供的元数据配置,我们使用`/apilink/u8api`作为API路径,并采用POST方法进行请求。以下是具体的请求参数配置: ```json { "api": "/apilink/u8api", "effect": "QUERY", "method": "POST", "number": "cbuscode", "id": "ccode", "name": "id", "idCheck": true, "request": [ { "field": "data", "label": "消息体参数", "type": "object", "children": [ { "field": "过滤条件_1", "label": "开始时间", "type": "object", "children": [ { "field": "名称", "label": "字段", "type": "string", "value": "dnverifytime" }, { "field": "比较符号", "label": "大于等于", "type": "string", "value": ">=" }, { "field": "值", "label": "", 'type': 'string', 'value': '{{LAST_SYNC_TIME|datetime}}' } ] }, { 'field': '过滤条件_2', 'label': '指定仓库', 'type': 'object', 'children': [ { 'field': '名称', 'label': '字段', 'type': 'string', 'value': 'cwhcode' }, { 'field': '比较符号', 'label': '', 'type': 'string', 'value': 'in' }, { 'field': '值', 'label': '', 'type': '', value: '' } ] }, { field: '', label: '', type: '', children: [ ] } ] } ], otherRequest: [ { field: '', label: '', type: '', describe: '', value: '' } ], autoFillResponse: true, } ``` #### 数据请求与清洗 在数据请求阶段,我们需要确保请求参数的准确性和完整性。元数据中的`data`字段包含了消息体参数,其中包括两个主要过滤条件:开始时间和指定仓库。 - **开始时间过滤条件**:通过`dnverifytime`字段进行过滤,使用大于等于符号(>=)来筛选从上次同步时间({{LAST_SYNC_TIME|datetime}})之后的数据。 - **指定仓库过滤条件**:通过`cwhcode`字段进行过滤,使用in操作符来筛选特定仓库编号的数据(10,32,12,03)。 此外,还需要设置分页参数以控制每次请求的数据量和页码: ```json { field: apicontext, label: 分页参数, type: object, children: [ { field: pagesize, label: 分页大小, type: string, value: '' }, { field: pageindex, label: 页码, type: string, value: '' } ] } ``` #### 数据转换与写入 在获取到原始数据后,需要对其进行转换和清洗,以符合目标系统的要求。轻易云平台提供了自动填充响应(autoFillResponse)的功能,可以简化这一过程。 例如,对于其他入库类型的数据,我们可以通过以下方式进行处理: 1. **解析响应数据**:提取所需字段,如单据编号(cbuscode)、单据日期、仓库编码等。 2. **数据转换**:将原始数据格式转换为目标系统所需的格式。例如,将日期格式从YYYY-MM-DD转换为YYYYMMDD。 3. **写入目标系统**:将清洗后的数据写入目标系统,通过API接口或数据库连接实现。 #### 技术要点总结 - **接口路径与方法**:确保API路径为`/apilink/u8api`,并使用POST方法。 - **消息体参数配置**:根据业务需求设置过滤条件和分页参数,确保请求的数据准确性。 - **自动填充响应**:利用平台提供的自动填充功能,简化数据转换和写入过程。 通过以上步骤,我们可以高效地调用用友U8接口获取并加工数据,为后续的数据集成奠定基础。在实际应用中,根据具体业务需求调整元数据配置,可以进一步提升集成效率和准确性。 ![金蝶与WMS系统接口开发配置](https://pic.qeasy.cloud/S23.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台将源平台数据转换为旺店通·企业奇门API格式并写入目标平台 在数据集成的生命周期中,ETL(提取、转换、加载)过程是至关重要的一环。本文将深入探讨如何利用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为旺店通·企业奇门API接口所能接收的格式,最终写入目标平台。 #### API接口配置与请求格式 首先,我们需要了解旺店通·企业奇门API接口的具体配置和请求格式。根据提供的元数据配置,接口`wdt.vip.wms.stockinout.order.push`使用POST方法来推送数据。以下是该接口的主要字段及其描述: - `api_outer_no`: 接口外部单号,唯一标识推送的单据编号。 - `warehouse_no`: 仓库编号,用于区分不同仓库。 - `order_type`: 出入类型,此处固定为"2"表示入库。 - `logistics_fee`, `other_fee`: 分别表示物流费用和其他费用。 - `province`, `city`, `district`, `address`: 地址相关信息。 - `contact`, `mobile`: 联系人信息。 - `remark`: 备注信息,结合了多个源字段。 - `auto_check`: 自动审核选项,默认为"1"。 - `goods_list`: 货品明细节点,包括`spec_no`(商家编码)、`num`(入库数量)等子字段。 #### 数据转换与映射 在进行数据转换时,需要将源平台的数据字段映射到目标平台所需的字段。例如: ```json { "api_outer_no": "{ccode}", "warehouse_no": "{cwhcode}", "order_type": "2", "logistics_fee": "0", "other_fee": "", "province": "", "city": "", "district": "", "address": "", "contact": "{chandler}", "mobile": "", "remark": "{cmemo}-{cbuscode}-", "auto_check": "1", "goods_list": [ { "spec_no": "{{body.cinvcode}}", "num": "{{body.iquantity}}", "position_no": "", "price": "", "batch_no": "", "remark": "" } ], "prop1": "{cbuscode}", "prop2": "{cdepname}", "prop3": "_function case when '{crdcode}'='101' then '外部采购' when '{crdcode}'='102' then '普通采购' when '{crdcode}'='103' then '采购获赠' when '{crdcode}'='104' then '调拨入库' when '{crdcode}'='105' then '客户返修(旧)' when '{crdcode}'='106' then '盘盈入库' when '{crdcode}'='107' then '组装入库' when '{crdcode} '='108' then '电商换货入库' when '{crdcode}'='109' then '样品借用归还' when '{crdcode}'='110' then '客户返修借入' when '{crdcode}'='111' then '委外入库' when '{crdcode}'='112' then '生产入库' \nwhen '{crdcode}'='113' then '拆卸入库' when '{crdcode}'='114' then '形态转换入库' else '' end", "prop4": "{ddate}" } ``` #### 实际操作步骤 1. **提取数据**:从源系统中提取所需的数据,这一步通常通过SQL查询或API调用实现。提取的数据包括订单编号、仓库编号、联系人信息、货品明细等。 2. **清洗与预处理**:对提取的数据进行清洗和预处理,如去除空值、格式化日期等。这一步确保数据质量和一致性。 3. **字段映射与转换**:根据元数据配置,将源系统的数据字段映射到目标系统所需的字段。例如,将源系统中的订单编号`ccode`映射到目标系统中的`api_outer_no`。 4. **构建请求报文**:根据映射后的字段构建API请求报文。确保所有必填字段都有相应的值,并且值符合目标系统的要求。 5. **发送请求并处理响应**:使用HTTP POST方法将构建好的请求报文发送到旺店通·企业奇门API接口,并处理响应结果。如果响应成功,则表示数据成功写入目标系统;如果失败,则需要根据错误信息进行调试和修正。 #### 示例代码 以下是一个简单的Python示例代码,展示如何构建并发送API请求: ```python import requests import json # 构建请求报文 payload = { "api_outer_no": ccode, "warehouse_no": cwhcode, # ...其他字段 "goods_list":[ { "spec_no": body_cinvcode, # ...其他子字段 } ] } # 设置请求头 headers = { 'Content-Type': 'application/json' } # 发起POST请求 response = requests.post('https://api.wangdiantong.com/wdt/vip/wms/stockinout/order/push', headers=headers, data=json.dumps(payload)) # 检查响应状态 if response.status_code == 200: print("Data successfully pushed to Wangdiantong API") else: print(f"Failed to push data: {response.text}") ``` 通过以上步骤,我们可以实现将源平台的数据经过ETL转换后,成功写入到旺店通·企业奇门API接口中。这不仅提高了数据处理效率,还确保了各系统间的数据一致性和准确性。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/T5.png~tplv-syqr462i7n-qeasy.image)