使用轻易云数据集成平台进行ETL转换和数据写入MySQL

  • 轻易云集成顾问-杨嫦

金蝶云星空数据集成到MySQL:一个高效的系统对接案例分享

在复杂多变的业务环境中,如何实现快速、可靠的数据集成成为企业数字化转型中的一大挑战。针对这个需求,我们提出了一个具体的解决方案,即将金蝶云星空的数据通过轻易云平台无缝对接至MySQL数据库。在本文中,我们将详细介绍名为"kd-金蝶查询付款退款单-->mysql(鸿巢)付款退款"的数据集成方案。

首先,在本次集成任务中使用到了金蝶云星空API接口executeBillQuery来获取付款及退款单据数据,并通过自定义的转换逻辑和批量写入操作,最终将这些数据导入到MySQL数据库。这种方法不仅提升了数据处理的效率,还确保了每一笔单据信息都能准确传输,不漏单。

为了应对大量数据需要快速写入的问题,我们采用了高吞吐量的数据写入能力,使得我们能够在较短时间内完成海量数据的迁移。此外,通过实时监控与告警系统,对每个步骤状态进行跟踪,可以及时发现并处理潜在问题,从而保障整个流程顺利进行。

值得注意的是,由于金蝶云星空和MySQL两者之间存在一定的数据格式差异,因此在调用API接口时进行了必要的数据映射调整。此外,为了解决分页和限流问题,我们设计了一套可靠抓取策略,通过定时任务分批次有效地从金蝶获取所需信息,再按序进行处理。

我们还特别关注到了异常处理与错误重试机制,这对于保证数据一致性至关重要。一旦发生错误或异常情况,轻易云平台会自动执行重试操作,以确保最终所有关键业务数据信息都能成功传递到目标系统中去。同时,通过日志记录功能,可以全面回溯各阶段操作历史,便于后期分析和优化改进。

总之,此次案例展示的不仅是一次成功的数据整合,更体现了一套完整且高效的方法论,希望可以为同类开发工作提供有益参考。 电商OMS与ERP系统接口开发配置

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

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取并加工付款退款单的数据。

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FREFUNDBILLENTRY_FEntryID",
  "idCheck": true,
  "formatResponse": [
    {
      "old": "FDATE",
      "new": "FDate_new",
      "format": "date"
    }
  ],
  "request": [
    {"field":"FBillNo","label":"FBillNo","type":"string","describe":"单据编号","value":"FBillNo"},
    {"field":"FDOCUMENTSTATUS","label":"FDOCUMENTSTATUS","type":"string","describe":"单据状态","value":"FDOCUMENTSTATUS"},
    {"field":"FDATE","label":"FDATE","type":"string","describe":"业务日期","value":"FDATE"},
    {"field":"FREFUNDAMOUNTFOR","label":"FREFUNDAMOUNTFOR","type":"string","describe":"表体-应退金额","value":"FREFUNDAMOUNTFOR"},
    {"field":"FREFUNDBILLENTRY_FEntryID","label":"FREFUNDBILLENTRY_FEntryID","type":"string","describe":"111","value":"FREFUNDBILLENTRY_FEntryID"}
  ],
  "otherRequest": [
    {"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
    {"field":"TopRowCount","label":"TopRowCount","type":"int","describe":"金蝶的查询分页参数"},
    {"field":"FilterString","label":"FilterString","type":"string","describe":"","value":"'{{LAST_SYNC_TIME|date}}' and FCreaterId= '100796' and FBillTypeID.FNUMBER='FKTKDLX02_SYS' and FBillNo LIKE 'LHHYBXD%'"},
    {"field":"FieldKeys","label":"","type":"","describe":"","value":""},
    {"field":"","label":"","type":"","describe":"","value":""},
    {"field":"","label":"","type":"","describe":"","value":""}
  ],
  "autoFillResponse": true
}

请求构建

在构建请求时,需要注意以下几点:

  1. API Endpoint: executeBillQuery
  2. HTTP Method: POST
  3. 请求字段: 根据元数据中的request字段,构建请求体。

例如,构建一个简单的请求体如下:

{
  "FormId": "AP_REFUNDBILL",
  "FieldKeys": ["FBillNo", "FDOCUMENTSTATUS", "FDATE", "FREFUNDAMOUNTFOR", "FREFUNDBILLENTRY_FEntryID"],
  "FilterString": "'2023-01-01' and FCreaterId= '100796' and FBillTypeID.FNUMBER='FKTKDLX02_SYS' and FBillNo LIKE 'LHHYBXD%'",
  "Limit": 100,
  "StartRow": 0,
}

数据处理与格式化

在获取到原始数据后,需要对数据进行处理和格式化。例如,将日期字段FDATE格式化为新的字段FDate_new。这是通过元数据中的formatResponse字段实现的:

"formatResponse":[{"old":"FDATE", "new" :"FDate_new", "format" :"date"}]

这意味着我们需要将返回的数据中的FDATE字段转换为新的字段名FDate_new,并确保其格式为日期类型。

实际应用案例

假设我们从金蝶云星空获取到以下原始数据:

[
  {
    "FBillNo": "LHHYBXD001",
    "FDOCUMENTSTATUS": "A",
    "FDATE": "/Date(1672531200000)/",
    "FREFUNDAMOUNTFOR": 1000.00,
    "FREFUNDBILLENTRY_FEntryID": 12345
  }
]

根据我们的元数据配置,我们需要将其转换为:

[
  {
    "FBillNo": "LHHYBXD001",
    "FDOCUMENTSTATUS": "A",
    "FDate_new": "/Date(1672531200000)/", // 转换后的日期格式
    ...
  }
]

数据写入目标系统

最后,将处理后的数据写入目标系统(如MySQL)。这一步通常涉及到使用轻易云平台提供的数据写入功能,将转换后的数据存储到指定的数据库表中。

通过以上步骤,我们成功地完成了从调用源系统接口、获取原始数据、进行数据处理与格式化,到最终将处理后的数据写入目标系统的全过程。这不仅提高了业务透明度和效率,也确保了不同系统间的数据无缝对接。 用友BIP接口开发配置

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

在数据集成生命周期的第二步,我们将重点探讨如何将已经集成的源平台数据通过ETL(Extract, Transform, Load)转换,最终写入目标平台MySQLAPI接口。以下是具体的技术实现过程。

数据请求与清洗

首先,我们需要从源平台(金蝶)中提取付款退款单的数据。在此过程中,确保数据的完整性和准确性是至关重要的。我们假设已经完成了这一阶段,并获得了所需的数据。

数据转换与写入

接下来,我们进入数据转换与写入阶段。这一步骤主要涉及将源数据转换为目标平台能够接受的格式,并通过API接口将其写入到MySQL数据库中。

元数据配置解析

根据提供的元数据配置,我们可以看到以下关键字段:

  • api: "execute"
  • method: "POST"
  • idCheck: true
  • request: 包含一个main_params对象,内含多个子字段
  • otherRequest: 包含一个main_sql字段,用于定义SQL插入语句
请求参数解析

main_params对象包含以下子字段:

  • FEntity_FEntryID: 明细id,对应源数据中的FREFUNDBILLENTRY_FEntryID
  • order_no_new: 单号,对应源数据中的FBillNo
  • FDocumentStatus: 状态,对应源数据中的FDOCUMENTSTATUS
  • qty_count: 数量,固定值为1
  • sales_count: 金额,对应源数据中的FREFUNDAMOUNTFOR
  • datetime_new: 时间,对应源数据中的FDate_new
  • Document_Type: 单据类型,固定值为付款退款

这些字段将被映射到目标数据库表中的相应列。

SQL插入语句解析

otherRequest中定义了一个SQL插入语句:

INSERT INTO  `hc_kd_fktk`
(`FEntity_FEntryID`, `order_no_new`, `FDocumentStatus`, `qty_count`, 
`sales_count`, `datetime_new`, `Document_Type`)
VALUES 
(:FEntity_FEntryID, :order_no_new, :FDocumentStatus, :qty_count, 
:sales_count, :datetime_new, :Document_Type)

该语句用于将转换后的数据插入到目标表hc_kd_fktk中。

实现步骤
  1. 提取和清洗源数据:假设我们已经从金蝶系统中提取了付款退款单的数据,并进行了必要的清洗。
  2. 构建请求参数:根据元数据配置,将提取的数据映射到请求参数中。例如:
    {
        "main_params": {
            "FEntity_FEntryID": "12345",
            "order_no_new": "ORD67890",
            "FDocumentStatus": "Approved",
            "qty_count": "1",
            "sales_count": "1000.00",
            "datetime_new": "2023-10-01T12:00:00Z",
            "Document_Type": "付款退款"
        }
    }
  3. 调用API接口:使用POST方法调用MySQLAPI接口,将构建好的请求参数传递给接口。
  4. 执行SQL插入操作:API接口接收到请求后,执行预定义的SQL插入语句,将数据写入目标数据库表中。
示例代码

以下是一个示例代码片段,展示如何通过Python脚本实现上述过程:

import requests
import json

# 构建请求参数
data = {
    "main_params": {
        "FEntity_FEntryID": "12345",
        "order_no_new": "ORD67890",
        "FDocumentStatus": "Approved",
        "qty_count": "1",
        "sales_count": "1000.00",
        "datetime_new": "2023-10-01T12:00:00Z",
        "Document_Type": "付款退款"
    }
}

# API URL
url = 'http://your-mysql-api-endpoint/execute'

# 发送POST请求
response = requests.post(url, json=data)

# 检查响应状态
if response.status_code == 200:
    print("Data inserted successfully")
else:
    print("Failed to insert data:", response.text)

通过上述步骤和代码示例,我们实现了从金蝶系统提取付款退款单的数据,并通过ETL转换后,成功地将其写入到目标平台MySQL数据库中。这一过程充分利用了轻易云数据集成平台的强大功能,实现了异构系统间的数据无缝对接。 钉钉与ERP系统接口开发配置

更多系统对接方案