使用轻易云平台进行ETL与MySQL数据写入的技术分享

  • 轻易云集成顾问-曹润

金蝶云星空数据集成到MySQL的技术案例分享

在系统对接和数据集成领域,如何高效、稳定地将金蝶云星空的数据导入至MySQL数据库一直是一个备受关注的话题。本文将结合具体的案例“kd-金蝶查询收款退款单-->mysql(鸿巢)”,详细解析这个过程中的关键技术点与解决方案。

获取API数据

本案例中,我们通过调用金蝶云星空提供的executeBillQuery接口来获取收款和退款单据。该接口能够确保高效、安全地传输大量业务数据。然而,由于API响应可能会有分页和限流问题,我们需要设计一个可靠的定时抓取机制来应对这些挑战。在实际操作中,通过轻易云提供的集中监控和告警系统,可实时跟踪每次调用状态,并及时处理异常情况。

数据转换与写入

从金蝶云星空获取的数据通常不直接兼容MySQL,因此需要进行自定义数据转换,以适应特定业务需求及数据库结构。例如,需要根据字段类型、名称进行映射,并处理时间格式、货币单位等细节问题。这一过程中可视化的数据流设计工具起到了重要作用,使得整个流程更加直观并且易于管理。

实现批量、高速写入是本次集成任务的一大亮点。我们采用了支持高吞吐量的数据写入能力,使得大量记录可以快速落库到MySQL中。此外,为进一步保障进程顺利,建立了完善的异常处理与错误重试机制。一旦发生写入失败或网络波动,系统能自动重新尝试确保所有记录无遗漏完成导入。

实时监控与日志记录

为了确保整个数据集成过程透明可追溯,我们配置了全面而灵活的监控策略,包括性能指标实时展示以及详细日志记录。从初始请求到最终落库,每一步都有着精确定位,一旦出现故障,可以迅速排查并恢复服务,这极大提升了运维效率及系统可靠性。

上述步骤只是整个方案的一部分,还涉及更多细节如分页策略优化、限流保护措施等,将在后续内容中逐步展开分析。通过这些技术手段,在保证准确性的前提下,实现了大规模、多样化数据从金蝶云星空向MySQL的平稳迁移整合。 数据集成平台API接口配置

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

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

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FBillNo",
  "id": "FREFUNDBILLENTRY_FEntryID",
  "idCheck": true,
  "formatResponse": [
    {
      "old": "FDATE",
      "new": "FDate_new",
      "format": "date"
    }
  ],
  "request": [
    {"field":"FREFUNDBILLENTRY_FEntryID","label":"明细实例id","type":"string","describe":"111","value":"FREFUNDBILLENTRY_FEntryID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"111","value":"FBillNo"},
    {"field":"FDOCUMENTSTATUS","label":"单据类型","type":"string","describe":"111","value":"FDOCUMENTSTATUS"},
    {"field":"FDATE","label":"日期","type":"string","describe":"111","value":"FDATE"},
    {"field":"FREFUNDAMOUNTFOR","label":"金额","type":"string","describe":"111","value":"FREFUNDAMOUNTFOR"},
    {"field":"FCreaterId","label":"FCreaterId","type":"string","value":"FCreaterId"}
  ],
  "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'"},
    {"field":"FieldKeys","label":"","type":"","describe":"","value":"'FPOOrderEntry_FEntryId,FPurchaseOrgId.FNumber'"},
    {"field":"","label":"","type":"","describe":"","value":"'AR_REFUNDBILL'"}
  ],
  "autoFillResponse": true
}

请求参数详解

  1. 基础请求字段

    • FREFUNDBILLENTRY_FEntryID: 明细实例ID。
    • FBillNo: 单据编号。
    • FDOCUMENTSTATUS: 单据类型。
    • FDATE: 日期。
    • FREFUNDAMOUNTFOR: 金额。
    • FCreaterId: 创建者ID。
  2. 其他请求字段

    • LimitStartRow: 分页参数,用于控制每次查询的数据量和起始行数。
    • TopRowCount: 用于指定返回结果的最大行数。
    • FilterString: 查询过滤条件,这里示例为根据上次同步时间和创建者ID进行过滤。
    • FieldKeys: 指定需要返回的字段,格式为分录主键ID或其它格式。
    • FormId: 金蝶表单ID,这里为AR_REFUNDBILL

数据格式化与响应处理

在获取到原始数据后,需要对部分字段进行格式化处理。例如,将日期字段FDATE转换为新的字段名FDate_new并格式化为日期类型:

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

通过这种方式,可以确保数据在进入目标系统前已经过必要的清洗和转换,符合业务需求。

实际应用案例

假设我们需要从金蝶云星空中查询收款退款单,并将其写入MySQL数据库。具体步骤如下:

  1. 配置API请求:按照上述元数据配置,构建HTTP POST请求,包含必要的请求参数和过滤条件。
  2. 发送请求并接收响应:通过轻易云平台发送请求至金蝶云星空API,并接收返回的数据。
  3. 数据清洗与转换:根据配置对接收到的数据进行清洗和转换,例如日期格式化、字段重命名等。
  4. 写入目标系统:将处理后的数据写入MySQL数据库,完成数据集成过程。

通过上述步骤,我们可以高效地实现不同系统间的数据无缝对接,确保数据的一致性和完整性。这种方法不仅提升了业务透明度,还极大地提高了工作效率。 电商OMS与WMS系统接口开发配置

使用轻易云数据集成平台进行ETL转换并写入MySQL API接口的技术案例

在轻易云数据集成平台中,数据处理的生命周期分为两个主要阶段:数据请求与清洗、数据转换与写入。本文将深入探讨如何将已集成的源平台数据进行ETL转换,并转为目标平台MySQL API接口所能够接收的格式,最终写入目标平台。

元数据配置解析

在本案例中,我们需要将金蝶查询收款退款单的数据通过ETL过程转换后写入MySQL数据库。以下是元数据配置的详细解析:

{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "children": [
        {"field": "FEntity_FEntryID", "label": "明细id", "type": "string", "value": "{FREFUNDBILLENTRY_FEntryID}"},
        {"field": "order_no_new", "label": "单号", "type": "string", "value": "{FBillNo}"},
        {"field": "FDocumentStatus", "label": "状态", "type": "string", "value": "{FDOCUMENTSTATUS}"},
        {"field": "qty_count", "label": "数量", "type":"string","value":"1"},
        {"field":"sales_count","label":"金额","type":"string","value":"{FREFUNDAMOUNTFOR}"},
        {"field":"datetime_new","label":"时间","type":"date","value":"{FDate_new}"},
        {"field":"Document_Type","label":"单据类型","type":"string","value":"收款退款"}
      ]
    }
  ],
  "otherRequest":[
    {
      "field":"main_sql",
      "label":"main_sql",
      "type":"string",
      "describe":"111",
      "value":"INSERT INTO `hc_kd_sktk`(`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)"
    }
  ]
}

数据请求与清洗

首先,我们从金蝶系统中提取原始数据。这些原始数据可能包含冗余信息或格式不符合目标系统要求。因此,需要对这些数据进行清洗和预处理。例如,将日期格式标准化、去除无效字符等。

数据转换与写入

在完成初步的数据清洗后,我们进入关键的ETL转换阶段。根据元数据配置,将源数据字段映射到目标字段,并按照MySQL API接口要求的格式进行转换。

  1. 字段映射与转换

    • FEntity_FEntryID -> {FREFUNDBILLENTRY_FEntryID}
    • order_no_new -> {FBillNo}
    • FDocumentStatus -> {FDOCUMENTSTATUS}
    • qty_count 固定值为1
    • sales_count -> {FREFUNDAMOUNTFOR}
    • datetime_new -> {FDate_new}
    • Document_Type 固定值为"收款退款"
  2. 构建SQL语句: 根据元数据中的SQL模板,将映射后的字段值插入到相应的位置,形成最终的SQL语句:

INSERT INTO `hc_kd_sktk`
(`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)
  1. 执行SQL语句: 使用POST方法,通过API接口将构建好的SQL语句发送到MySQL数据库进行执行。确保在发送前对每个字段进行必要的校验(如idCheck),以保证数据的一致性和完整性。

实际应用案例

假设我们从金蝶系统获取到以下原始记录:

{
  FREFUNDBILLENTRY_FEntryID: '12345',
  FBillNo: 'KD20231001',
  FDOCUMENTSTATUS: 'A',
  FREFUNDAMOUNTFOR: '1000.00',
  FDate_new: '2023-10-01'
}

根据上述配置和步骤,最终生成并执行的SQL语句如下:

INSERT INTO `hc_kd_sktk`
(`FEntity_FEntryID`, `order_no_new`, `FDocumentStatus`, `qty_count`, `sales_count`, `datetime_new`, `Document_Type`)
VALUES ('12345', 'KD20231001', 'A', '1', '1000.00', '2023-10-01', '收款退款')

通过轻易云数据集成平台,我们实现了从金蝶系统到MySQL数据库的数据无缝对接,确保了各个环节的数据准确性和一致性。这不仅提高了业务效率,还增强了系统间的数据透明度和可追溯性。 打通钉钉数据接口

更多系统对接方案