使用轻易云实现ETL操作并集成金蝶云星空

  • 轻易云集成顾问-彭亮

每刻数据集成到金蝶云星空:一个系统对接集成案例分享

在本次技术案例中,我们将深入探讨如何通过轻易云数据集成平台,将每刻投资项目的数据精准、高效地传输到金蝶云星空。此次集成的方案名为“每刻投资项目->金蝶投资项目”,重点解决了跨系统间的大量数据的快速、可靠写入和格式差异问题。

为了确保整个过程不漏单,并保证定时可靠地抓取每刻接口的数据,我们采用了轻易云提供的全透明可视化操作界面及实时监控功能。在此基础上,针对每刻接口(/api/openapi/reference/data/detail/query)的分页和限流特性进行了专项处理,以保障API调用的稳定性与效率。

批量数据由每刻系统拉取后,通过自定义脚本实现与金蝶云星空标准格式之间的数据映射,再利用金蝶提供的数据写入API(batchSave)完成高效存储。这一过程中,为确保异常情况能够得到及时妥善处理,我们设计并实现了完整的错误重试机制,使得任何潜在的问题都能被迅速发现并解决。

另外,为应对两套系统间可能存在的数据格式差异,我们特别构建了一系列转换规则,这些规则不仅涵盖基本字段类型映射,也考虑到了特殊业务场景下的数据校验与调整需求。同时,通过实时监控和日志记录功能,对整个处理链路进行全面跟踪,提高整体运维效果。

接下来,将详细阐述具体技术实施步骤,从初始配置到实际运行中的注意事项,一一解析。 用友BIP接口开发配置

调用每刻接口获取并加工数据

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

接口配置与请求参数

根据提供的元数据配置,我们需要向每刻系统发送一个POST请求,具体的API路径为/api/openapi/reference/data/detail/query。以下是请求参数的详细配置:

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

以下是请求参数的JSON格式示例:

{
  "referenceDataBizCode": "TZXM",
  "keyword": "",
  "offset": "0",
  "pageSize": "50",
  "updatedStartAt": "{LAST_SYNC_TIME}000",
  "updatedEndAt": "{CURRENT_TIME}000"
}

请求与响应处理

  1. 构建请求: 使用轻易云平台的可视化界面或API调用工具(如Postman)构建上述请求。确保在请求头中设置必要的认证信息,如API密钥或Token。

  2. 发送请求: 将构建好的请求发送到每刻系统。由于轻易云平台支持全异步操作,可以同时处理多个请求,提高效率。

  3. 处理响应: 每刻系统返回的数据通常包含项目的详细信息,包括项目名称、业务编码等。以下是一个可能的响应示例:

    {
     "data": [
       {
         "name": "投资项目A",
         "bizCode": "TZXM001",
         ...
       },
       {
         "name": "投资项目B",
         "bizCode": "TZXM002",
         ...
       }
     ],
     ...
    }

数据清洗与转换

获取到原始数据后,需要进行清洗和转换,以便后续写入目标系统(金蝶投资项目)。主要步骤包括:

  1. 字段映射: 将每刻系统中的字段映射到金蝶系统中的相应字段。例如,将name映射到金蝶系统中的项目名称字段,将bizCode映射到金蝶系统中的业务编码字段。

  2. 数据验证: 根据元数据配置中的idCheck参数,对业务编码进行唯一性检查,确保没有重复记录。

  3. 格式转换: 根据目标系统要求,对日期、数值等字段进行格式转换。例如,将时间戳转换为标准日期格式。

  4. 错误处理: 对于不符合要求的数据记录,进行日志记录并通知相关人员进行人工干预。

实践案例

假设我们需要同步最近一小时内修改过的投资项目数据,可以通过以下步骤实现:

  1. 获取当前时间和一小时前的时间戳。
  2. 构建请求参数,将updatedStartAt设置为一小时前的时间戳,将updatedEndAt设置为当前时间戳。
  3. 发送请求并获取响应数据。
  4. 对响应数据进行清洗、转换和验证。
  5. 将处理后的数据写入金蝶投资项目系统。

通过以上步骤,我们可以高效地实现每刻投资项目到金蝶投资项目的数据集成,确保数据的一致性和准确性。 用友BIP接口开发配置

使用轻易云数据集成平台进行ETL转换并写入金蝶云星空API接口

在数据集成生命周期的第二步中,关键任务是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转化为目标平台能够接收的格式。在本案例中,我们将探讨如何通过轻易云数据集成平台,将每刻投资项目的数据转换为金蝶云星空API接口所能接受的格式,并最终写入目标平台。

数据请求与清洗

在开始数据转换之前,首先需要从源平台获取原始数据,并对其进行清洗和预处理。假设我们已经完成了这一阶段,接下来进入数据转换与写入阶段。

数据转换与写入

为了将每刻投资项目的数据写入金蝶云星空,我们需要使用其提供的API接口。在本案例中,我们使用batchSave API来实现批量保存操作。以下是详细的元数据配置和具体操作步骤。

元数据配置解析
{
  "api": "batchSave",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  },
  "request": [
    {
      "field": "FNumber",
      "label": "编码",
      "type": "string",
      "value": "{bizCode}"
    },
    {
      "field": "FDataValue",
      "label": "名称",
      "type": "string",
      "value": "{name}"
    },
    {
      "field": "FId",
      "label": "类别",
      "type": "string",
      "value": "TZXM_SYS",
      "parser": {
        "name": "ConvertObjectParser",
        "params": "FNumber"
      }
    }
  ],
  ...
}
  1. API接口配置

    • api: 指定使用的API接口名称,这里是batchSave
    • method: HTTP请求方法,这里是POST
    • idCheck: 是否进行ID检查,设置为true
  2. 操作配置

    • operation: 定义批量操作的方式。
      • rowsKey: 指定数组键名,这里是array
      • rows: 每次处理的数据行数,这里是1行。
      • method: 批量保存的方法,这里是batchArraySave
  3. 请求字段映射

    • request: 定义要发送到API接口的字段映射。
      • FNumber: 映射到源数据中的业务编码 {bizCode}
      • FDataValue: 映射到源数据中的名称 {name}
      • FId: 固定值 "TZXM_SYS",通过解析器 ConvertObjectParser 转换为目标格式。
  4. 其他请求参数

    [
     {
       ...
       {"field":"FormId","label":"业务对象表单Id","type":"string","describe":"必须填写金蝶的表单ID如:PUR_PurchaseOrder","value":"BOS_ASSISTANTDATA_DETAIL"},
       {"field":"Operation","label":"执行的操作","type":"string","value":"BatchSave"},
       {"field":"IsAutoSubmitAndAudit","label":"提交并审核","type":"bool","value":"true"},
       {"field":"IsVerifyBaseDataField","label":"验证基础资料","type":"bool","describe":"是否验证所有的基础资料有效性,布尔类,默认false(非必录)","value":"false"}
     }
    ]
实际操作步骤
  1. 准备源数据 从每刻投资项目系统中提取所需的数据,例如:

    [
     {"bizCode": "INV001", "name": "投资项目A"},
     {"bizCode": "INV002", "name": "投资项目B"}
    ]
  2. 转换数据格式 根据元数据配置,将提取的数据转换为金蝶云星空API能够接收的格式:

    [
     {
       array: [
         {"FNumber": "{INV001}", ...},
         {"FNumber": "{INV002}", ...}
       ],
       FormId: 'BOS_ASSISTANTDATA_DETAIL',
       Operation: 'BatchSave',
       IsAutoSubmitAndAudit: true,
       IsVerifyBaseDataField: false
     }
    ]
  3. 发送HTTP请求 使用HTTP POST方法,将转换后的数据发送到金蝶云星空API接口:

import requests

url = 'https://api.kingdee.com/batchSave'
headers = {'Content-Type': 'application/json'}
data = {
  ...
}

response = requests.post(url, json=data, headers=headers)
if response.status_code == 200:
    print("Data successfully saved to Kingdee Cloud.")
else:
    print("Failed to save data:", response.content)

通过上述步骤,我们成功地将每刻投资项目的数据转换并写入到金蝶云星空系统。这一过程展示了如何利用轻易云数据集成平台高效地进行ETL转换和系统间的数据无缝对接。 泛微OA与ERP系统接口开发配置

更多系统对接方案