轻易云平台助力高效数据集成:案例解析

  • 轻易云集成顾问-彭萍

案例分享:金蝶云星空数据集成到云水聚

在“物料对接业务系统-ok”方案的实施过程中,我们成功解决了如何将金蝶云星空的数据高效、可靠地集成到云水聚的问题。本文将主要分享该案例中的关键技术细节,特别是如何调用金蝶云星空的executeBillQuery接口,从源头获取准确无误的数据,并使用轻易云平台实现全流程自动化处理。

为了确保数据不漏单,我们采用定时任务调度机制,定期抓取金蝶云星空的接口数据。通过调用executeBillQuery接口,可以实现对数据分页和批量处理,有效应对限流问题。在抓取过程中,为保证每条记录都被完整提取,还增加了实时监控和日志记录功能,如遇异常可即时重试。

在大量数据快速写入到云水聚方面,通过优化API调用以及并发控制,加速了/Kingdee/EditMaterial接口的数据写入速度。同时,通过轻易云平台提供的自定义映射和格式转换功能,我们有效解决了两系统之间的数据格式差异,使得不同维度的数据能够顺利对接。

此次项目还特别关注错误处理与重试机制,实现高度可靠性的同时减少可能出现的手工干预需求。这不仅提高了工作效率,也提升了整个系统运行过程中的稳定性和安全性。

后续内容,将详细解析每个环节中具体操作步骤及实际代码示例。 金蝶与CRM系统接口开发配置

调用金蝶云星空接口executeBillQuery获取并加工数据

在轻易云数据集成平台中,调用源系统的API接口是数据集成生命周期的第一步。本文将详细探讨如何通过调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与调用

首先,我们需要配置元数据,以便正确调用金蝶云星空的executeBillQuery接口。以下是一个典型的元数据配置示例:

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FMATERIALID",
  "name": "FName",
  "idCheck": true,
  "request": [
    {"field":"FMATERIALID","label":"实体主键","type":"int","describe":"实体主键","value":"FMATERIALID"},
    {"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"FNumber"},
    {"field":"FName","label":"名称","type":"string","describe":"名称","value":"FName"},
    {"field":"FSpecification","label":"规格型号","type":"string","describe":"规格型号","value":"FSpecification"},
    {"field":"FOldNumber","label":"旧物料编码","type":"string","describe":"旧物料编码","value":"FOldNumber"},
    {"field":"FBARCODE","label":"条码","type":"string","describe":"条码","value":"FBARCODE"},
    {"field":"FDescription","label":"描述","type":"string","describe":"描述","value":"FDescription"},
    {"field":"FMaterialGroup_FNumber","label":"物料分组","type":"string","describe":"物料分组","value":"FMaterialGroup.FNumber"},
    {"field":"FErpClsID","label":"物料属性","type":"","describe":"","value":""},
    {"field":...}
  ],
  "otherRequest": [
    {"field":...}
  ],
  "autoFillResponse": true
}

请求参数解析

在上述配置中,request字段定义了请求参数,这些参数将用于构建API请求。以下是一些关键字段及其含义:

  • FMATERIALID: 实体主键,用于唯一标识物料。
  • FNumber: 编码,物料的唯一编号。
  • FName: 名称,物料的名称。
  • FSpecification: 规格型号,描述物料的具体规格和型号。
  • FOldNumber: 旧物料编码,用于兼容旧系统中的物料编号。

此外,还有一些其他重要字段,如FBARCODE(条码)、FDescription(描述)等,这些字段可以根据业务需求进行调整。

构建请求体

根据元数据配置,我们可以构建一个完整的请求体。例如:

{
  "FormId": "BD_MATERIAL",
  "FieldKeys": ["FMATERIALID", "FNumber", "FName", ...],
  "FilterString": "FApproveDate>='2023-01-01' and FDocumentStatus='C' and FUseOrgId.FNumber=100",
  "Limit": 100,
  "StartRow": 0
}

在这个请求体中:

  • FormId 指定了业务对象表单Id,这里为"BD_MATERIAL"。
  • FieldKeys 是需要查询的字段集合,可以根据实际需求进行调整。
  • FilterString 用于过滤条件,例如只查询2023年1月1日之后审批通过且使用组织编号为100的数据。
  • LimitStartRow 用于分页控制。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以便后续处理。常见的数据清洗操作包括:

  1. 去除冗余字段:只保留业务需要的字段。
  2. 格式转换:将日期、数值等字段转换为标准格式。
  3. 数据校验:确保所有必填字段都有值,并符合预期格式。

例如,对于日期字段,可以使用以下代码进行格式转换:

import datetime

def convert_date(date_str):
    return datetime.datetime.strptime(date_str, '%Y-%m-%d').strftime('%Y-%m-%d')

data['approve_date'] = convert_date(data['approve_date'])

数据写入目标系统

最后,将清洗和转换后的数据写入目标系统。这一步通常涉及到调用目标系统的API接口,并传递处理后的数据。例如:

import requests

url = 'https://target-system-api.com/data'
headers = {'Content-Type': 'application/json'}
response = requests.post(url, json=cleaned_data, headers=headers)

if response.status_code == 200:
    print('Data successfully written to target system')
else:
    print('Failed to write data to target system')

通过以上步骤,我们实现了从金蝶云星空获取、清洗、转换并写入目标系统的数据集成过程。这不仅提高了数据处理效率,还确保了数据的一致性和准确性。 打通金蝶云星空数据接口

使用轻易云数据集成平台进行ETL转换并写入云水聚API接口

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并转为目标平台云水聚API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台实现这一过程。

1. 数据提取与清洗

首先,我们需要从源系统中提取原始数据,并进行必要的清洗和预处理。这一步骤确保了数据的完整性和一致性,为后续的转换和加载奠定基础。

{
    "FNumber": "P001",
    "FName": "净水器",
    "FSpecification": "型号A",
    "F_CY_Producttype": "售后物料",
    "F_WDZN__CY_Machinetype": "主机",
    "F_CY_Productcategory": "家用",
    "F_WDZN__CY_Watertype": "NB物联网",
    "F_WDZN__CY_Salemode": "卖断",
    "F_WDZN__CY_Salerange": "公开",
    "F_WDZN__CY_Issale": "是",
    "F_WDZN__CY_Brand": "品牌A",
    "FBaseUnitId_FNumber": "个"
}

2. 数据转换

在数据转换阶段,我们需要根据云水聚API接口的要求,将源数据字段映射到目标字段。以下是元数据配置示例:

{
    "api": "/Kingdee/EditMaterial",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true,
    "request": [
        {"field":"productId","label":"物料编码","type":"string","value":"{FNumber}"},
        {"field":"productName","label":"物料名称","type":"string","value":"{FName}"},
        {"field":"model","label":"规格型号","type":"string","value":"{FSpecification}"},
        {"field":"productCategory","label":"产品类型","type":"string","describe":"(售后物料、水机产品、成品滤芯)","value":"{F_CY_Producttype}"},
        {"field":"machineType","label":"机器类型","type":"string","describe":"(主机、分机)","value":"{F_WDZN__CY_Machinetype}"},
        {"field":"productType","label":"产品归类","type":"string","describe":"(商用、家用)","value":"{F_CY_Productcategory}"},
        {"field":"waterFillingMethod","label":"充水方式","type":"string","describe":"(NB物联网)","value":"{F_WDZN__CY_Watertype}"},
        {"field":"saleModel","label":"销售模式","type":"string","describe":"(卖断、租赁)","value":"{F_WDZN__CY_Salemode}"},
        {"field":"saleRange","label":"销售范围","type":"string","describe":"(公开、授权)","value":"{F_WDZN__CY_Salerange}"},
        {"field":"isSale","label":"是否在售","type":"string","describe":"(是、否)","value":"{F_WDZN__CY_Issale}"},
        {"field":"brand","label":"品牌","type":"","value":{"brand"}},
        {"field":"","label":"","type":"","value":{"unit"}},
        {"field":"","label":"","type":"","value":{"inventoryQty"}}

    ]
}

通过上述配置,我们可以将源系统中的字段"FNumber"映射到目标系统中的"productId",以此类推。这样做确保了数据在不同系统之间的一致性和准确性。

3. 数据加载

最后一步是将转换后的数据通过API接口写入目标系统。以下是一个示例HTTP请求:

POST /Kingdee/EditMaterial HTTP/1.1
Host: api.yunshuiju.com
Content-Type: application/json
Authorization: Bearer your_access_token

{
    "productId": "{FNumber}",
    "productName": "{FName}",
    "model": "{FSpecification}",
    ...
}

在实际操作中,我们可以利用轻易云的数据集成平台自动生成并发送这些请求,从而实现高效的数据加载。

4. 实时监控与异常处理

为了确保整个ETL过程的顺利进行,我们需要对每个环节进行实时监控。一旦发现异常情况,如网络故障或数据格式错误,系统应及时发出警报并记录日志,以便后续排查和修复。

通过上述步骤,我们可以高效地完成从源系统到目标系统的数据ETL转换,并确保数据的一致性和准确性。这不仅提升了业务流程的透明度和效率,还为企业决策提供了可靠的数据支持。 打通金蝶云星空数据接口

更多系统对接方案