基于轻易云平台的金蝶云星空与MySQL数据清洗与转换

  • 轻易云集成顾问-蔡威

金蝶云星空数据集成到MySQL的技术实践:ZZ用料清单用料明细数据-删除-制造一处

在企业的信息化建设过程中,实现不同系统间的数据互通是至关重要的一环。本次我们将分享一个实际案例,展示如何利用轻易云平台实现金蝶云星空与MySQL之间高效、可靠的数据集成。具体方案为: ZZ用料清单用料明细数据-删除-制造一处。

在本方案中,我们主要利用了金蝶云星空提供的API接口executeBillQuery来实时抓取数据,并通过自定义转换逻辑,将其批量写入到MySQL数据库,使用的是其写入API execute。为了确保整个流程的顺畅与高效,我们充分借助了一系列关键特性和功能:

  1. 支持高吞吐量的数据写入能力:大规模的数据需要快速、稳定地传输,因此选择适合的大吞吐量配置显得尤为重要。

  2. 集中监控和告警系统:整个数据集成任务不仅需要保证性能,还要能即时掌握状态。当出现异常时,及时处理预警能够极大提高运维效率。

  3. 分页和限流处理:为了应对金蝶云星空接口可能存在的分页限制及流量控制机制,在抓取操作中设计了相应的策略以确保完整性与稳定性。

  4. 定制化数据映射:由于两套系统在结构以及业务规则上的差异,需要进行精准的数据转换,以便最终符合目标数据库(MySQL)的需求。

通过这些步骤和技术手段,我们有效解决了跨平台数据迁移中常见的问题,同时也保障了业务连续性的要求。这只是开篇,引领你了解我们的整体实施思路及亮点。而接下来,我将详细讲述该方案中的每一步具体操作方法和所使用工具,希望对大家有所帮助。 用友与MES系统接口开发配置

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

在数据集成生命周期的第一步,我们需要调用源系统的API接口以获取原始数据。在本案例中,我们将聚焦于如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "id": "FEntity_FEntryID",
  "name": "FBillNo",
  "request": [
    {"field": "FID", "label": "实体主键", "type": "string", "value": "FID"},
    {"field": "FBillNo", "label": "单据编号", "type": "string", "value": "FBillNo"},
    {"field": "fmobillno", "label": "fmobillno", "type": "string", "value": "fmobillno"}
  ],
  ...
}

在这个配置中,api字段指定了要调用的接口名称为executeBillQuery,请求方法为POST。关键字段包括:

  • FID: 实体主键
  • FBillNo: 单据编号
  • fmobillno: fmobillno

此外,还有一些分页和过滤参数,如下所示:

{
  ...
  "otherRequest": [
    {"field":"Limit","label":"最大行数","type":"string","describe":"金蝶的查询分页参数","value":"5000"},
    {"field":"StartRow","label":"开始行索引","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
    {"field":"TopRowCount","label":"返回总行数","type":"int","describe":"金蝶的查询分页参数"},
    {"field":"FilterString","label":"过滤条件","type":"string","describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"FPrdOrgId.fnumber in ('T01.01','T04') and FDocumentStatus='C' and FApproveDate>'2024-01-01' and F_FSYNCMOM=0 and left(fmobillno,2)='MO'"},
    ...
  ]
}

这些参数用于控制查询结果的分页和过滤条件。例如,Limit字段设置了每次查询返回的最大行数为5000,FilterString字段定义了复杂的过滤条件。

数据请求与清洗

在发起请求后,我们会得到一个包含原始数据的响应。为了确保数据质量和一致性,需要对这些原始数据进行清洗和转换。以下是一个简单的数据清洗流程:

  1. 去除无效记录:根据业务需求,去除不符合条件的数据记录。
  2. 字段映射:将源系统中的字段映射到目标系统中的相应字段。
  3. 格式转换:将日期、数字等字段转换为目标系统所需的格式。

例如,如果我们从金蝶云星空获取到如下原始数据:

[
  {
    "FID": "12345",
    "FBillNo": "PO20230101",
    ...
  },
  ...
]

我们可以通过轻易云平台提供的数据清洗工具,将其转换为目标系统所需的格式。

数据转换与写入

经过清洗后的数据需要进一步转换,以便写入目标系统。在轻易云平台上,可以使用内置的数据转换工具来完成这一过程。例如,可以使用批量保存方法将清洗后的数组数据保存到目标系统中:

{
  ...
  "operation":{
    ...
    ,"method":"batchArraySave"
  }
}

这种方法能够高效地处理大批量的数据,并确保每条记录都能正确写入目标系统。

实际案例应用

假设我们需要删除制造一处中的用料明细数据,可以通过以下步骤实现:

  1. 调用API获取原始数据:使用上述元数据配置,通过轻易云平台调用金蝶云星空接口获取用料明细数据。
  2. 清洗与过滤:根据业务规则,过滤掉不需要删除的数据记录。
  3. 执行删除操作:将符合条件的数据记录标记为待删除,并通过轻易云平台执行批量删除操作。

通过以上步骤,我们能够高效地实现从源系统获取、清洗、转换并最终写入或删除目标系统中的数据。这不仅提高了业务处理效率,也确保了数据的一致性和准确性。 企业微信与OA系统接口开发配置

数据转换与写入目标平台 MySQLAPI接口

在轻易云数据集成平台的生命周期中,数据转换与写入是关键的一步。本文将详细探讨如何将已经集成的源平台数据通过ETL转换,转为目标平台 MySQLAPI接口所能够接收的格式,并最终写入目标平台。

元数据配置解析

首先,我们需要理解元数据配置中的各个字段及其含义:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "children": [
        {
          "field": "FID",
          "label": "实体主键",
          "type": "string",
          "value": "{FID}"
        }
      ]
    }
  ],
  "otherRequest": [
    {
      "field": "main_sql",
      "label": "main_sql",
      "type": "string",
      "describe": "111",
      "value": "delete from mbs_assemble_material_detail where fid=:FID"
    }
  ]
}
  • api: 指定API接口名称,这里为execute
  • effect: 操作类型,这里为EXECUTE
  • method: HTTP请求方法,这里为POST
  • idCheck: 是否进行ID校验,这里设置为true
  • request: 请求参数列表,包含一个对象类型的参数main_params,其中包含子字段FID,代表实体主键。
  • otherRequest: 其他请求参数,这里包含一个SQL语句,用于删除操作。

数据请求与清洗

在进行数据转换之前,我们首先需要从源平台获取数据并进行清洗。假设我们已经从源平台获取了如下数据:

{
  "FID": "12345"
}

数据转换

根据元数据配置,我们需要将上述数据转换为目标平台 MySQLAPI接口能够接收的格式。具体步骤如下:

  1. 构建请求参数

    • 根据元数据中的request字段,我们需要构建一个包含主键的对象。
    • 将获取到的FID值填充到相应位置。
  2. 构建SQL语句

    • 根据元数据中的otherRequest字段,我们需要构建一个删除操作的SQL语句。
    • 将获取到的FID值替换SQL语句中的占位符。

最终构建的请求体如下:

{
  "main_params": {
    "FID": "12345"
  },
  "main_sql": {
    "$value$delete from mbs_assemble_material_detail where fid=:FID"
  }
}

写入目标平台

最后一步是将转换后的数据通过API接口写入目标平台。我们使用HTTP POST方法,将构建好的请求体发送到指定的API端点。

以下是一个示例代码片段,展示如何使用Python进行该操作:

import requests
import json

url = 'http://your-api-endpoint/execute'
headers = {'Content-Type': 'application/json'}
data = {
    'main_params': {
        'FID': '12345'
    },
    'main_sql': 'delete from mbs_assemble_material_detail where fid=:FID'
}

response = requests.post(url, headers=headers, data=json.dumps(data))

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

通过上述步骤,我们成功地将源平台的数据经过ETL转换后,写入到了目标平台 MySQLAPI接口。这一过程不仅保证了数据的一致性和完整性,还提高了系统集成的效率和可靠性。 用友与CRM系统接口开发配置

更多系统对接方案