轻易云平台实现ETL转换并写入金蝶云星空的实践

  • 轻易云集成顾问-吕修远

每刻自定义档案—部门->金蝶部门数据集成案例分享

在企业信息化管理中,跨系统的数据集成是提高业务效率和准确性的关键步骤。本篇文章将重点分享如何通过轻易云数据集成平台,将每刻的自定义档案——部门数据高效、安全地集成到金蝶云星空,同时实现对整个过程的实时监控与优化。

挑战概述

在该技术案例中,我们面临以下几个主要挑战:

  1. 数据格式差异:每刻API接口/api/openapi/reference/data/detail/query返回的数据格式和结构,与金蝶云星空API batchSave所需的数据格式存在较大差异,需要进行定制化转换。
  2. 分页与限流问题:由于每刻接口有分页限制和访问速率限制,在大量数据获取时需要设计合理的抓取策略,确保数据不漏单且符合速率规范。
  3. 实时监控与告警系统:提供一个可靠的集中监控机制,以便实时跟踪各个任务状态及性能,并在出现异常情况时及时告警处理。

解决方案

为有效应对上述挑战,我们实施了一系列技术手段:

  • 自定义数据转换逻辑 利用轻易云平台内置的可视化数据流设计工具,对从每刻获取的数据进行字段映射和结构调整,使之满足金蝶云星空所需的输入标准。通过编写脚本或使用图形界面配置,实现对字段类型、名称和层级关系的一一对应。

  • 高吞吐量批量写入 采用批量操作的方法,将经过清洗转换后的多个记录一次性写入到金蝶云星空数据库,大幅提升了整体操作效率。同时,通过合理设置事务大小和平衡负载,确保大规模并发情况下性能稳定。

  • 分页抓取与限流控制 针对每刻API的分页响应特性,设计了循环调用机制,每次请求下一页的数据直至全部获取完毕。同时,为避免触发限流规则,每间隔一定时间发送请求,从而平衡抓取速度与系统资源利用率。

  • 集中式监控与告警 实现了一套完善的监控体系,通过定期采样分析任务执行状态,并结合日志记录功能,对可能发生的问题如网络延迟、服务错误等给予预警提示。在发现异常后自动启动重试机制以保证任务顺利完成,进一步提高了集成过程中的可靠性。

这样一来,即使面对复杂多变的大容量业务需求,该方案也能保障每日数千笔乃至上万笔记录能够快速、高质量地同步至目标系统,无明显遗漏或延迟现象 金蝶与外部系统打通接口

调用每刻接口获取并加工数据的技术案例

在数据集成生命周期的第一步中,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用每刻接口/api/openapi/reference/data/detail/query,并对获取的数据进行加工处理。

接口配置与请求参数

首先,我们需要配置元数据以便正确调用每刻的API接口。以下是元数据配置的详细信息:

{
  "api": "/api/openapi/reference/data/detail/query",
  "method": "POST",
  "number": "name",
  "id": "bizCode",
  "idCheck": true,
  "condition": [
    [
      {
        "field": "enabled",
        "logic": "eq",
        "value": "true"
      }
    ]
  ],
  "request": [
    {
      "field": "referenceDataBizCode",
      "label": "档案编码",
      "type": "string",
      "value": "bm"
    },
    {
      "field": "keyword",
      "label": "根据选项名称和选项编码模糊查询",
      "type": "string"
    },
    {
      "field": "offset",
      "label": "分页起始",
      "type": "string",
      "describe": "默认值0"
    },
    {
      "field": "pageSize",
      "label": "分页条数",
      "type": "string",
      "describe":"默认值50,最大值是100",
      “value”: “50”
    },
    {
      “field”: “updatedStartAt”,
      “label”: “最近修改时间,时间戳”,
      “type”: “string”,
      “describe”: “查询在此时间及之后修改的数据”,
      “value”: “{LAST_SYNC_TIME}000”
    },
    {
      “field”: “updatedEndAt”,
      “label”: “最近修改时间,时间戳”,
      “type”: “string”,
      “describe”:“查询在此时间及之前修改的数据”,
      “value”:“{CURRENT_TIME}000”
    }
  ]
}

请求参数解析

  1. referenceDataBizCode: 档案编码,固定值为"bm"。
  2. keyword: 用于模糊查询选项名称和选项编码。
  3. offset: 分页起始位置,默认为0。
  4. pageSize: 分页条数,默认为50,最大值为100。
  5. updatedStartAt: 最近修改时间的起始时间戳,用于查询在此时间及之后修改的数据。
  6. updatedEndAt: 最近修改时间的结束时间戳,用于查询在此时间及之前修改的数据。

数据请求与清洗

在发送请求时,我们需要确保请求体包含上述所有必要参数。以下是一个示例请求体:

{
  “referenceDataBizCode”:“bm”,
  “keyword”:“部门”,
  “offset”:“0”,
  “pageSize”:“50”,
  “updatedStartAt”:“1633046400000”, // 示例开始时间戳
  “updatedEndAt”:“1633132800000” // 示例结束时间戳
}

发送请求后,我们会收到一个包含部门信息的响应。接下来,需要对这些数据进行清洗,以确保其符合目标系统的要求。

数据转换与写入

清洗后的数据需要进行转换,以适应目标系统(如金蝶部门)的格式。假设目标系统要求的数据格式如下:

{
  ”departmentId“:“12345”,
  ”departmentName“:“销售部”
}

我们需要将每刻返回的数据字段映射到目标系统所需的字段。例如:

  • bizCode -> departmentId
  • name -> departmentName

通过轻易云平台提供的数据转换功能,可以轻松实现这一映射过程。以下是一个简单的映射示例:

{
  ”departmentId“:“{{bizCode}}”,
  ”departmentName“:“{{name}}”
}

实践中的注意事项

  1. 分页处理:确保处理大数据量时正确实现分页逻辑,以避免遗漏或重复数据。
  2. 错误处理:捕获并处理API调用中的错误,如网络问题、无效参数等,以提高系统稳定性。
  3. 性能优化:根据实际需求调整分页大小和请求频率,以优化性能。

通过上述步骤,我们可以高效地调用每刻接口获取并加工数据,为后续的数据集成奠定坚实基础。 如何开发金蝶云星空API接口

利用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是至关重要的一步。本文将详细探讨如何利用轻易云数据集成平台,将已经集成的源平台数据通过ETL转换为金蝶云星空API接口所能接收的格式,并最终写入目标平台。

配置元数据

首先,我们需要了解元数据配置,这是进行ETL转换和数据写入的基础。以下是针对金蝶云星空API接口的元数据配置:

{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {"field":"FName","label":"部门名称","type":"string","value":"{name}"},
    {"field":"FNumber","label":"编码","type":"string","value":"{bizCode}"},
    {"field":"FCreateOrgId","label":"创建组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{parentCode}"},
    {"field":"FUseOrgId","label":"使用组织","type":"string","parser":{"name":"ConvertObjectParser","params":"FNumber"},"value":"{parentCode}"},
    {"field":"FHelpCode","label":"助记码","type":"string"},
    {"field":"FDescription","label":"描述","type":"string"}
  ],
  "otherRequest": [
    {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BD_Department"},
    {"field":"Operation","label":"执行的操作","type":"string","value":"BatchSave"},
    {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
    {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)", "value": "false"}
  ]
}

数据请求与清洗

在ETL流程中,首先需要从源系统请求数据并进行清洗。这一步确保了数据的一致性和准确性,为后续的转换和写入奠定基础。假设我们已经完成了这一步,接下来进入关键的转换与写入阶段。

数据转换与写入

  1. 字段映射:根据元数据配置,将源系统的数据字段映射到目标系统所需的字段。例如,将源系统中的name字段映射到金蝶云星空中的FName字段。

  2. 数据解析:对于一些特殊字段,需要进行解析。例如,FCreateOrgIdFUseOrgId字段使用了ConvertObjectParser解析器,通过传递参数FNumber来完成解析。这一步确保了复杂结构的数据能够正确转换。

  3. 构建请求体:根据元数据配置构建API请求体。以下是一个示例请求体:

{
  "FormId": "BD_Department",
  "Operation": "BatchSave",
  "IsAutoSubmitAndAudit": true,
  "IsVerifyBaseDataField": false,
  "array": [
    {
      "FName": "<部门名称>",
      "FNumber": "<编码>",
      "FCreateOrgId": {
        "FNumber": "<创建组织编码>"
      },
      "FUseOrgId": {
        "FNumber": "<使用组织编码>"
      },
      "FHelpCode": "<助记码>",
      "FDescription": "<描述>"
    }
  ]
}
  1. 发送请求:通过HTTP POST方法,将构建好的请求体发送到金蝶云星空API接口。以下是一个示例代码片段:
import requests

url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
  # 构建好的请求体
}

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

if response.status_code == 200:
    print("Data successfully written to Kingdee Cloud.")
else:
    print("Failed to write data:", response.text)

实时监控与错误处理

在整个过程中,实时监控和错误处理是不可或缺的部分。轻易云平台提供了实时监控功能,可以随时查看数据流动和处理状态。一旦出现错误,可以迅速定位问题并进行修正。例如,如果某个字段解析失败,可以通过日志查看具体原因,并及时调整元数据配置或源系统的数据格式。

通过上述步骤,我们成功地将源平台的数据经过ETL转换后写入到了金蝶云星空API接口。这不仅提升了业务流程的自动化程度,也确保了数据的一致性和准确性。 用友与SCM系统接口开发配置

更多系统对接方案