利用轻易云平台实现数据转换与写入金蝶云星空的步骤

  • 轻易云集成顾问-杨嫦
### 聚水潭数据集成到金蝶云星空的技术实现 在实际操作中,将聚水潭的店铺信息集成到金蝶云星空系统是一项复杂而精细的工作。本文将分享具体的方法与步骤,展示如何利用轻易云的数据集成平台完成这一任务。 #### 确保数据全覆盖:调用聚水潭接口/open/shops/query 为了可靠地抓取聚水潭店铺数据,我们首先需要处理分页和限流问题。在调用`/open/shops/query` API时,必须进行分页请求以确保获取所有店铺信息,并对每次请求限制返回的数据量,以防止因超出API限流导致的数据丢失。通过合理配置分页参数,实现了全面且高效的数据抓取。 #### 快速写入大量数据:批量保存至金蝶云星空 从聚水潭获取到大规模店铺数据后,需要快速将其写入金蝶云星空系统。我们采用了`batchSave` API,通过批量写入方式,有效减少单次HTTP请求次数,提高了整体性能和效率。同时,通过定制化数据映射,对接过程中会根据业务需求调整字段匹配关系,确保两者之间数据格式的一致性,从而降低兼容性问题。 #### 实时监控与日志记录:全程掌握ETL状态 在整个ETL(提取-转换-加载)过程里,我们实时监控每一个步骤。不仅有助于及时发现并解决错误,还可以通过详细的日志记录回溯流程中的各类事件。这些措施确保了我们能够迅速响应潜在异常情况,大幅度提升集成方案的鲁棒性。 以上是完成聚水潭店铺=>金蝶客户这个案例实现部分关键点,接下来将详细讲解具体实施方案及脚本配置内容。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/D37.png~tplv-syqr462i7n-qeasy.image) ### 调用聚水潭接口/open/shops/query获取并加工数据 在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用聚水潭接口`/open/shops/query`获取数据,并对其进行初步加工。 #### 接口配置与请求 首先,我们需要配置元数据以便正确调用聚水潭的API接口。根据提供的元数据配置,我们可以看到以下关键信息: - **API路径**: `/open/shops/query` - **请求方法**: `POST` - **分页参数**: 每页100条记录 - **请求参数**: - `page_index`: 页数,类型为字符串,默认值为"1" - `page_size`: 每页多少条,类型为字符串,默认值为"100" 在轻易云平台上,我们可以通过可视化界面配置这些参数。具体步骤如下: 1. **设置API路径和请求方法**: ```json { "api": "/open/shops/query", "method": "POST" } ``` 2. **配置分页参数**: ```json { "pagination": { "pageSize": 100 } } ``` 3. **定义请求参数**: ```json { "request": [ {"field": "page_index", "label": "页数", "type": "string", "value": "1"}, {"field": "page_size", "label": "每页多少条", "type": "string", "value": "100"} ] } ``` #### 数据请求与清洗 完成元数据配置后,我们可以发起API请求来获取店铺信息。假设我们已经成功获取了第一页的数据,接下来需要对这些数据进行清洗和初步处理。 从元数据中可以看到,每个店铺记录包含两个关键字段: - `shop_name`:店铺名称 - `shop_id`:店铺ID 为了确保数据的完整性和一致性,我们需要对这些字段进行验证和清洗。例如,可以检查`shop_id`是否为空或者重复,并确保`shop_name`符合业务需求。 ```python def clean_data(data): cleaned_data = [] seen_ids = set() for record in data: shop_id = record.get("shop_id") shop_name = record.get("shop_name") if shop_id and shop_id not in seen_ids: seen_ids.add(shop_id) cleaned_data.append({ "shop_id": shop_id, "shop_name": shop_name.strip() # 去除多余空格 }) return cleaned_data ``` #### 数据转换与写入 在完成数据清洗后,我们需要将这些数据转换为目标系统所需的格式,并写入到金蝶客户系统中。这一步通常涉及到字段映射和格式转换。例如,将`shop_name`映射到金蝶客户系统中的客户名称字段。 ```python def transform_to_kingdee_format(cleaned_data): transformed_data = [] for record in cleaned_data: transformed_record = { "CustomerName": record["shop_name"], "CustomerID": record["shop_id"] } transformed_data.append(transformed_record) return transformed_data ``` 最后,通过轻易云平台提供的数据写入功能,将转换后的数据写入到金蝶客户系统中。 #### 小结 通过上述步骤,我们成功地调用了聚水潭的API接口获取店铺信息,并对其进行了清洗、转换和写入。这一过程展示了轻易云平台在处理异构系统集成中的强大能力,确保了数据流动的透明性和高效性。 ![如何开发钉钉API接口](https://pic.qeasy.cloud/S2.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台:将源平台数据转换并写入金蝶云星空API接口 在数据集成生命周期的第二步,ETL(Extract, Transform, Load)转换是关键环节。本文将深入探讨如何利用轻易云数据集成平台,将聚水潭店铺的数据转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。 #### 元数据配置解析 元数据配置是实现数据转换和写入的核心。以下是对元数据配置的详细解析: ```json { "api": "batchSave", "method": "POST", "idCheck": true, "operation": { "rowsKey": "array", "rows": 1, "method": "batchArraySave" }, "request": [ { "field": "FName", "label": "客户名称", "type": "string", "value": "{shop_name}" }, { "field": "FNumber", "label": "客户编码", "type": "string", "value": "{shop_id}", "mapping": { "target": "646333e3dfaa342f3832d948", "direction": "positive" } }, { ... } ], ... } ``` #### 数据请求与清洗 在ETL过程中,首先需要从源平台聚水潭店铺获取原始数据。这一步骤通常涉及到API调用或数据库查询,以获取所需的字段如`shop_name`和`shop_id`等。 #### 数据转换 接下来,我们需要根据元数据配置进行数据转换。以下是几个关键字段的转换逻辑: 1. **客户名称(FName)**: ```json { "field": "FName", "label": "客户名称", "type": "string", "value": "{shop_name}" } ``` 将聚水潭店铺的`shop_name`字段直接映射为金蝶云星空中的客户名称。 2. **客户编码(FNumber)**: ```json { ... {"field":"FNumber","label":"客户编码","type":"string","value":"{shop_id}","mapping":{"target":"646333e3dfaa342f3832d948","direction":"positive"}} ... } ``` `shop_id`被映射为金蝶系统中的客户编码,并通过`mapping`配置确保ID的一致性。 3. **创建组织和使用组织(FCreateOrgId, FUseOrgId)**: ```json { ... {"field":"FCreateOrgId","label":"创建组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"}, {"field":"FUseOrgId","label":"使用组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"100"} ... } ``` 固定值`100`表示创建和使用组织,通过`ConvertObjectParser`进行解析。 4. **客户分组(FGroup)**: ```json { ... {"field":"FGroup","label":"客户分组","type":"string","value":"_function CASE '{{shops.group_name}}' WHEN '电商1部' THEN '02.11' WHEN '电商2部' THEN '02.12' ELSE '02.12' END","parser":{"name":"ConvertObjectParser","params":"FNumber"}} ... } ``` 根据不同的店铺分组名称,将其映射为相应的金蝶系统代码。 5. **商务信息(FT_BD_CUSTOMEREXT)**: ```json { ... {"field":"FT_BD_CUSTOMEREXT","label":"商务信息","type":"object","children":[{"field":"FPROVINCE","label":"省份","type":"string","value":"SF001","parser":{"name":"ConvertObjectParser","params":"FNumber"}},{"field":"FCITY","label":"城市","type":"string","value":"CS020","parser":{"name":"ConvertObjectParser","params":"FNumber"}}]} ... } ``` 商务信息字段包含子对象,如省份和城市,通过嵌套结构进行详细描述和解析。 #### 数据写入 完成数据转换后,下一步是将处理后的数据写入目标平台金蝶云星空。根据元数据配置,采用批量保存操作: ```json { ... {"field": "FormId", ... , value: BD_Customer}, {"field": Operation, ... , value: BatchSave}, {"field": IsAutoSubmitAndAudit, ... , value: true}, {"field": IsVerifyBaseDataField, ... , value: true} } ``` 这些配置确保了表单ID、操作类型、自动提交审核以及基础资料验证等关键参数的正确设置。 通过POST请求,将转换后的JSON对象发送至金蝶云星空API接口,实现批量保存操作: ```http POST /k3cloud/api/batchSave HTTP/1.1 Host: api.kingdee.com Content-Type: application/json Authorization: Bearer {token} { ... } ``` 以上步骤详细展示了如何利用轻易云数据集成平台,将聚水潭店铺的数据经过ETL转换后,成功写入到金蝶云星空系统中。这一过程不仅提升了业务效率,也确保了数据的一致性和准确性。 ![金蝶与SCM系统接口开发配置](https://pic.qeasy.cloud/T20.png~tplv-syqr462i7n-qeasy.image)