轻易云平台下金蝶云星空数据写入与ETL转换实战

  • 轻易云集成顾问-杨嫦

案例分享:管易云数据集成到金蝶云星空

在系统对接与数据集成的过程中,确保各环节无缝连接、高效处理是一个极具挑战性的任务。本文将介绍如何通过轻易云数据集成平台,将管易云的数据高效、稳定地同步至金蝶云星空。我们以实际运行方案“wk_供应商同步”为例,深入探讨集成过程中的关键技术点。

管易云API接口调用:gy.erp.supplier.get

首先,我们需要从管易云获取供应商数据。这部分通过调用其提供的API接口 gy.erp.supplier.get 来实现。在配置过程中,我们重点关注以下几方面:

  1. 分页和限流处理
    由于管易云接口对单次返回的数据量有限制,因此我们必须合理设置分页参数,以确保所有数据完整抓取。此外,为避免触发访问频率限制,需要加入限流机制,保障请求平稳执行。

  2. 定时可靠的抓取机制
    配置定时任务,每隔固定时间自动调用 gy.erp.supplier.get 接口进行数据刷新。这保证了即使有新的供应商信息添加或更新,也能及时捕获并同步。

  3. 实时监控与日志记录
    实现整个抓取过程的实时监控,并详细记录每次API调用的状态和响应结果。如果出现异常情况,可以快速定位问题并进行重试操作,提高系统的鲁棒性。

数据写入到金蝶云星空:batchSave

将从管易云获取的数据写入到金蝶云星空,通过使用其提供的批量保存接口 batchSave 实现。这个阶段需关注如下几个关键点:

  1. 大量数据快速写入 为提高效率,大量供应商信息需要一次性批量提交给金蝶云星空。通过优化批量提交策略,不仅减少了网络开销,还提升了整体传输速度。

  2. 数据格式转换 管理两端不同的数据格式,是成功对接的重要前提。在这一过程中,我们实现了一套灵活的数据映射工具,根据需求完成字段匹配及格式转换,使得源与目标系统之间的信息能够无缝衔接。

  3. 异常处理与错误重试 在向金蝶云提交供应商信息时,可能会遇到各种异常情况,如网络波动、权限不足等。因此,在设计解决方案时整合了全面的异常处理逻辑及错误重试机制,包括但不限于失败记录、二次尝试等措施,以确保最终所有有效信息都能准确写入目标数据库中。

这些技术细节构建起“wk_供应商同步”方案坚实稳定基础,而后续 企业微信与OA系统接口开发配置

调用管易云接口gy.erp.supplier.get获取并加工数据的技术实现

在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用管易云接口gy.erp.supplier.get,并对获取的数据进行初步加工处理。

接口概述

管易云提供的gy.erp.supplier.get接口用于获取供应商信息。该接口采用POST请求方式,支持分页查询,并通过指定时间范围来筛选数据。以下是该接口的元数据配置:

{
  "api": "gy.erp.supplier.get",
  "method": "POST",
  "number": "code",
  "id": "code",
  "pagination": {
    "pageSize": 40
  },
  "idCheck": true,
  "request": [
    {
      "field": "start_date",
      "label": "开始时间",
      "type": "string",
      "describe": "与end_date搭配使用"
    },
    {
      "field": "end_date",
      "label": "结束时间",
      "type": "string",
      "describe": "与start_date搭配使用"
    }
  ],
  "otherRequest": [
    {
      "field": "page_size",
      "label": "分页大小",
      "type": "string",
      "describe": "默认为10",
      "value": "{PAGINATION_PAGE_SIZE}"
    },
    {
      "field": "page_no",
      "label": "页号",
      "type": "string",
      "describe": "默认1",
      "value": "{PAGINATION_START_PAGE}"
    }
  ]
}

请求参数配置

在调用接口时,需要配置以下请求参数:

  1. 开始时间(start_date)结束时间(end_date):用于指定查询的时间范围。
  2. 分页大小(page_size)页号(page_no):用于控制分页查询,每次请求返回的数据量和当前页码。

示例请求体如下:

{
  "start_date": "<START_DATE>",
  "end_date": "<END_DATE>",
  "_pagination_":{
    "_page_size_":"40", 
    "_page_no_":"1"
  }
}

数据清洗与转换

在获取到原始数据后,需要对其进行清洗和转换,以便后续的数据处理和存储。以下是常见的数据清洗步骤:

  1. 字段映射:将源系统中的字段映射到目标系统中对应的字段。例如,将code映射为供应商编码,将name映射为供应商名称。
  2. 数据格式转换:将日期、数值等字段转换为目标系统所需的格式。例如,将日期字符串转换为标准日期格式。
  3. 去重处理:根据供应商编码等唯一标识字段,去除重复记录。

示例代码如下:

def clean_and_transform(data):
    cleaned_data = []
    for record in data:
        transformed_record = {
            'supplier_code': record['code'],
            'supplier_name': record['name'],
            'contact': record['contact'],
            'phone': record['phone'],
            'address': record['address']
        }
        cleaned_data.append(transformed_record)
    return cleaned_data

分页处理

由于接口支持分页查询,因此需要实现自动分页处理,以确保所有数据都能被完整获取。可以通过循环请求每一页的数据,直到没有更多数据为止。

示例代码如下:

def fetch_all_suppliers(api_client, start_date, end_date):
    page_no = 1
    all_data = []

    while True:
        response = api_client.post(
            api='gy.erp.supplier.get',
            data={
                'start_date': start_date,
                'end_date': end_date,
                'page_size': 40,
                'page_no': page_no
            }
        )

        if not response['data']:
            break

        all_data.extend(response['data'])
        page_no += 1

    return all_data

实时监控与日志记录

在整个数据集成过程中,实时监控和日志记录是确保数据准确性和及时发现问题的重要手段。可以通过轻易云平台提供的监控功能,对每一次API调用、数据清洗和转换过程进行实时监控,并记录详细日志。

示例日志记录代码如下:

import logging

logging.basicConfig(level=logging.INFO)

def log_api_call(api, params, response):
    logging.info(f"API Call: {api}")
    logging.info(f"Parameters: {params}")
    logging.info(f"Response: {response}")

# 在实际调用API时记录日志
log_api_call('gy.erp.supplier.get', {'start_date': start_date, 'end_date': end_date, 'page_size': 40, 'page_no': page_no}, response)

通过上述步骤,我们可以高效地调用管易云接口获取供应商信息,并对数据进行清洗和转换,为后续的数据处理奠定基础。在实际应用中,还可以根据具体需求进一步优化和扩展这些步骤,以满足不同业务场景的需求。 钉钉与ERP系统接口开发配置

使用轻易云数据集成平台实现金蝶云星空API接口的数据转换与写入

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,转为目标平台金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台配置元数据,实现这一过程。

API接口配置

为了将数据写入金蝶云星空,我们需要配置相应的API接口。根据提供的元数据配置,我们使用的是batchSave接口,采用POST方法提交请求。以下是具体的元数据配置:

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

数据请求与清洗

在进行ETL转换之前,首先需要从源平台获取原始数据,并对其进行清洗和预处理。这一步骤确保我们获取的数据是准确且符合目标平台要求的。

数据转换与写入

  1. 字段映射

    • FNumber:对应源数据中的编码字段 {code}
    • FName:对应源数据中的名称字段 {name}
    • FUseOrgIdFCreateOrgId:使用固定值 100,并通过 ConvertObjectParser 转换为金蝶云星空所需格式。
  2. 其他请求参数

    • FormId:设置为 BD_Supplier,表示业务对象表单ID。
    • Operation:设置为 batchSave,表示执行批量保存操作。
    • IsVerifyBaseDataField:设置为 false,表示不验证所有基础资料有效性。
    • IsAutoSubmitAndAudit:设置为 true,表示提交并审核。
  3. 批量处理: 配置中指定了批量处理方式,即每次处理20条记录,通过 "rowsKey": "array""rows": 20" 实现批量保存。

请求示例

以下是一个示例请求体,用于将清洗后的供应商数据写入金蝶云星空:

{
  "FormId": "BD_Supplier",
  "Operation": "batchSave",
  "IsVerifyBaseDataField": false,
  "IsAutoSubmitAndAudit": true,
  "array": [
    {
      "FNumber": "SUP001",
      "FName": "供应商A",
      "FUseOrgId": { 
        "FNumber": "100" 
      },
      "FCreateOrgId": { 
        "FNumber": "100" 
      }
    },
    {
      "FNumber": "SUP002",
      "FName": "供应商B",
      ...
    }
  ]
}

通过上述配置和请求体,我们可以实现从源平台到金蝶云星空的数据无缝对接。轻易云数据集成平台提供了全透明可视化操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。在实际应用中,根据具体需求调整元数据配置,可以灵活应对各种复杂的数据集成场景。 金蝶与MES系统接口开发配置

更多系统对接方案