轻易云平台ETL技术案例:将数据写入金蝶云星空

  • 轻易云集成顾问-曾平安
### 客户同步方案——1-DZ-ok:旺店通·企业奇门数据集成到金蝶云星空 在本技术案例中,我们将深入探讨如何通过轻易云数据集成平台,实现旺店通·企业奇门的数据高效、无缝地对接到金蝶云星空。为了确保整个过程顺利进行,本方案特别关注以下几个关键点:避免漏单、大量数据快速写入、定时可靠抓取接口数据以及异常处理。 首先,针对多个业务场景中可能出现的漏单问题,我们利用了精细化调度和实时监控功能。具体流程上,借助 `wdt.stockout.order.query.trade` 接口,从旺店通·企业奇门中抓取出库订单数据,并采用分页机制确保大批量数据完整读取,同时通过限流措施防止API调用过载。这些步骤均在轻易云的平台上实现,可视化操作界面对流程的每一步骤都有详细展示,有助于运维人员掌控全局。 接着,为了将这些获取的数据准确、高效地写入到金蝶云星空,我们使用其提供的批量保存API: `batchSave`。这一过程中必须解决好两者之间的数据格式差异问题。在此方案中,对不同字段进行了精准映射,并且提前设计好冗余处理逻辑,以保证任何不合规或缺失的数据都能被及时捕捉和修正。此外,通过设置自动重试机制,对接中的任何异常情况都可以得到迅速响应和处理,不会影响整体业务流程的正常运行。 该同步方案还引入了日志记录与报告生成系统,每次操作都会详细记录下执行情况,包括成功条目数、失败原因等,使得后续追踪分析变得方便快捷。不仅如此,在整合过程中,也适配了特定业务需求,例如某些订单类型需要特殊标记或处理,这一切都能够灵活配置并实时生效。 通过这样的一套综合性解决方案,用户不仅能够实现旺店通·企业奇门与金蝶云星空之间高效稳定的数据交互,还能享受到全程透明可视化带来的运营便利与风险控制能力提升。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D5.png~tplv-syqr462i7n-qeasy.image) ### 调用源系统旺店通·企业奇门接口wdt.stockout.order.query.trade获取并加工数据 在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用旺店通·企业奇门接口`wdt.stockout.order.query.trade`来获取并加工数据。 #### 接口调用配置 首先,我们需要配置接口调用的元数据。根据提供的元数据配置,可以看到该接口使用POST方法进行请求,主要用于查询出库订单信息。以下是具体的请求参数配置: - **start_time** 和 **end_time**:用于增量获取数据,分别表示开始时间和结束时间,格式为`yyyy-MM-dd HH:mm:ss`。这些参数可以动态设置为上次同步时间和当前时间。 - **status**:订单状态,包括已取消、已审核、已发货、部分打款、已完成和异常发货等状态。 - **shop_nos**:店铺编号,用于区分不同店铺的数据。 - **warehouse_no**:仓库编号,用于区分不同仓库的数据。 - **page_size** 和 **page_no**:用于分页控制,每页返回的数据条数和页号。 #### 请求参数示例 以下是一个具体的请求参数示例: ```json { "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}", "status": "95,105,110,113", "shop_nos": "005,006,007,0081,0091", "warehouse_no": "WH001", "page_size": "{PAGINATION_PAGE_SIZE}", "page_no": "{PAGINATION_START_PAGE}" } ``` #### 数据清洗与转换 在获取到原始数据后,需要对其进行清洗和转换,以便后续处理。轻易云平台提供了自动填充响应(autoFillResponse)功能,可以简化这一过程。 例如,对于订单信息中的字段,可以进行如下处理: - **order_no**(订单编号):作为唯一标识符,用于后续的数据匹配和更新。 - **stockout_id**(出库单ID):用于关联出库单的详细信息。 - **invoice_title**(发票抬头):需要检查其值是否为空,如果为空则过滤掉该记录。 #### 数据处理逻辑 根据元数据配置中的条件,我们可以设置相应的数据处理逻辑。例如: ```json "condition": [ [ { "field": "invoice_title", "logic": "neqv2", "value": null } ] ] ``` 这表示我们只保留发票抬头不为空的记录。 #### 实际应用案例 假设我们需要从旺店通系统中获取某一时间段内所有已发货、部分打款、已完成和异常发货状态的订单,并且这些订单属于特定店铺和仓库。我们可以通过以下步骤实现: 1. 配置请求参数,设置时间范围、订单状态、店铺编号和仓库编号等信息。 2. 调用`wdt.stockout.order.query.trade`接口,获取符合条件的订单数据。 3. 对返回的数据进行清洗和转换,确保每条记录都符合业务需求,例如过滤掉发票抬头为空的记录。 4. 将处理后的数据写入目标系统或数据库中,以便后续分析和使用。 通过以上步骤,我们可以高效地实现从源系统到目标系统的数据集成,为业务决策提供准确可靠的数据支持。 ![如何对接钉钉API接口](https://pic.qeasy.cloud/S5.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口的技术案例 在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,转为目标平台能够接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台,将客户数据转换并写入金蝶云星空API接口。 #### 元数据配置解析 元数据配置是ETL过程中的核心部分,它定义了如何从源数据中提取、转换并加载到目标系统。以下是我们使用的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "distributionOrg": "100042", "request": [ {"field": "FNumber", "label": "客户编码", "type": "string", "describe": "客户编码"}, {"field": "FName", "label": "客户名称", "type": "string", "describe": "客户名称", "value": "{invoice_title}"}, {"field": "FGroup", "label": "客户分组", "type": "string", "describe": "客户分组", "value":"B11", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"创建组织", "parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FUseOrgId","label":"使用组织(待确定)","type":"string","describe":"使用组织", "parser":{"name":"ConvertObjectParser","params":"FNumber"}, "value":"_function case when '{shop_no}' in ('005' , '006' , '007' , '0081' , '0091') then 'DZ' when '{shop_no}' in ('002' , '003' , '004' , '0071') then 'BZ' end"}, {"field":"FINVOICETITLE","label":"发票抬头","type":"string","value":"{invoice_title}"}, {"field":"FTAXREGISTERCODE","label":"纳税登记号","type":"string","value":"{invoice_content}"} ], ... } ``` #### 数据请求与清洗 在元数据配置中,我们首先定义了需要从源系统提取的数据字段。例如,`FNumber`代表客户编码,`FName`代表客户名称等。这些字段通过轻易云的数据请求功能,从源系统中提取出来。 #### 数据转换 在数据转换阶段,我们需要将提取的数据转换为金蝶云星空API能够接受的格式。以下是几个关键字段的转换逻辑: - **客户名称 (`FName`)**:直接从源系统的`invoice_title`字段映射过来。 - **客户分组 (`FGroup`)**:固定值为`B11`,通过`ConvertObjectParser`解析。 - **创建组织 (`FCreateOrgId`)**:固定值为`100`,同样通过`ConvertObjectParser`解析。 - **使用组织 (`FUseOrgId`)**:根据条件判断,如果店铺编号在特定范围内,则赋值为相应的组织代码,例如: ```sql _function case when '{shop_no}' in ('005', '006', '007', '0081', '0091') then 'DZ' when '{shop_no}' in ('002', '003', '004', '0071') then 'BZ' end ``` #### 数据写入 经过上述步骤的数据清洗和转换后,我们使用金蝶云星空API接口将这些数据写入目标系统。具体操作如下: - **API接口调用**:使用POST方法调用金蝶云星空的`batchSave` API接口。 - **请求体构建**:根据元数据配置构建请求体,其中包括业务对象表单ID (`FormId: BD_Customer`) 和执行操作 (`Operation: BatchSave`) 等参数。 - **提交并审核**:设置 `IsAutoSubmitAndAudit: true`,确保数据在写入后自动提交并审核。 以下是一个完整的请求示例: ```json { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... { ... ![如何对接钉钉API接口](https://pic.qeasy.cloud/T13.png~tplv-syqr462i7n-qeasy.image)