轻易云数据集成平台支持MySQLETL处理与写入

  • 轻易云集成顾问-彭亮

zzcx-吉客云查询组装拆卸单-->MySQL数据集成技术案例

在本篇技术文章中,我们将重点探讨通过使用轻易云数据集成平台,将吉客云查询组装拆卸单的数据高效地集成到MySQL数据库中的具体实现方案。在企业日常业务运营过程中,确保多样化系统的数据无缝对接至关重要。我们将细致剖析如何利用轻易云提供的API接口,实现跨系统的数据同步与管理。

此案例名为“zzcx-吉客云查询组装拆卸单-->mysql”,主要解决以下几个关键技术问题:

  1. 数据抓取与可靠性:我们通过定时调度和调用erp.combined.get接口,从吉客云获取最新的组装拆卸单信息,同时保证每次抓取操作的可靠性,防止漏单。

  2. 批量数据写入到MySQL:借助轻易云支持的大吞吐量写入能力,将从吉客云获取的大量数据快速、准确地导入到MySQL数据库中,提高了整体处理效率。

  3. 分页和限流控制:为了应对大规模数据传输过程中可能遇到的压力和限流问题,我们设计了合理的分页策略,通过分批次请求来稳定地获取所需数据,并避免因超负荷请求导致的响应失败或延迟。

  4. 格式转换与映射:由于两端系统在数据结构上的差异,我们自定义了一系列转换逻辑,以适配特定业务需求。同时,在将清洗后的数据显示至统一视图中做进一步分析之前,对其进行了精细化映射和校验。

  5. 监控及异常处理机制:整个流程还包括实时监控和告警机制,当出现异常情况(如网络波动或API响应超时)时,能够即时作出反应并启动错误重试机制。通过这种方式,不但增强了系统稳定性,还提升了故障排除效率。

这个整合过程不仅简化了各部门之间的信息共享,也显著提升了企业资源管理优化程度。通过深入解析这些具体技术实现手段,希望为阅读本文的开发人员提供有价值且可参考的方法论,以便应用于自身项目实践当中。

用友与MES系统接口开发配置

调用吉客云接口erp.combined.get获取并加工数据

在轻易云数据集成平台中,调用源系统接口是数据处理生命周期的第一步。本文将深入探讨如何通过调用吉客云接口erp.combined.get来获取并加工数据,并详细介绍相关的元数据配置和技术细节。

API 接口调用配置

首先,我们需要配置API接口的基本信息。根据元数据配置,erp.combined.get接口使用POST方法进行请求。以下是具体的配置参数:

{
  "api": "erp.combined.get",
  "method": "POST",
  "number": "assNo",
  "id": "assId",
  "pagination": {
    "pageSize": 50
  },
  "idCheck": true,
  "formatResponse": [
    {
      "old": "applyDate",
      "new": "datetime_new",
      "format": "date"
    },
    {
      "old": "assNo",
      "new": "order_no_new",
      "format": "string"
    }
  ],
  "request": [
    {
      "label": "开始日期",
      "field": "applyStartDate",
      "type": "string",
      "value": "{{LAST_SYNC_TIME|datetime}}"
    },
    {
      "label": "结束日期",
      "field": "applyEndDate",
      "type": "string",
      "value": "{{CURRENT_TIME|datetime}}"
    }
  ],
  "beatFlat": ["product"]
}

请求参数设置

在请求参数部分,我们需要设置查询条件,包括开始日期和结束日期。这些参数将动态生成,确保每次调用时获取最新的数据。

  • applyStartDate: 使用上次同步时间 {{LAST_SYNC_TIME|datetime}}
  • applyEndDate: 使用当前时间 {{CURRENT_TIME|datetime}}

这些动态参数可以确保我们获取的是自上次同步以来的新数据,从而避免重复处理。

数据分页处理

为了提高效率和减少单次请求的数据量,我们采用分页机制,每页返回50条记录。分页机制可以有效防止大数据量导致的超时或内存溢出问题。

"pagination": {
  "pageSize": 50
}

数据格式转换

在获取到原始数据后,需要对部分字段进行格式转换,以便后续处理和存储。例如:

  • applyDate字段转换为新的字段datetime_new,格式为日期。
  • assNo字段转换为新的字段order_no_new,格式为字符串。
"formatResponse": [
  {
    "old": "applyDate",
    "new": "datetime_new",
    "format": "date"
  },
  {
    "old": "assNo",
    {
    new: 'order_no_new',
     format: 'string'
   }
]

这种格式转换不仅有助于统一数据格式,还能提升后续数据处理的效率和准确性。

数据清洗与校验

在实际应用中,可能会遇到一些无效或重复的数据。通过设置idCheck: true,可以确保每条记录的唯一性,从而避免重复处理。此外,还可以根据业务需求对特定字段进行清洗,例如剔除空值或无效值。

"idCheck" : true

示例代码实现

以下是一个示例代码片段,用于调用吉客云接口并处理返回的数据:

import requests
import json
from datetime import datetime

# 动态生成请求参数
params = {
    'applyStartDate': (datetime.now() - timedelta(days=1)).strftime('%Y-%m-%d'),
    'applyEndDate': datetime.now().strftime('%Y-%m-%d')
}

# 配置API请求信息
url = 'https://api.jikecloud.com/erp.combined.get'
headers = {'Content-Type': 'application/json'}
response = requests.post(url, headers=headers, data=json.dumps(params))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据格式转换与清洗
    for record in data['records']:
        record['datetime_new'] = record.pop('applyDate')
        record['order_no_new'] = str(record.pop('assNo'))

        # 清洗无效数据(示例)
        if not record['order_no_new']:
            continue

        # 后续处理逻辑...
else:
    print(f"API 请求失败,状态码:{response.status_code}")

通过上述步骤,我们成功实现了从吉客云接口获取并加工数据,为后续的数据转换与写入奠定了基础。在实际项目中,可以根据具体需求进一步优化和扩展这些配置和代码逻辑。 金蝶与SCM系统接口开发配置

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

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(提取、转换、加载)处理,并将其转为目标平台 MySQL API 接口所能够接收的格式,最终写入目标平台。以下是详细的技术实现过程。

数据请求与清洗

首先,我们从源平台提取数据。在这个阶段,我们需要确保数据的准确性和完整性。假设我们已经完成了数据请求和清洗工作,接下来我们进入数据转换和写入阶段。

数据转换与写入

在轻易云数据集成平台中,元数据配置是关键的一环。我们将使用以下提供的元数据配置来实现ETL过程:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "children": [
        {
          "field": "product_id",
          "label": "明细id",
          "type": "string",
          "value": "{product_id}"
        },
        {
          "field": "order_no_new",
          "label": "单号",
          "type": "string",
          "value": "{order_no_new}"
        },
        {
          "field": "datetime_new",
          "label": "时间",
          "type": "date",
          "value": "{datetime_new}"
        },
        {
          "field": "qty_count",
          "label": "数量",
          "type": "string",
          "value": "{product_quantity}"
        },
        {
          ...
        }
      ]
    }
  ],
  ...
}
配置解析
  1. API接口配置

    • api: 设置为"execute",表示执行操作。
    • effect: 设置为"EXECUTE",表示执行效果。
    • method: 设置为"POST",表示使用POST方法提交请求。
    • idCheck: 设置为true,表示进行ID检查。
  2. 请求参数配置

    • request字段包含了主要的参数配置,其中每个参数都有明确的字段名称、标签、类型和描述。
    • children字段定义了具体的数据字段,如product_idorder_no_new等,这些字段将从源数据中提取并映射到目标数据库表中的相应字段。
  3. 其他请求配置

    • otherRequest字段定义了SQL插入语句,用于将转换后的数据写入MySQL数据库。
SQL插入语句
INSERT INTO `jky_zzcx`
(`product_id`, `order_no_new`, `datetime_new`, `qty_count`, `sales_count`, `status`, `Document_Type`)
VALUES
(:product_id, :order_no_new, :datetime_new, :qty_count, :sales_count, :status, :Document_Type)

这条SQL语句用于将提取并转换后的数据插入到名为jky_zzcx的MySQL表中。各个字段对应于前面定义的参数。

数据映射与写入流程

  1. 提取源数据:从源系统中提取原始数据。
  2. 参数映射:根据元数据配置,将源数据中的字段映射到目标数据库表中的相应字段。例如,将源数据中的product_id映射到目标表中的product_id字段。
  3. 生成SQL语句:根据映射后的参数生成SQL插入语句。
  4. 执行写入操作:通过API接口执行生成的SQL插入语句,将转换后的数据写入MySQL数据库。

实际案例

假设我们有一条源数据如下:

{
  ...
  { 
    product_id: '12345',
    order_no_new: 'ORD001',
    datetime_new: '2023-10-01',
    product_quantity: '100',
    ...
  }
}

根据元数据配置,该条记录将被转换并生成如下SQL插入语句:

INSERT INTO `jky_zzcx`
(`product_id`, `order_no_new`, `datetime_new`, `qty_count`, `sales_count`, `status`, `Document_Type`)
VALUES
('12345', 'ORD001', '2023-10-01', '100', NULL, NULL, '组装拆卸')

执行该SQL语句后,记录将被成功插入到MySQL数据库中。

通过以上步骤,我们实现了从源平台到目标平台的数据ETL过程,并成功地将清洗后的数据写入到MySQL API接口所能接收的格式。这不仅提高了业务的数据处理效率,还确保了各系统间的数据一致性和准确性。 用友与MES系统接口开发配置

更多系统对接方案