ETL转换:金蝶云和旺店通数据集成全流程

  • 轻易云集成顾问-蔡威
### 金蝶云星空到旺店通·旗舰版的数据集成案例分享 实现高效、稳定的系统对接,往往是业务自动化和精细管理的关键步骤。金蝶云星空与旺店通·旗舰版作为两大广泛应用的企业级SaaS服务平台,其数据互动需求尤为迫切。本次案例探讨一个具体的对接场景:如何将金蝶云星空内出库申请的数据顺利集成至旺店通·旗舰版中的原始订单模块。 第一步,我们利用轻易云数据集成平台,通过调用金蝶云星空提供的API接口`executeBillQuery`定时抓取出库申请数据。这一过程中需要克服分页处理及限流问题,以确保高吞吐量的数据能够无误地被提取和传输。而后,将这些提取的数据通过自定义转换逻辑适配为符合旺店通·旗舰版标准格式,并批量写入到其API接口`sales.RawTrade.pushSelf2`中。 在实际操作中,为了避免漏单现象,增设了实时监控与日志记录功能,对每一个拿回来的请求进行详细记录。同时,通过集中监控和告警系统来实时掌握任务状态,及时发现并解决潜在异常,再辅以完善的错误重试机制保障数据准确抵达目标系统。 总结来说,这个方案不仅结合了多项技术特性,实现两大平台间的数据无缝对接,更有效提高了整个流程效率,使得企业能更专注于核心业务而非杂乱的信息传递环节。下文我们将详细剖析各阶段实施细节及技术要点。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D20.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,第一步是从源系统获取数据并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来实现这一过程。 #### 接口配置与调用 首先,我们需要了解`executeBillQuery`接口的基本配置。根据提供的元数据配置,接口采用POST方法进行请求,主要用于查询操作。以下是关键字段及其描述: - **api**: `executeBillQuery` - **method**: `POST` - **effect**: `QUERY` - **number**: `FBillNo` - **id**: `FEntity_FEntryID` - **idCheck**: true 这些配置确保了我们能够准确地调用该接口,并通过单据编号(FBillNo)和实体主键(FEntity_FEntryID)来唯一标识和检索数据。 #### 请求参数解析 请求参数分为两类:基础请求参数和其他请求参数。基础请求参数包括实体主键、单据编号、申请组织等字段,而其他请求参数则包括分页信息、过滤条件等。 ##### 基础请求参数 以下是一些关键的基础请求参数及其描述: ```json [ {"field":"FID","label":"实体主键","type":"string","describe":"实体主键","value":"FID"}, {"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","describe":"FEntity_FEntryID","value":"FEntity_FEntryID"}, {"field":"FBillNo","label":"单据编号","type":"string","describe":"单据编号","value":"FBillNo"}, {"field":"FStockOrgId","label":"申请组织","type":"string","describe":"申请组织","value":"FStockOrgId.FNumber"}, {"field":"FDate","label":"申请日期","type":"string","describe":"申请日期","value":"FDate"}, {"field":"FCustId_FNumber","label":"客户","type":"string","describe":"客户","value":"FCustId.FNumber"} ] ``` 这些字段用于指定查询条件,例如通过单据编号(FBillNo)来查询特定的出库申请记录。 ##### 其他请求参数 其他请求参数用于控制查询行为,例如分页和过滤条件: ```json [ {"field":"Limit","label":"最大行数","type":"string","describe":"最大行数","value":"{PAGINATION_PAGE_SIZE}"}, {"field":"StartRow","label":"开始行索引","type":"string","describe":"开始行索引","value":"{PAGINATION_START_ROW}"}, {"field":"FilterString","label":"过滤条件","type": "string", "describe": "过滤条件", "value": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}'"}, {"field": "FieldKeys", "label": "需查询的字段key集合", "type": "array", "describe": "需查询的字段key集合", "parser": {"name": "ArrayToString", "params": ","}}, {"field": "FormId", "label": "业务对象表单Id", "type": "string", "describe": "业务对象表单Id", "value": "STK_OutStockApply"} ] ``` 这些参数确保了我们能够灵活地控制查询结果,例如限制返回的记录数、设置起始行索引以及应用特定的过滤条件。 #### 数据加工与处理 在获取到原始数据后,我们需要对其进行初步加工,以便后续的数据转换与写入操作。轻易云平台提供了自动填充响应(autoFillResponse)的功能,可以根据预定义的规则自动处理响应数据。这一步骤极大地简化了数据处理流程,提高了效率。 例如,通过以下配置,我们可以自动填充响应数据: ```json "autoFillResponse": true ``` 这意味着在接收到金蝶云星空返回的数据后,系统会自动根据元数据配置将其映射到相应的字段,从而完成初步的数据清洗和整理。 #### 实际案例应用 假设我们需要从金蝶云星空中获取某一时间段内所有已审批的出库申请记录,并将其导入到旺店通系统中。我们可以按照以下步骤进行操作: 1. **设置过滤条件**:通过`FilterString`字段设置时间范围,例如`FApproveDate>='2023-01-01'`。 2. **指定查询字段**:通过`FieldKeys`字段指定需要查询的字段集合,例如`["FBillNo", "FDate", "FCustId_FNumber"]`。 3. **调用接口**:发送POST请求至`executeBillQuery`接口,并传递上述配置参数。 4. **处理响应数据**:利用自动填充功能,将返回的数据映射到预定义的字段中,完成初步的数据清洗。 5. **后续处理**:将清洗后的数据进一步转换并写入旺店通系统,实现跨系统的数据集成。 通过以上步骤,我们能够高效地实现从金蝶云星空获取并加工出库申请记录,为后续的数据转换与写入奠定基础。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 ![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S20.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台生命周期的第二步:ETL转换与写入旺店通·旗舰版API接口 在数据集成过程中,ETL(Extract, Transform, Load)是一个至关重要的步骤。本文将详细探讨如何利用轻易云数据集成平台,将金蝶出库申请的数据经过ETL转换后,写入到目标平台——旺店通·旗舰版的API接口中。 #### 元数据配置解析 在进行ETL转换之前,我们需要先了解元数据配置。以下是我们将使用的元数据配置: ```json { "api": "sales.RawTrade.pushSelf2", "effect": "EXECUTE", "method": "POST", "idCheck": true, "operation": { "method": "merge", "field": "FBillNo", "bodyName": "rawTradeOrderList", "bodySum": ["FQty"], "header": ["FCustId_FNumber", "FBillNo", "FDate", "F_PAUF_Text_LXREN", "F_PAUF_Text_province", "F_PAUF_Text_area", "F_PAUF_Text_city", "F_PAUF_Text_address", "F_PAUF_Text_SJHAO", "FNote", "F_PAUF_Qty_SLHZ", "F_PAUF_Decimal_JINEHUIZ", "FStockId"], "body": ["FQty", "FEntryNote", "FEntity_FEntryID", "FMaterialId_Fnumber", "FMaterialName", "FMaterialId_FBARCODE", "F_PAUF_Decimal_JINE"] }, ... } ``` #### 数据请求与清洗 首先,我们从金蝶系统中获取出库申请的数据。假设我们已经完成了数据请求与清洗步骤,获得了如下结构的数据: ```json { ... // 清洗后的数据 } ``` #### 数据转换 接下来,我们需要将这些清洗后的数据按照旺店通·旗舰版API接口所需的格式进行转换。根据元数据配置,具体操作如下: 1. **Header部分转换**: - `FCustId_FNumber` -> `shop_no` - `FBillNo` -> `tid` - `FDate` -> `trade_time`, `pay_time` - `...` 2. **Body部分转换**: - 每个订单的货品明细节点`rawTradeOrderList`需要进行详细映射,如下: - `FBillNo` -> `tid` - `{FBillNo}-{{rawTradeOrderList.FEntity_FEntryID}}` -> `oid` - `{{rawTradeOrderList.FMaterialId_Fnumber}}-1` -> `goods_id` - ... 3. **合并与聚合**: 根据元数据配置中的`operation.method: merge`和相关字段,我们需要对相同订单号(`FBillNo`)的记录进行合并,并对数量(`bodySum: FQty`)进行聚合。 #### 数据写入 完成上述转换后,我们将得到符合旺店通·旗舰版API接口要求的数据结构。接下来,通过HTTP POST请求,将这些数据写入目标平台: ```json { ... // 转换后的符合API要求的数据结构 } ``` ```python import requests url = 'https://api.wangdian.cn/openapi2/sales.RawTrade.pushSelf2' headers = {'Content-Type': 'application/json'} data = { # 转换后的数据 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("Data successfully written to Wangdian Tong") else: print("Failed to write data:", response.text) ``` 通过上述步骤,我们成功地将金蝶出库申请的数据经过ETL转换后,写入到了旺店通·旗舰版API接口中。这一过程不仅实现了异构系统间的数据无缝对接,还确保了每个环节的数据准确性和一致性。 以上就是利用轻易云数据集成平台进行ETL转换,并将数据写入目标平台旺店通·旗舰版API接口的详细技术案例。希望这篇文章能够为您提供有价值的技术参考。 ![用友与CRM系统接口开发配置](https://pic.qeasy.cloud/T23.png~tplv-syqr462i7n-qeasy.image)