星辰物料查询V2.0的ETL转换与目标平台写入

  • 轻易云集成顾问-孙传友

案例分享:金蝶云星辰V2数据集成到轻易云集成平台

在企业信息系统整合的过程中,高效、安全地实现多个系统之间的数据对接是关键所在。本案例将介绍如何通过轻易云数据集成平台,将金蝶云星辰V2(Kingdee Cloud Galaxy V2)中的物料查询数据进行高效、可靠的对接与处理,实例名称为“星辰物料查询V2.0”。

为了确保大批量数据能够快速且无误地从金蝶云星辰V2获取并写入到轻易云,我们使用了其 /jdy/v2/bd/material API接口来抓取原始物料数据。考虑到该接口会受到分页和限流等限制,同时需要应对可能出现的数据格式差异及网络异常情况,我们设计了一套具体的方案来保证流程顺利。

首先,采用定时任务机制,每隔固定时间周期可靠抓取金蝶云星辰V2接口的数据。这不仅提高了操作的自动化程度,还使得实时监控成为可能。其次,通过轻易云提供的集中监控和告警系统,可以实时监督每个任务状态,一旦发现异常即刻告警并触发相应重试机制。

在处理API返回的数据时,需要特别注意分页问题。我们多次调用API以获取完整的数据集合,并通过自定义转换逻辑,将所需字段映射至适配业务需求的新结构。这些整合后的数据最终被批量写入到轻易云中,实现统一管理与利用,发挥其高吞吐量能力,以提升整体效率。

由此技术策略不难看出,通过合理配置和科学安排,不仅能满足复杂环境下的数据集成功能需求,也显著优化工作流程,提高了业务响应速度。这正是“星辰物料查询V2.0”案例带来的启示与成果展示。 轻易云数据集成平台金蝶集成接口配置

调用金蝶云星辰V2接口获取并加工数据

在数据集成的生命周期中,第一步至关重要,即从源系统调用API接口获取数据,并进行初步加工。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星辰V2接口/jdy/v2/bd/material来实现这一过程。

接口概述

金蝶云星辰V2提供的/jdy/v2/bd/material接口用于查询物料信息。该接口支持多种查询参数,能够灵活地获取所需的数据。以下是该接口的元数据配置:

{
  "api": "/jdy/v2/bd/material",
  "effect": "QUERY",
  "method": "GET",
  "number": "number",
  "id": "id",
  "name": "number",
  "idCheck": true,
  "request": [
    {"field": "enable", "label": "可用状态", "type": "string", "describe": "可用状态,1:可用,0:禁用,-1:全部", "value": "1"},
    {"field": "search", "label": "模糊搜索", "type": "string", "describe": "模糊搜索-名称、编码、规格、条形码"},
    {"field": "parent_id", "label": "商品类别", "type": "string", "describe": "商品类别ID"},
    {"field": "isdataperm", "label": "数据权限", "type": "string", "describe": "是否添加数据权限校验,默认false"},
    {"field": "create_start_time", "label":"创建开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),创建时间"},
    {"field":"create_end_time","label":"创建结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),创建时间"},
    {"field":"modify_start_time","label":"修改开始时间戳","type":"string","describe":"开始时间(格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {LAST_SYNC_TIME}*1000"},
    {"field":"modify_end_time","label":"修改结束时间戳","type":"string","describe":"结束时间(格式:“时间戳”,-1表示不过滤),修改时间","value":"_function {CURRENT_TIME}*1000"},
    {"field":"page","label":"当前页","type":"string","describe":"当前页(默认1)","value":"1"},
    {"field":"page_size","label":"每页显示条数","type":"string","describe":"每页显示条数(默认10,最大100)","value":"100"},
    {"field":"show_units","label":"多单位信息","type":"string","describe":"是否返回多单位信息,true:返回,默认false"},
    {"field":"show_images","label":"图片信息","type":"string","describe":"是否返回图片信息,true:返回,默认false"}
  ],
  ...
}

请求参数详解

在调用该接口时,可以根据业务需求配置不同的请求参数:

  • enable: 用于过滤物料的可用状态。值为1表示只查询可用物料。
  • search: 支持对物料名称、编码、规格和条形码进行模糊搜索。
  • parent_id: 用于指定商品类别ID,从而筛选特定类别下的物料。
  • isdataperm: 是否添加数据权限校验,默认为false
  • create_start_timecreate_end_time: 用于按创建时间范围过滤物料。
  • modify_start_timemodify_end_time: 用于按修改时间范围过滤物料。这里特别注意,这两个字段的值分别为 _function {LAST_SYNC_TIME}*1000_function {CURRENT_TIME}*1000,表示自动填充上次同步和当前时间的Unix时间戳。
  • pagepage_size: 分页参数,用于控制查询结果的分页显示。
  • show_unitsshow_images: 控制是否返回多单位信息和图片信息。

数据请求与清洗

在实际操作中,我们首先需要构建请求URL,并附加必要的查询参数。例如:

GET /jdy/v2/bd/material?enable=1&search=&parent_id=&isdataperm=false&create_start_time=-1&create_end_time=-1&modify_start_time=1660000000000&modify_end_time=1669999999999&page=1&page_size=100&show_units=false&show_images=false

通过上述URL,我们可以获取到符合条件的物料数据。接下来,需要对返回的数据进行清洗和初步加工。这一步通常包括:

  1. 字段映射与转换:根据业务需求,将原始数据中的字段映射到目标系统所需的字段。例如,将金蝶云星辰中的 number 字段映射为目标系统中的 material_code 字段。
  2. 数据过滤与校验:对返回的数据进行必要的过滤和校验,例如去除无效或重复的数据。
  3. 格式化处理:将日期、数值等字段按照目标系统要求进行格式化处理。

实践案例

假设我们需要获取所有在最近一周内有修改记录且状态为可用的物料,并将其导入到目标系统中。具体步骤如下:

  1. 配置请求参数:

    • enable=1
    • modify_start_time=_function {LAST_WEEK_START_TIME}*1000
    • modify_end_time=_function {CURRENT_TIME}*1000
    • page=1
    • page_size=100
  2. 构建请求URL:

    GET /jdy/v2/bd/material?enable=1&modify_start_time=1660000000000&modify_end_time=1669999999999&page=1&page_size=100
  3. 发起请求并获取响应数据。

  4. 对响应数据进行清洗和初步加工:

    • 映射字段,如将 number 转换为 material_code
    • 校验数据有效性,如检查 id 是否为空。
  5. 将处理后的数据写入目标系统。

通过上述步骤,我们可以高效地完成从金蝶云星辰V2获取并加工物料数据,为后续的数据转换与写入奠定基础。这一过程不仅确保了数据的一致性和完整性,也极大提升了业务处理效率。 如何对接用友BIP接口

星辰物料查询V2.0数据ETL转换与写入目标平台

在数据集成的生命周期中,第二步是将已经集成的源平台数据进行ETL转换,使其符合目标平台API接口所能接收的格式,并最终写入目标平台。本文将详细探讨如何通过轻易云数据集成平台完成这一过程。

数据请求与清洗

在开始ETL转换之前,首先需要确保从源平台获取的数据已经过清洗和预处理。假设我们已经完成了这一阶段,接下来重点讨论如何将这些清洗后的数据进行转换,并通过API接口写入目标平台。

数据转换

为了使源数据能够被目标平台接受,需要根据目标平台API接口的要求进行格式转换。以下是一个示例代码片段,展示了如何将源数据转换为目标平台所需的格式:

import json

# 假设我们从源平台获取的数据如下
source_data = {
    "material_id": "12345",
    "material_name": "钢板",
    "quantity": 100,
    "unit": "kg"
}

# 定义目标平台API接口所需的格式
def transform_data(source_data):
    transformed_data = {
        "id": source_data["material_id"],
        "name": source_data["material_name"],
        "qty": source_data["quantity"],
        "unit_of_measurement": source_data["unit"]
    }
    return transformed_data

# 转换后的数据
transformed_data = transform_data(source_data)
print(json.dumps(transformed_data, indent=4))

上述代码将源数据中的字段名和结构进行了调整,以匹配目标平台API接口的要求。

数据写入

在完成数据转换后,下一步是通过轻易云集成平台提供的API接口,将转换后的数据写入目标平台。根据元数据配置,我们需要使用POST方法,并且启用ID检查功能。以下是实现这一过程的示例代码:

import requests

# API元数据配置
api_metadata = {
    "api": "写入空操作",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": True
}

# 目标平台API URL
api_url = f"https://api.qingyiyun.com/{api_metadata['api']}"

# 转换后的数据
data_to_write = transform_data(source_data)

# 检查ID是否存在(模拟ID检查)
def check_id_exists(data):
    # 模拟ID检查逻辑,这里假设ID存在返回True,否则返回False
    return data.get("id") is not None

if api_metadata["idCheck"] and not check_id_exists(data_to_write):
    raise ValueError("ID检查失败:缺少必要的ID字段")

# 将数据写入目标平台
response = requests.post(api_url, json=data_to_write)

if response.status_code == 200:
    print("数据成功写入目标平台")
else:
    print(f"写入失败,状态码:{response.status_code}")

上述代码展示了如何利用轻易云集成平台提供的API接口,将转换后的数据POST到目标URL,同时进行了必要的ID检查。

技术要点总结

  1. 数据清洗与预处理:确保源数据质量,为后续ETL步骤打下基础。
  2. 格式转换:根据目标平台API接口要求,对源数据进行字段名和结构调整。
  3. API调用:利用POST方法,通过轻易云集成平台提供的API接口,将转换后的数据写入目标系统。
  4. ID检查:在必要时启用ID检查功能,确保每条记录具有唯一标识。

通过以上步骤,可以高效地实现不同系统间的数据无缝对接,大幅提升业务流程的自动化程度和透明度。 电商OMS与WMS系统接口开发配置

更多系统对接方案