ETL转换与金蝶云星空API数据写入详解

  • 轻易云集成顾问-李国敏

金蝶云星空数据集成案例:金蝶-供应商——>空操作

在本文中,我们将详细分享一个实际的系统对接集成案例:如何高效地将金蝶云星空平台上的供应商数据通过executeBillQuery接口抓取并成功写入到另外一套金蝶云星空系统中。整个方案运行过程中,充分利用了轻易云数据集成平台提供的全生命周期管理特性,实现了数据处理过程中的实时监控、批量处理和异常重试机制。

集成交接点与技术难点解析

  1. 确保集成金蝶云星空数据不漏单

    • 在实施过程中,通过准确调用executeBillQuery接口读取源系统中的所有待处理单据,并采用定时任务来确保新产生的数据能被准时捕获。通过结合异步处理和多线程加速,提高了大规模数据提取的效率,有效防止漏单现象。
  2. 大量数据快速写入到金蝶云星空

    • 为应对目标系统的大量写入需求,我们使用batchSave API,将批量的数据进行分片传输。这不仅减少了单次请求的数据体积,还避免了因网络波动导致的数据传输失败。同时,配置轻易云内置的限流控制策略,在保障业务稳定性的基础上,实现高性能的数据写入。
  3. 异常处理与错误重试机制:

    • 针对此次项目我们设计了一整套完善的异常捕捉及重试逻辑。例如,当某个API调用发生错误时,我们会触发对应日志记录并自动执行重试动作。此外,通过搭建报警机制,一旦出现连续失败情况,可以即时通知相关运维人员进行干预,从而最大程度降低影响范围。
  4. 分页处理与优化:

    • 由于源系统返回的数据可能非常庞大,传统的一次性加载方法显然无法满足要求。因此我们实现了按页逐条拉取并在本地缓存后,再统一提交的方法。这样即使面对海量订单,也能够平滑完成整体迁移,并保持较低延迟与出色响应速度。

实施建议与注意事项

  • API参数配置和调优 确保每一次API请求都带有必要且有效的参数,这样可以过滤掉无关或冗余的信息,提升查询及存储效率。

  • 日志记录和分析 有效设置日志级别,不仅可以帮助追踪问题,还能够为后续性能优化提供可靠依据。尤其是在长时间或者跨周期任务中,更是必不可少的一环。

以上内容只是此次项目开头部分,很快你就会看到更具体、更详尽的实施步骤 如何开发用友BIP接口

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

在数据集成过程中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取供应商相关数据并进行初步加工。

接口调用配置

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

{
  "api": "executeBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FSupplierId",
  "name": "FNumber",
  "request": [
    {"field": "FSupplierId", "label": "FSupplierId", "type": "string", "describe": "FSupplierId", "value": "FSupplierId"},
    {"field": "FNumber", "label": "编码", "type": "string", "describe": "编码", "value": "FNumber"},
    {"field": "FName", "label": "名称", "type": "string", "describe": "名称", "value": "FName"},
    {"field": "FCreateOrgId_FNumber", "label": "创建组织", "type": "string", ...
  ],
  ...
}

请求参数解析

在请求参数中,我们需要特别注意以下几个字段:

  • FormId: 必须填写金蝶的表单ID,这里我们使用BD_Supplier,表示供应商信息。
  • FieldKeys: 指定需要查询的字段集合,如FPOOrderEntry_FEntryId, FPurchaseOrgId.FNumber
  • FilterString: 用于过滤条件,例如过滤最近同步时间后的数据:FAuditDate>='{{LAST_SYNC_TIME|dateTime}}'

数据请求与清洗

通过配置上述元数据,我们可以发送POST请求到金蝶云星空的API接口。以下是一个示例请求体:

{
  ...
  {
    FormId: 'BD_Supplier',
    FieldKeys: ['FSupplierId', 'FNumber', 'FName', 'FCreateOrgId.FNumber', ...],
    FilterString: 'FAuditDate>=\'2023-01-01\'',
    Limit: 100,
    StartRow: 0
  }
}

在接收到响应后,我们需要对数据进行初步清洗和转换。例如,将日期格式统一、去除冗余字段等。这一步骤可以通过轻易云的数据处理功能实现。

数据转换与写入

在完成数据清洗后,下一步是将其转换为目标系统所需的格式,并写入到相应的数据存储中。这一步通常包括以下操作:

  1. 字段映射:将源系统中的字段映射到目标系统中的对应字段。
  2. 格式转换:例如,将字符串类型的日期转换为标准日期格式。
  3. 写入操作:将处理后的数据写入到目标数据库或其他存储系统中。

示例代码

以下是一个简化的示例代码,用于展示如何通过轻易云平台调用金蝶云星空接口并处理返回的数据:

import requests
import json

# 配置请求参数
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
    'FormId': 'BD_Supplier',
    'FieldKeys': ['FSupplierId', 'FNumber', 'FName', 'FCreateOrgId.FNumber'],
    'FilterString': 'FAuditDate>=\'2023-01-01\'',
    'Limit': 100,
    'StartRow': 0
}

# 发起POST请求
response = requests.post(url, headers=headers, data=json.dumps(payload))

# 检查响应状态码
if response.status_code == 200:
    data = response.json()

    # 数据清洗与转换
    cleaned_data = []
    for item in data['Result']:
        cleaned_item = {
            'SupplierID': item['FSupplierId'],
            'Code': item['FNumber'],
            'Name': item['FName'],
            # 更多字段映射...
        }
        cleaned_data.append(cleaned_item)

    # 写入目标系统(示例)
    write_to_target_system(cleaned_data)
else:
    print(f"Error: {response.status_code}, {response.text}")

通过以上步骤,我们可以高效地从金蝶云星空获取供应商数据,并进行必要的清洗和转换,为后续的数据处理和分析打下坚实基础。 金蝶与MES系统接口开发配置

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

在数据集成的生命周期中,ETL(提取、转换、加载)过程是关键步骤之一。本文将重点探讨如何使用轻易云数据集成平台将已经集成的源平台数据进行ETL转换,并转为金蝶云星空API接口所能够接收的格式,最终写入目标平台。

元数据配置解析

根据提供的元数据配置,我们需要将源平台的数据映射到金蝶云星空API接口所需的字段格式。以下是元数据配置的详细解析:

{
  "api": "batchSave",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {"field":"FDEPTID","label":"FID","type":"string","describe":"FID"},
    {"field":"FNumber","label":"编码","type":"string","describe":"编码","value":"{code}"},
    {"field":"FName","label":"名称","type":"string","describe":"名称","value":"{name}"},
    {"field":"FUseOrgId_FNumber","label":"使用组织","type":"string","describe":"使用组织"},
    {"field":"FCreateOrgId","label":"创建组织","type":"string","describe":"创建组织"},
    {"field":"FCreatorId","label":"创建人","type":"string"},
    {"field":"FCreateDate","label":"创建日期","type":"string","value":"{create_date}"},
    {"field":"FGroup","label":"部门分组","type":"string"},
    {"field":"FFullName","label":"部门全称","type":"string"}
  ],
  "otherRequest": [
    {"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "BD_Department"},
    {"field": "Operation", "label": "Operation", "type": "string", "value": "BatchSave"},
    {"field": "IsAutoSubmitAndAudit", "label": "IsAutoSubmitAndAudit", "type": "bool", "value": true},
    {"field": "IsVerifyBaseDataField", "label": "IsVerifyBaseDataField", "type": "bool", "describe": "是否验证所有的基础资料有效性,布尔类,默认false(非必录)", "value": false}
  ],
  "operation": {
    "rowsKey": "array",
    "rows": 1,
    "method": "batchArraySave"
  }
}

数据转换与映射

在进行数据转换时,需要将源平台的数据字段映射到目标平台所需的字段。以下是具体步骤:

  1. 字段映射

    • FID 映射到 FDEPTID
    • 编码 映射到 FNumber
    • 名称 映射到 FName
    • 使用组织 映射到 FUseOrgId_FNumber
    • 创建组织 映射到 FCreateOrgId
    • 创建人 映射到 FCreatorId
    • 创建日期 映射到 FCreateDate
    • 部门分组 映射到 FGroup
    • 部门全称 映射到 FFullName
  2. 动态值替换: 在元数据配置中,某些字段需要动态值替换,例如 {code}{name}。这些占位符将在实际执行时由具体的数据值替换。

  3. 其他请求参数

    • 设置表单ID (FormId) 为 "BD_Department"
    • 操作类型 (Operation) 为 "BatchSave"
    • 自动提交和审核 (IsAutoSubmitAndAudit) 设置为 true
    • 验证基础资料有效性 (IsVerifyBaseDataField) 设置为 false

API调用与写入

完成数据转换后,通过轻易云数据集成平台调用金蝶云星空API接口进行数据写入。具体操作如下:

  1. 构建请求体: 根据元数据配置构建符合金蝶云星空API接口要求的请求体。例如:
{
  "FormId": "{BD_Department}",
  ...
}
  1. 调用API: 使用POST方法调用金蝶云星空的批量保存接口(batchSave)。确保请求体中的每个字段都已正确映射和填充。

  2. 处理响应: 接收并处理API响应,确保数据成功写入。如果出现错误,根据错误信息进行相应调整和重试。

技术细节与注意事项

  • 异步处理:轻易云平台支持全异步处理,确保在高并发情况下仍能高效稳定地进行数据集成。
  • 实时监控:利用轻易云的数据流动和处理状态实时监控功能,可以及时发现并解决潜在问题。
  • 多系统兼容性:该平台支持多种异构系统的数据无缝对接,因此在不同系统间的数据迁移和整合中具有显著优势。

通过上述步骤,我们可以高效地将源平台的数据经过ETL转换后写入金蝶云星空,实现不同系统间的数据无缝对接。这不仅提升了业务透明度和效率,也为企业的信息化建设提供了有力支持。 打通用友BIP数据接口

更多系统对接方案