ETL流程解析:从金蝶系统到轻易云数据集成的技术细节

  • 轻易云集成顾问-陈洁琳

金蝶云星空与轻易云集成平台的数据对接案例分享

在企业信息化系统中,数据的及时性和准确性尤为重要。本文将重点分享一个实际应用案例:如何通过轻易云数据集成平台,实现金蝶云星空系统物料信息的高效、稳定对接。本方案名为“查询金蝶物料(刷新金蝶许可用勿关闭)”。

1. API接口调用 - executeBillQuery

首先,我们通过调用金蝶云星空提供的executeBillQuery接口来获取最新的物料信息,该API能够有效地支持高吞吐量的数据请求,从而确保大量数据能够快速被抓取。同时,为了应对接口调用可能出现的大量分页和限流问题,我们在设计时采用了批量处理策略,并结合定时任务进行可靠的定期抓取。这些机制保障了数据漏单现象得以避免。

2. 数据写入过程 - 写入空操作

获取到的原始数据需要按需转换后写入到轻易云集成平台中。为了实现这一点,我们使用了轻易云提供的数据写入API:写入空操作。该API拥有强大的并发处理能力,可以快速将大批量数据插入目标数据库,有效提升整体流程效率。此外,通过可视化的数据流设计工具,使得整个转换及插入过程更加直观且便于管理。

3. 数据监控和异常处理

实时监控是保证数据质量的重要环节。借助轻易云的平台特性,建立了一套完整的数据质量监控与告警系统,可以实时跟踪每一个任务节点中的状态变化以及性能表现。一旦发现异常情况,比如捕获错误或网络延迟过长,系统会立即触发重试机制,同时记录详细日志,以便后续分析处理。这一功能从根本上提高了系统运行稳定性,确保业务连续性不受影响。

以上三部分构成了我们此次技术方案实施的重要模块。而如何处理两端间复杂多样的数据结构差异,以及具体配置细节,将在下一步内容详述。在这之前,需要明确的是,仅凭标准API无法覆盖各种个性的需求场景,因此灵活有效地融合自定义逻辑成为解决此类问题的重要手段。

接下来让我们逐步展开具体实现步骤。 数据集成平台可视化配置API接口

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

在数据集成的生命周期中,第一步是调用源系统的接口以获取原始数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,并对获取的数据进行初步加工。

接口配置与调用

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FNumber",
  "id": "FMasterId",
  "pagination": {
    "pageSize": 500
  },
  "request": [
    {"field":"FMasterId","label":"id","type":"string","value":"FMasterId"},
    {"field":"FNumber","label":"编码","type":"string","value":"FNumber"},
    {"field":"FName","label":"名称","type":"string","value":"FName"},
    {"field":"FSpecification","label":"规格型号","type":"string","value":"FSpecification"},
    {"field":"FMnemonicCode","label":"助记码","type":"string","value":"FMnemonicCode"},
    {"field":"FOldNumber","label":"旧物料编码","type":"string","value":"FOldNumber"},
    {"field":"FBARCODE","label":"条码","type":"string","value":"FBARCODE"},
    {"field":"FDescription","label":"描述","type":"string","value":"FDescription"},
    {"field":"FMaterialGroup_FNumber","label":"物料分组","type":"string","value":"FMaterialGroup.FNumber"},
    {"field":"FErpClsID","label":"物料属性","type":"string","value":"FErpClsID"},
    {"field":"FDocumentStatus","label":"数据状态","type":"string","value":"FDocumentStatus"},
    {"field":"FForbidStatus","label":"禁用状态","type":"string","value":"FForbidStatus"},
    {"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FUseOrgId.fnumber='100' and FModifyDate>='{{LAST_SYNC_TIME|datetime}}'"}
  ],
  "otherRequest": [
    {"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"},
    {"field": "StartRow", "label": "开始行索引", "type": "string", describe: 金蝶的查询分页参数, value: "{PAGINATION_START_ROW}"},
    {"field": FieldKeys, label: 需查询的字段key集合, type: array, describe: 金蝶分录主键ID格式: FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber, parser: {name: ArrayToString, params: ,}},
    {"field": FormId, label: 业务对象表单Id, type: string, describe: 必须填写金蝶的表单ID如:PUR_PurchaseOrder, value: BD_MATERIAL}
  ]
}

数据请求与清洗

在配置好元数据后,我们可以通过POST请求来调用该接口。以下是一个示例请求:

{
  "FormId": "BD_MATERIAL",
  "FieldKeys": ["FMasterId", ..., ...],
  ...
}

在请求中,我们指定了需要查询的字段以及过滤条件,例如:

"FilterString" : “FSupplierId.FNumber = 'VEN00010' and FApproveDate>=2023-01-01”

这将确保我们只获取符合条件的数据。

数据转换与写入

一旦我们成功获取到数据,下一步就是对数据进行转换和写入。在轻易云平台上,这一步通常包括以下几个步骤:

  1. 字段映射:将源系统中的字段映射到目标系统中的相应字段。例如,将金蝶云星空中的FMasterId映射到目标系统中的id
  2. 数据清洗:对获取的数据进行清洗,包括去除无效字符、格式化日期等操作。
  3. 批量处理:由于每次请求只能获取有限数量的数据,因此需要实现分页处理,逐页获取并处理所有数据。

示例代码

以下是一个简单的示例代码,用于展示如何通过轻易云平台实现上述过程:

import requests

url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
   'FormId': 'BD_MATERIAL',
   'FieldKeys': ['FMasterId', '...', '...'],
   'FilterString': “FSupplierId.FNumber = 'VEN00010' and FApproveDate>=2023-01-01”,
   ...
}

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

# 数据清洗与转换
cleaned_data = []
for item in data:
   cleaned_item = {
      'id': item['FMasterId'],
      ...
   }
   cleaned_data.append(cleaned_item)

# 写入目标系统
write_to_target_system(cleaned_data)

通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行初步加工,为后续的数据集成奠定基础。 如何开发企业微信API接口

轻易云数据集成平台中的ETL转换与写入

在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程的第二步至关重要,即将已经集成的源平台数据进行转换,并转为目标平台能够接收的格式,最终写入目标平台。本文将深入探讨这一过程中涉及的技术细节,特别是API接口的配置和使用。

数据转换与API接口配置

在数据集成过程中,首先需要确保源数据经过清洗和初步处理,接下来便是通过ETL流程将这些数据转换为目标平台所需的格式。以下是一个具体的元数据配置示例,用于将金蝶物料数据写入到轻易云集成平台:

{
    "api": "写入空操作",
    "effect": "EXECUTE",
    "method": "POST",
    "number": "number",
    "id": "id",
    "name": "编码",
    "idCheck": true
}

配置解析

  1. API Endpoint:

    • "api": "写入空操作":指定了目标API接口名称。在实际应用中,这个字段会被替换为具体的API路径。
  2. Effect:

    • "effect": "EXECUTE":指明了操作类型。在此配置中,EXECUTE表示执行写入操作。
  3. HTTP Method:

    • "method": "POST":指定了HTTP请求方法为POST,用于向目标平台发送数据。
  4. Field Mapping:

    • "number": "number":映射源数据中的number字段到目标API中的number字段。
    • "id": "id":映射源数据中的id字段到目标API中的id字段。
    • "name": "编码":映射源数据中的name字段到目标API中的编码字段。
  5. ID Check:

    • "idCheck": true:表示在写入前需要检查ID是否存在,以避免重复或冲突的数据写入。

数据转换流程

  1. 提取(Extract): 从金蝶系统中提取物料信息,通过预先配置好的连接器和查询语句获取原始数据。这一步通常涉及到对数据库或REST API进行访问,并获取JSON或XML格式的数据。

  2. 转换(Transform): 根据元数据配置,对提取的数据进行必要的转换。例如,将金蝶系统中的物料编码字段映射到轻易云集成平台所需的格式。这一步可能涉及到多种数据处理操作,如类型转换、字段重命名、值映射等。

  3. 加载(Load): 使用配置好的API接口,将转换后的数据通过POST请求发送到目标平台。确保在发送前进行ID检查,以防止重复记录。以下是一个简化的Python代码示例,展示了如何实现这一过程:

import requests
import json

# 示例源数据
source_data = {
    'number': '12345',
    'id': '67890',
    'name': '物料A'
}

# 转换后的目标数据
target_data = {
    'number': source_data['number'],
    'id': source_data['id'],
    '编码': source_data['name']
}

# API接口配置
api_url = 'https://example.com/api/写入空操作'
headers = {'Content-Type': 'application/json'}

# 发送POST请求
response = requests.post(api_url, headers=headers, data=json.dumps(target_data))

if response.status_code == 200:
    print('Data successfully written to the target platform.')
else:
    print(f'Failed to write data: {response.status_code}, {response.text}')

关键技术点

  • 异构系统支持:确保不同系统间的数据格式和协议兼容性,通过灵活的元数据配置实现无缝对接。
  • 实时监控与日志记录:在ETL过程中实时监控每个环节,并记录详细日志以便于后续分析和故障排查。
  • 错误处理机制:设计健壮的错误处理机制,在发生异常时能够及时捕获并采取相应措施,如重试、告警等。

通过以上技术手段,可以有效地实现从金蝶系统到轻易云集成平台的数据转换与写入,提高业务流程的自动化程度和效率。 用友与SCM系统接口开发配置

更多系统对接方案