使用轻易云平台完成ETL转换并对接金蝶云星空

  • 轻易云集成顾问-张妍琪

聚水潭-采购入库-->金蝶-采购入库(回写采购单号)

在实施聚水潭与金蝶云星空的系统对接时,确保数据的完整性和实时性是一个关键挑战。本案例将针对“聚水潭-采购入库-->金蝶-采购入库(回写采购单号)”这一具体场景进行深入探讨,并详细讲解如何利用相关API接口实现高效的数据集成。

数据获取与处理

首先,我们通过调用/open/purchasein/query接口从聚水潭系统中定期可靠地抓取采购入库数据。这一过程需要特别注意分页和限流问题,以确保数据获取的效率和系统负载均衡。为了解决这个问题,可以采用批量拉取策略,通过将大规模数据分段拉取并合理设置时间间隔来减轻服务器压力。

POST /open/purchasein/query
{
    "pageSize": 500,
    "currentPage": 1,
    // 更多参数...
}

数据转换与映射

由于聚水潭和金蝶云星空之间存在一定的数据格式差异,必须进行必要的数据转换。我们使用自定义数据转换逻辑,将从聚水潭获取到的原始JSON格式数据转化为符合金蝶云星空要求的结构。例如,对产品编码、数量等字段进行重新映射,以适应目标系统的数据模型。

def transform_data_from_jushuitan_to_kingdee(data):
    transformed_data = {
        "productCode": data["item_code"],
        "quantity": data["qty_purchased"],
        # 更多字段映射逻辑...
    }
    return transformed_data

数据写入至金蝶云星空

完成数据转换后,需要将这些处理过的数据批量快速写入到金蝶云星空。这一步通过调用batchSave API接口,实现多条记录的一次性保存操作,大大提升了整体的数据处理效率。同时,为防止漏单情况发生,应实现可靠重试机制,对于失败的请求进行自动重试,保证所有有效信息能够准确导入目标系统。

POST /api/batchSave
{
    "data_entries": [
        {
            "productCode": "...",
            "quantity": "...",
            // 更多字段...
        },
        // 更多条目...
    ]
}

实时监控与日志记录

为了保障整个集成过程透明可视,在每个环节都添加实时监控和日志记录功能。这样可以及时发现并解决异常情况,如请求超时或响应错误等,通过集中监控平台设立告警规则,即使是在大量高频次请求处理中也能迅速定位问题所在,提高运维管理水平。

下一步,我们 如何开发金蝶云星空API接口

调用聚水潭接口/open/purchasein/query获取并加工数据

在数据集成的生命周期中,调用源系统接口是至关重要的第一步。本文将深入探讨如何通过轻易云数据集成平台调用聚水潭接口/open/purchasein/query,并对返回的数据进行加工处理。

接口调用配置

首先,我们需要了解接口的基本配置和请求参数。根据提供的元数据配置,聚水潭接口/open/purchasein/query使用POST方法进行数据查询。以下是请求参数的详细说明:

  • page_index: 表示第几页,从1开始。
  • page_size: 每页数量,最大不超过50。
  • modified_begin: 修改起始时间,格式为datetime。起始时间和结束时间必须同时存在,且时间间隔不能超过七天。
  • modified_end: 修改结束时间,格式为datetime。起始时间和结束时间必须同时存在,且时间间隔不能超过七天。
  • statuss: 状态字段,用于过滤不同状态的数据。

这些参数确保了我们可以灵活地分页获取数据,并根据修改时间和状态进行筛选。

请求参数设置

在实际操作中,我们需要动态设置这些请求参数。例如,可以使用轻易云平台提供的变量来自动填充当前时间和一小时前的时间:

{
  "page_index": 1,
  "page_size": 30,
  "modified_begin": "{{HOURE_AGO_1|datetime}}",
  "modified_end": "{{CURRENT_TIME|datetime}}",
  "statuss": ""
}

上述配置将获取从一小时前到当前时间内修改的采购入库数据,每次请求30条记录。

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统(如金蝶)。以下是一个简单的数据清洗与转换示例:

  1. 字段映射:将聚水潭返回的数据字段映射到目标系统所需的字段。例如,将io_id映射为金蝶中的采购单号。
  2. 数据格式转换:将日期格式从字符串转换为目标系统所需的日期格式。
  3. 状态过滤:根据业务需求过滤掉不需要处理的数据状态。
def clean_and_transform(data):
    cleaned_data = []
    for record in data:
        transformed_record = {
            "purchase_order_number": record["io_id"],
            "purchase_date": convert_date_format(record["modified_time"]),
            # 添加更多字段映射和转换
        }
        if record["status"] in ["approved", "completed"]:
            cleaned_data.append(transformed_record)
    return cleaned_data

def convert_date_format(date_str):
    # 实现日期格式转换逻辑
    pass

自动填充响应

轻易云平台支持自动填充响应功能,这意味着在调用接口并获取数据后,可以自动将响应结果填充到预定义的数据模型中。这极大简化了开发工作量,并确保数据的一致性和完整性。

{
  "buildModel": true,
  "autoFillResponse": true
}

通过启用这两个选项,我们可以自动生成符合目标系统要求的数据模型,并将接口响应的数据自动填充进去。

实时监控与调试

为了确保数据集成过程顺利进行,实时监控和调试是必不可少的。轻易云平台提供了全面的监控工具,可以实时查看每个环节的数据流动和处理状态。如果出现问题,可以快速定位并解决。

综上所述,通过合理配置请求参数、进行有效的数据清洗与转换,以及利用平台提供的自动填充功能,我们可以高效地调用聚水潭接口并加工处理返回的数据,为后续写入目标系统做好准备。这一步骤不仅确保了数据的一致性和准确性,也为整个数据集成生命周期奠定了坚实基础。 如何开发金蝶云星空API接口

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

在数据集成过程中,ETL(Extract, Transform, Load)是一个关键步骤。本文将详细探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。

数据请求与清洗

在开始数据转换之前,首先需要从源平台聚水潭获取采购入库单的数据。假设我们已经完成了这一阶段,并且得到了如下数据:

{
  "so_id": "SO123456",
  "io_id": "IO654321"
}

数据转换与写入

接下来,我们将重点放在如何将上述数据通过ETL过程转换为金蝶云星空API所能接受的格式,并通过API接口写入目标系统。

根据提供的元数据配置,我们需要调用金蝶云星空的batchSave API接口。以下是详细的配置和实现步骤:

  1. 配置请求参数

    根据元数据配置,我们需要设置以下字段:

    • FID: 单据主键,通过查找语句获取。
    • F_QST_INNO: 聚水潭入库单号。
    • FUPLOAD: 上传标志,固定为true

    以及一些其他必要的参数:

    • FormId: 业务对象表单Id,固定为STK_InStock
    • IsAutoSubmitAndAudit: 提交并审核标志,默认为false
    • Operation: 执行的操作,固定为Save
    • IsVerifyBaseDataField: 验证基础资料有效性,默认为true
    • SubSystemId: 系统模块,默认仓库模块,值为21
    • IsUserModelInit: 忽略网控标志,固定为true
  2. 构建请求体

    根据上述配置,我们构建出如下请求体:

{
  "FormId": "STK_InStock",
  "IsAutoSubmitAndAudit": false,
  "Operation": "Save",
  "IsVerifyBaseDataField": true,
  "SubSystemId": 21,
  "IsUserModelInit": true,
  "Model": {
    "FID": "_findCollection find FID from d16348f6-bb64-3d17-a03b-4e30c506fc70 where FBillNo=SO123456",
    "F_QST_INNO": "IO654321",
    "FUPLOAD": true
  }
}
  1. 调用API接口

    使用POST方法调用金蝶云星空的API接口,将构建好的请求体发送到目标系统。以下是示例代码:

import requests
import json

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

payload = {
    "FormId": "STK_InStock",
    "IsAutoSubmitAndAudit": False,
    "Operation": "Save",
    "IsVerifyBaseDataField": True,
    "SubSystemId": 21,
    "IsUserModelInit": True,
    "Model": {
        "FID": "_findCollection find FID from d16348f6-bb64-3d17-a03b-4e30c506fc70 where FBillNo=SO123456",
        "F_QST_INNO": io_id,
        "FUPLOAD": True
    }
}

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

if response.status_code == 200:
    print("Data successfully written to Kingdee Cloud")
else:
    print(f"Failed to write data: {response.status_code}, {response.text}")
  1. 处理响应

    检查响应状态码和返回信息,以确保数据成功写入目标系统。如果出现错误,根据返回的信息进行调试和修正。

总结

通过上述步骤,我们成功地将聚水潭采购入库单的数据经过ETL转换后,通过金蝶云星空API接口写入了目标平台。这一过程充分利用了轻易云数据集成平台提供的全生命周期管理和可视化操作界面,使得整个流程透明且高效。在实际应用中,可以根据具体需求调整和扩展这一流程,以满足更多复杂的数据集成场景。 用友与SCM系统接口开发配置

更多系统对接方案