ETL转换:金蝶数据写入旺店通·企业奇门的实战经验

  • 轻易云集成顾问-杨嫦
### 系统对接集成案例:金蝶云星空数据集成到旺店通·企业奇门 在实际业务操作中,实现金蝶云星空与旺店通·企业奇门的数据无缝对接,能够有效提升系统之间的协同效率。本次技术案例将深入探讨如何使用轻易云数据集成平台,将金蝶云星空中的物料信息定时抓取并写入到旺店通·企业奇门。 首先,为了确保从源头上获取准确的数据,我们调用金蝶云星空提供的executeBillQuery接口来进行数据查询。该接口支持复杂的过滤条件,使得我们能够精准地定位需要同步的物料记录。此外,需要特别注意的是,金蝶云星空API存在分页和限流的问题,因此在请求数据时,我们设计了一套灵活的分页处理机制,并针对限流做出合理应对,以避免因为频繁API调用导致被暂时封禁。 为了保证高效的数据传输,将大量的信息快速可靠地写入到目标系统— 旺店通·企业奇门,我们采用wdt.goods.push API进行批量数据推送。在这个过程中,一方面实现了不同系统间数据格式差异的实时转换;另一方面通过自定义映射规则,确保每条记录都能正确映射至目标字段。这一过程不仅需要精确匹配各字段类型,也必须考虑目标系统对于特定值范围和字符长度等限制。 此外,为进一步提高本集成方案的健壮性,我们重点加强了异常处理及错误重试机制。当出现任何网络波动或系统故障情况时,平台会自动捕捉到相应错误信息,并根据预设策略进行多次重试,同时记录详细日志供后续分析和优化使用。这样既保证了任务执行过程中的高稳定性,又为后期问题排查和性能调优提供有力保障。 最后,通过轻易云平台强大的可视化操作界面与全生命周期管理功能,不仅令所有步骤清晰透明,更使得整个流程便于监控与维护,大幅提升整体运维效率。 ![钉钉与MES系统接口开发配置](https://pic.qeasy.cloud/D39.png~tplv-syqr462i7n-qeasy.image) ### 调用金蝶云星空接口executeBillQuery获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取物料信息,并对数据进行初步加工。 #### 接口配置与请求参数 首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据提供的元数据配置,以下是该接口的主要参数: - **API**: `executeBillQuery` - **方法**: `POST` - **表单ID**: `BD_MATERIAL` 请求参数包括多个字段,每个字段都有其特定的标签、类型和描述。以下是一些关键字段: ```json [ {"field":"FMATERIALID","label":"FMATERIALID","type":"string","describe":"111","value":"FMATERIALID"}, {"field":"FNumber","label":"FNumber","type":"string","describe":"111","value":"FNumber"}, {"field":"FName","label":"FName","type":"string","describe":"111","value":"FName"}, {"field":"FSpecification","label":"FSpecification","type":"string","describe":"111","value":"FSpecification"}, {"field":"FOldNumber","label":"FOldNumber","type":"string","describe":"111","value":"FOldNumber"}, {"field":"FBARCODE","label":"FBARCODE","type":"string","describe":"111","value":"FBARCODE"} ] ``` 此外,还有一些分页和过滤参数,例如: ```json [ {"field": "Limit", "label": "Limit", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_PAGE_SIZE}"}, {"field": "StartRow", "label": "StartRow", "type": "string", "describe": "金蝶的查询分页参数", "value": "{PAGINATION_START_ROW}"}, {"field": "FilterString", "label": "FilterString", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}'"} ] ``` #### 请求示例 为了更好地理解如何调用该接口,以下是一个具体的请求示例: ```json { "FormId": "BD_MATERIAL", "FieldKeys": ["FMATERIALID", "FNumber", "FName"], "FilterString": "FApproveDate>='2023-01-01'", "Limit": 100, "StartRow": 0 } ``` 该请求将从金蝶云星空中查询物料信息,过滤条件为审批日期大于等于2023年1月1日,并且每次查询返回100条记录,从第0行开始。 #### 数据清洗与转换 获取到数据后,需要对其进行清洗和转换,以便后续处理。例如,我们可能需要将某些字段的数据类型进行转换,或者根据业务需求添加新的计算字段。 假设我们从接口返回了以下数据: ```json [ { "FMATERIALID": "1001", "FNumber": "MAT001", "FName": "物料A", ... }, { ... } ] ``` 我们可以对这些数据进行如下处理: 1. **字段重命名**:将`FMATERIALID`重命名为`MaterialID`。 2. **类型转换**:将某些字符串类型的数据转换为数值类型。 3. **新增字段**:根据现有字段计算新的业务字段,例如库存状态。 处理后的数据可能如下所示: ```json [ { "MaterialID": 1001, "MaterialCode": "MAT001", ... // 新增字段 “StockStatus”: “In Stock” }, { ... } ] ``` #### 数据写入目标系统 完成数据清洗和转换后,可以将处理后的数据写入目标系统(如旺店通)。这一步通常涉及调用目标系统的API,将整理好的数据推送过去。 例如,调用旺店通的API写入物料信息: ```json { // 旺店通API相关配置与请求体 } ``` #### 总结 通过轻易云数据集成平台,我们能够高效地调用金蝶云星空的`executeBillQuery`接口获取物料信息,并对其进行必要的数据清洗和转换。这不仅提高了数据处理效率,还确保了不同系统间的数据一致性和准确性。在实际操作中,根据具体业务需求灵活调整请求参数和处理逻辑,是实现高效数据集成的关键。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台ETL转换:金蝶物料数据写入旺店通·企业奇门API接口 在轻易云数据集成平台的生命周期中,ETL(Extract, Transform, Load)转换是关键的一步,特别是在将源平台的数据转化为目标平台所能接收的格式时。本文将深入探讨如何将金蝶系统中的物料数据通过ETL转换,最终写入到旺店通·企业奇门API接口。 #### 数据请求与清洗 首先,我们需要从金蝶系统中提取物料数据。这一步涉及到对源数据的请求和清洗,以确保数据的准确性和一致性。在此过程中,我们会对数据进行初步处理,例如去除冗余字段、标准化数据格式等。 #### 数据转换与写入 接下来是本文的重点:如何将清洗后的数据进行转换,并通过旺店通·企业奇门API接口写入目标平台。我们使用以下元数据配置来实现这一过程: ```json { "api": "wdt.goods.push", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "goods_list", "label": "货品节点", "type": "array", "value": "skus", "children": [ {"field": "goods_no", "label": "商品编码", "type": "string", "value": "{FNumber}"}, {"field": "goods_name", "label": "货品名称", "type": "string", "value": "{FName}"}, {"field": "short_name", "label": "货品简称", "type": "string", "value": "{FName}"}, {"field": "alias", "label": "别名", "type": "string", "value": "{FName}"}, {"field": "unit_name", "label": "基本单位", "type": "string", "value":"{FBaseUnitID_FName}"}, {"field":"aux_unit_name","label":"辅助单位","type":"string","value":"{F_kda_Base_Name}"}, {"field":"spec_code","label":"规格编码","type":"string"}, {"field":"spec_name","label":"规格名称","type":"string","value":"{FSpecification}"}, {"field":"goods_type","label":"货品类别","type":"string","value":"1"}, {"field":"barcode","label":"条码","type":"string","value":"{FBARCODE}"}, { "field":"spec_list", "label":"单品节点", "type":"array", children":[ {"field":"spec_no","label":"商家编码","type":"string","value":"{FNumber}"}, {"field":"spec_name","label":"规格名称","type":"string","value":"{FSpecification}"}, {"field":"spec_code","label":"规格编码","type":"string"} ] } ] } ] } ``` #### 元数据配置解析 1. **API接口定义**: - `api`: 定义了目标API接口为`wdt.goods.push`。 - `method`: 使用HTTP POST方法提交数据。 - `idCheck`: 启用ID检查,确保唯一性。 2. **请求结构**: - `goods_list`字段是一个数组,包含多个货品节点,每个节点对应一个物料信息。 - 每个货品节点包含多个字段,如`goods_no`(商品编码)、`goods_name`(货品名称)、`short_name`(货品简称)等,这些字段从金蝶系统中提取并映射到相应的字段值。 3. **嵌套结构**: - `spec_list`是一个嵌套数组,表示单个货品下的多个规格信息。每个规格信息包含商家编码、规格名称和规格编码等字段。 #### 数据映射与转换 在实际操作中,我们需要将金蝶系统中的字段值映射到旺店通·企业奇门API所需的格式。例如: - 金蝶中的`FNumber`字段映射为API中的`goods_no`。 - 金蝶中的`FName`字段分别映射为API中的`goods_name`, `short_name`, 和 `alias`。 - 金蝶中的`FBARCODE`字段映射为API中的`barcode`. 这种映射关系确保了源平台的数据能够准确无误地转化为目标平台所需的格式。 #### 数据写入 完成上述转换后,我们使用HTTP POST方法将处理后的JSON数据提交到旺店通·企业奇门API接口。以下是一个示例请求: ```json { “goods_list”: [ { “goods_no”: “12345”, “goods_name”: “商品A”, “short_name”: “商品A”, “alias”: “商品A”, “unit_name”: “件”, “aux_unit_name”: “箱”, “spec_code”: “”, “spec_name”: “规格A”, “goods_type”: “1”, “barcode”: “1234567890123”, “spec_list”: [ { “spec_no”: “12345-1”, “spec_name”: “规格A-1”, “spec_code”: “” } ] } ] } ``` 通过以上步骤,我们成功地实现了从金蝶系统到旺店通·企业奇门API接口的数据集成。这个过程不仅提高了数据处理效率,还确保了不同系统间的数据一致性和准确性。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/T29.png~tplv-syqr462i7n-qeasy.image)