数据集成与ETL:将小满客户数据写入金蝶云星空的实施详解

  • 轻易云集成顾问-彭萍
### 小满OKKICRM数据集成到金蝶云星空:从客户数据获取到高效写入 在实际业务运营中,将不同系统间的数据进行无缝对接一直是个挑战,特别是当我们需要将小满OKKICRM中的客户数据实时、高效地导入到金蝶云星空时。本文重点分享如何通过轻易云平台实现这一目标,并详解其中的技术细节。 首先,我们需要解决的是如何定时可靠地抓取小满OKKICRM接口的数据。为了确保不漏单,我们采用/v1/company/list API接口,从CRM系统中批量获取公司客户信息。这一过程中,分页和限流问题尤为关键,因为API调用频率受限,且每次只能拉取一定数量的数据。利用轻易云平台提供的全透明可视化操作界面,可以方便地设置分页参数和限流策略,以保障数据完整性。 接下来需要处理的是小满OKKICRM与金蝶云星空之间的数据格式差异。原始的客户数据通常包含各种字段,这些字段可能并不完全匹配目标系统金蝶云星空所需的格式。因此,我们使用轻易云平台上的转换工具,对获取的原始数据进行必要的字段映射与转换,确保能够准确写入到金蝶应用中。 在处理大量数据快速写入方面,通过调用batchSave API可以有效实现这一点。然而,在实践中,对于突发的大量请求,有必要设计一个错误重试机制,以应对由于网络波动或其他异常情况导致的一些失败请求。同时,为了进一步提高安全性和稳定性,还需结合日志记录功能,对整个过程中的每一步都进行详细监控,当出现异常时能够迅速采取措施纠正。 以上这些步骤只是方案实施的一部分。在下文中,会更加深入剖析具体集成过程以及如何优化各环节细节,实现全面、稳定、高效的小满CRM与金蝶ERP系统的数据对接。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/D37.png~tplv-syqr462i7n-qeasy.image) ### 调用小满OKKICRM接口/v1/company/list获取并加工数据的技术案例 在轻易云数据集成平台中,调用源系统接口并获取数据是整个数据处理生命周期的第一步。本文将详细探讨如何通过调用小满OKKICRM接口`/v1/company/list`来获取客户数据,并进行初步加工处理。 #### 接口调用配置 首先,我们需要配置API调用的元数据。根据提供的元数据配置,接口`/v1/company/list`使用GET方法来请求数据。以下是该接口的主要参数及其含义: - `start_index`: 第几页,默认值为1。 - `count`: 每页记录数,默认值为20。 - `removed`: 是否查询已删除的数据,默认值为0。 - `all`: 查询所有客户,默认值为1。 - `group_id`: 客户分组ID,用于查询特定分组的客户。 - `date`: 查询从此日期到今天为止有更新的客户列表。 - `start_time`: 开始日期,使用变量`{{LAST_SYNC_TIME|datetime}}`表示上次同步时间。 - `end_time`: 结束日期,使用变量`{{CURRENT_TIME|datetime}}`表示当前时间。 #### 请求参数设置 为了确保我们能够获取到最新且完整的数据,我们可以设置如下请求参数: ```json { "start_index": "1", "count": "20", "removed": "0", "all": "1", "start_time": "{{LAST_SYNC_TIME|datetime}}", "end_time": "{{CURRENT_TIME|datetime}}" } ``` 这些参数将确保我们获取到第一页的20条未删除的所有客户数据,并且这些数据是在上次同步时间到当前时间之间更新过的。 #### 数据请求与清洗 在成功调用API并获取到原始数据后,我们需要对这些数据进行初步清洗和加工。以下是一个典型的数据清洗步骤: 1. **过滤无效数据**:根据元数据配置中的条件过滤掉不符合要求的数据。例如,我们可以根据字段`serial_id`是否为空来过滤无效记录: ```json { "condition": [ [{"field": "serial_id", "logic": "neqv2"}] ] } ``` 2. **字段映射与转换**:将原始数据中的字段映射到目标系统所需的字段。例如,将小满OKKICRM中的`company_id`映射到目标系统中的客户ID字段。 3. **格式化处理**:对日期、时间等字段进行格式化处理,以符合目标系统的要求。例如,将日期字段格式化为标准ISO8601格式。 #### 数据转换与写入 在完成初步清洗和加工后,我们需要将处理后的数据转换为目标系统所需的格式,并写入目标系统。在这个过程中,可以利用轻易云平台提供的数据转换功能,例如: - **字段重命名**:将源系统中的字段名转换为目标系统所需的字段名。 - **类型转换**:将字符串类型转换为日期类型等。 例如,将小满OKKICRM中的公司名称(name)和公司ID(company_id)分别映射到金蝶客户系统中的客户名称和客户ID: ```json { "number": "name", "id": "company_id" } ``` 通过上述步骤,我们可以实现从小满OKKICRM获取客户数据并进行初步加工处理,为后续的数据转换与写入奠定基础。轻易云平台提供了全生命周期管理功能,使得每个环节都透明可视,并实时监控数据流动和处理状态,从而极大提升了业务透明度和效率。 ![数据集成平台API接口配置](https://pic.qeasy.cloud/S25.png~tplv-syqr462i7n-qeasy.image) ### 数据集成与ETL转换:将小满客户数据写入金蝶云星空 在数据集成过程中,ETL(提取、转换、加载)是至关重要的一步。本文将详细探讨如何将已经集成的源平台小满客户数据,通过ETL转换为金蝶云星空API接口所能够接收的格式,并最终写入目标平台。 #### API接口配置与元数据解析 在本案例中,我们使用金蝶云星空的`batchSave` API接口来实现数据的批量保存操作。以下是该接口的元数据配置: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ {"field": "FCUSTID", "label": "FCUSTID", "type": "string"}, {"field": "FNumber", "label": "客户编码", "type": "string", "describe": "客户编码", "value": "{serial_id}"}, {"field": "FName", "label": "客户名称", "type": "string", "describe": "客户名称", "value": "{name}"}, {"field": "FShortName", "label": "简称", "type": "string", "describe": "简称"}, {"field": "FGroup", "label": "客户分组", "type": "string", "describe":"客户分组","parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FTEL","label":"联系电话","type":"string","describe":"联系电话"}, {"field":"FUseOrgId","label":"使用组织","type":"string","describe":"使用组织", "parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BY"}, {"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"创建组织", "parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"BY"}, {"field":"FTRADINGCURRID","label":"结算币别","type":"string","describe":"结算币别", "value":"_findCollection find FNumber from 6c0d5895-b0a9-37d2-86db-0a2014b0a1be where FName={{其他信息币种}}", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FADDRESS","label":"地址","type":"string","describe":"地址", "value":"{{联系信息详细地址}}"}, {"field":"FCOUNTRY","label":"国家","type":"string", "value":"_findCollection find FNumber from 1b5a7e3c-7279-3fc4-930d-9f1a3c2a3bce where FDataValue={country_name}", "parser":{"name":"ConvertObjectParser","params":"FNumber"}}, {"field":"FSALGROUPID","label":"销售组","type":"string", "value":"'_findCollection find FNumber from 429f2cbf-2481-3817-80dd-b485b9588861 where FName={{其他信息销售组}}'", "parser":{"name':'ConvertObjectParser','params':'FNumber'}}, {"field':'FSELLER','label':'销售员','type':'string', 'value':'_findCollection find FNumber from c43d4a9a-4fe5-3065-bc76-a0b08c136935 where FName={new_name}', 'parser':{'name':'ConvertObjectParser','params':'FNumber'}} ], 'otherRequest':[ {'field':'FormId','label':'业务对象表单Id','type':'string','describe':'必须填写金蝶的表单ID如:PUR_PurchaseOrder', 'value':'BD_Customer'}, {'field':'Operation','label':'执行的操作','type':'string','describe':'执行的操作', 'value':'BatchSave'}, {'field':'IsAutoSubmitAndAudit','label':'提交并审核','type':'bool', 'describe':'提交并审核','value':'false'}, {'field':'IsVerifyBaseDataField','label':'验证基础资料','type':'bool', 'describe':'是否验证所有的基础资料有效性,布尔类,默认false(非必录)', 'value':true}, {'field': 'StepBySubmitAndAudit', 'label': '分步审核', 'type': 'string', 'value': 'true'} ], 'operation': { 'rowsKey': 'array', 'rows': 1, 'method': 'batchArraySave' } } ``` #### 数据字段解析与转换 在进行ETL转换时,我们需要根据上述元数据配置,将小满客户的数据字段映射到金蝶云星空所需的数据字段。具体步骤如下: 1. **字段映射与转换**: - `FCUSTID`: 客户唯一标识符,不需要特殊处理。 - `FNumber`: 客户编码,映射为小满系统中的`serial_id`。 - `FName`: 客户名称,映射为小满系统中的`name`。 - `FShortName`: 简称,可以直接从小满系统中获取。 - `FTEL`: 联系电话,可以直接从小满系统中获取。 - `FUseOrgId`和`FCreateOrgId`: 使用组织和创建组织,固定值为`BY`。 - `FTRADINGCURRID`: 结算币别,需要通过查找集合中的对应关系进行转换。 - `FADDRESS`: 地址,映射为小满系统中的详细地址。 - `FCOUNTRY`: 国家,通过查找集合中的对应关系进行转换。 - `FSALGROUPID`: 销售组,通过查找集合中的对应关系进行转换。 - `FSELLER`: 销售员,通过查找集合中的对应关系进行转换。 2. **请求参数构建**: 根据上述字段映射与转换规则,构建POST请求的JSON参数。例如: ```json { 'FormId': 'BD_Customer', 'Operation': 'BatchSave', 'IsAutoSubmitAndAudit': false, 'IsVerifyBaseDataField': true, 'StepBySubmitAndAudit': true, 'Model': { ... // 填充映射后的字段 ... } } ``` #### 数据写入目标平台 完成数据字段的映射与转换后,我们通过HTTP POST请求将数据发送至金蝶云星空API接口,实现数据的批量保存。示例如下: ```python import requests url = "<金蝶云星空API接口URL>" headers = { 'Content-Type': 'application/json' } data = { # 构建好的JSON请求参数 } response = requests.post(url, headers=headers, json=data) if response.status_code == 200: print("数据写入成功") else: print("数据写入失败:", response.text) ``` #### 注意事项 在实际操作中,需要注意以下几点: 1. **确保数据格式正确**:严格按照元数据配置中的要求进行字段映射与转换,确保数据格式符合目标平台的要求。 2. **错误处理**:对API请求返回的错误信息进行处理和记录,以便及时发现并解决问题。 3. **性能优化**:对于大批量的数据,可以考虑分批次进行处理,以避免单次请求的数据量过大导致性能问题。 通过上述步骤,我们可以高效地将源平台的小满客户数据转化为目标平台金蝶云星空所需的数据格式,并成功实现数据写入。这不仅提高了业务流程的自动化程度,也极大地提升了数据处理效率。 ![钉钉与WMS系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)