通过轻易云平台实现ETL转换并写入MySQL的技术案例

  • 轻易云集成顾问-谢楷斌

金蝶云星空数据集成到MySQL:系统对接技术案例分享

在众多企业信息化系统中,金蝶云星空和MySQL分别作为ERP和数据库管理的核心工具,经常需要实现数据的无缝集成。然而,这种跨平台的数据处理过程中,存在着各种复杂性及潜在挑战。通过轻易云数据集成平台,我们可以利用其高效、透明且全面可视化操作界面,实现从金蝶云星空到MySQL的数据流转。本案例详细介绍了如何通过 executeBillQuery 接口获取金蝶费用报销单,并将之可靠、高效地写入 MySQL 系统。

首先,在整个流程设计中,高吞吐量的数据写入能力是关键。这确保大量来自金蝶云星空的信息能够被快速捕获并存储到 MySQL 数据库中,从而大幅提升数据处理效率与时效性。例如,通过定时抓取 executeBillQuery 接口返回的批量报销单据,可以保障业务数据实时同步,无一遗漏。

其次,为了应对可能出现的数据质量问题,我们配置了一套完整的监控和告警系统。在执行每一步操作时,该系统会实时跟踪任务状态和性能,一旦发现异常便能及时发出预警,以便迅速采取相应措施。此外,自定义的数据转换逻辑帮助我们适配特定业务需求,解决了不同平台间的数据结构差异,确保最终交付结果符合预期。

然而,仅仅依赖这些基础功能还不够,我们也不得不面对更多技术细节,如处理金蝶接口分页和限流机制、异常重试策略以及精细化的日志记录等。在实际实施过程中,每一处细节都至关重要。比如,为避免由于接口调用次数过多造成限制,将合理设置分页参数已成为必要手段;此外,当网络故障或其他原因导致 API 请求失败时,则需启用错误重试机制,保证任务完成率最大化。

总之,通过以上技术要点及实践方案,本次项目成功实现了从金蝶查询费用报销单到 MySQL 的高效集成。接下来我们将深入探讨具体实施步骤与进一步优化策略,以期为类似场景提供有效参考。 打通用友BIP数据接口

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

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来查询费用报销单,并对数据进行初步加工。

接口配置与调用

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

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FSourceNo",
  "id": "FEntity_FEntryID",
  "idCheck": true,
  "formatResponse": [
    {
      "old": "FDate",
      "new": "FDate_new",
      "format": "date"
    }
  ],
  "request": [
    {"field":"FSourceNo","label":"FSourceNo","type":"string","describe":"111","value":"FSourceNo"},
    {"field":"FDocumentStatus","label":"FDocumentStatus","type":"string","describe":"111","value":"FDocumentStatus"},
    {"field":"FDate","label":"FDate","type":"string","describe":"111","value":"FDate"},
    {"field":"FTaxSubmitAmt","label":"FTaxSubmitAmt","type":"string","describe":"111","value":"FTaxSubmitAmt"},
    {"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","value":"FEntity_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":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=","value":"'{{LAST_SYNC_TIME|date}}' and FCreatorId= '100796' and FSourceNo LIKE 'LHHYBXD%'"},
    {"field":"FieldKeys","label":"FieldKeys","type":"array","describe":"","value":["FPOOrderEntry_FEntryId", "FPurchaseOrgId.FNumber"]},
    {"field": "FormId", "label": "FormId", "type": "string", "describe": "", "value": "ER_ExpReimbursement"}
  ],
  "autoFillResponse": true
}

请求参数详解

  1. 基本请求字段

    • FSourceNo: 源单编号。
    • FDocumentStatus: 单据状态。
    • FDate: 日期。
    • FTaxSubmitAmt: 含税金额。
    • FEntity_FEntryID: 分录主键ID。
  2. 其他请求字段

    • Limit: 分页大小。
    • StartRow: 分页起始行。
    • TopRowCount: 返回记录数上限。
    • FilterString: 查询过滤条件,例如:FSupplierId.FNumber = 'VEN00010' and FApproveDate >= '2023-01-01'
    • FieldKeys: 查询返回字段,例如:["FPurchaseOrgId.FNumber"]
    • FormId: 表单ID,此处为费用报销单,值为ER_ExpReimbursement

数据格式化与处理

在获取到原始数据后,我们需要对部分字段进行格式化处理。例如,将日期字段FDate转换为新的格式并命名为FDate_new。这一步可以通过配置中的formatResponse实现:

{
  "old": "FDate",
  "new": "FDate_new",
  "format": "date"
}

该配置将原始日期字段转换为新的日期格式,并重命名为FDate_new,确保后续的数据处理和存储更加规范和一致。

实际调用示例

以下是一个实际的API调用示例:

{
  "apiName": "/k3cloud/Kingdee.BOS.WebApi.ServicesStub.DynamicFormService.executeBillQuery.common.kdsvc",
  "parameters": {
    ...
    // 填入上述配置中的请求和其他请求参数
    ...
  }
}

通过上述配置和调用,我们能够成功从金蝶云星空中获取费用报销单的数据,并对其进行初步加工,为后续的数据转换与写入奠定基础。

总结

本文详细介绍了如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取费用报销单的数据,并对其进行初步加工。这一步骤是整个数据集成生命周期中的关键环节,确保了源系统数据能够准确、及时地被提取和处理,为后续的数据转换与写入提供了可靠的数据基础。 如何开发金蝶云星空API接口

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

在数据集成生命周期的第二步中,我们需要将已经从源平台(如金蝶)获取的数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台MySQLAPI接口所能够接收的格式,最终写入目标平台。本文将详细介绍如何通过轻易云数据集成平台实现这一过程。

数据请求与清洗

首先,从金蝶系统查询费用报销单的数据。假设我们已经完成了数据请求与清洗阶段,得到了符合要求的源数据。接下来,我们将重点讨论如何配置元数据,将这些源数据转换并写入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":"{FEntity_FEntryID}"},
        {"field": "order_no_new", "label": "单号", "type": "string", "value":"{FSourceNo}"},
        {"field": "FDocumentStatus", "label": "状态", "type": "string", "value":"{FDocumentStatus}"},
        {"field": "qty_count", "label": "数量", "type":"string","value":"1"},
        {"field": "sales_count",    "label":"金额","type":"string","value":"{FTaxSubmitAmt}"},
        {"field":"datetime_new","label":"时间","type":"date","value":"{FDate_new}"},
        {"field":"Document_Type","label":"单据类型","type":"string","value":"费用报销单"}
      ]
    }
  ],
  ...
}

此配置文件定义了一个POST请求,用于向MySQLAPI接口发送转换后的数据。具体字段解释如下:

  • api: 指定API操作类型,这里为execute
  • effect: 执行效果,这里为EXECUTE
  • method: HTTP请求方法,这里为POST
  • idCheck: 是否检查ID字段,这里为true
  • request: 请求参数列表,包含一个对象类型的参数main_params,其子字段包括:
    • FEntity_FEntryID: 明细ID,对应源数据中的FEntity_FEntryID
    • order_no_new: 单号,对应源数据中的FSourceNo
    • FDocumentStatus: 状态,对应源数据中的FDocumentStatus
    • qty_count: 数量,固定值为1。
    • sales_count: 金额,对应源数据中的FTaxSubmitAmt
    • datetime_new: 时间,对应源数据中的日期字段FDate_new
    • Document_Type: 单据类型,固定值为“费用报销单”。

SQL语句配置

为了将转换后的数据插入到目标MySQL数据库中,我们还需要配置相应的SQL语句:

{
  ...
  "otherRequest":[
    {
      "field":"main_sql",
      ...
      ...
      ...
      ...

这个SQL语句用于执行插入操作,将上述字段对应的数据插入到表hc_kd_fybx中。

实际操作步骤

  1. 配置ETL任务:在轻易云平台上创建一个新的ETL任务,选择合适的数据源和目标,并应用上述元数据配置文件。
  2. 执行任务:启动任务后,平台会自动提取金蝶系统中的费用报销单数据,并根据配置文件进行转换。
  3. 监控与验证:通过轻易云提供的可视化界面实时监控任务执行状态,并验证目标MySQL数据库中的记录是否正确插入。

通过以上步骤,我们成功地将金蝶系统中的费用报销单数据转换并写入到目标MySQL数据库,实现了不同系统间的数据无缝对接。这一过程不仅简化了复杂的数据处理工作,还提高了业务流程的透明度和效率。 数据集成平台API接口配置