使用轻易云平台进行ETL转换:将数据写入马帮API接口

  • 轻易云集成顾问-吕修远

修改物料金蝶-》马帮:系统对接集成案例分享

在企业资源管理和物流运作中,数据的实时准确传递至关重要。本文将细致剖析如何利用轻易云数据集成平台,实现金蝶云星空ERP系统到马帮电商平台的数据无缝对接。本次案例聚焦于“修改物料金蝶-》马帮”,围绕核心API接口executeBillQuery(从金蝶云星空获取数据)以及stock-do-change-stock(向马帮写入数据)展开详细阐述。

数据获取与处理方案

首先,通过调用金蝶云星空的executeBillQuery API,我们能够高效地抓取待同步的库存变更信息。然而,由于业务需求复杂,这个过程必须解决分页和限流问题,以确保每次请求都能完整返回所需的数据。这一步骤特别注重以下方面:

  1. 定时可靠的数据抓取: 通过轻易云提供的内置调度功能,设定合理的时间间隔进行批量数据拉取,避免因过于频繁访问导致服务压力过大。
  2. 自定义转换逻辑: 获取到初始原始数据后,根据业务规则进行必要的格式转化。例如,将特定字段映射为符合马帮接口要求的数据结构。

数据写入与监控机制

完成初步处理后,通过轻易云强大的高吞吐量能力,将整理好的库存信息迅速推送到马帮。此过程中尤为关键的是实现异常检测及告警机制,以应对可能出现的问题。如:

  1. 实时监控与日志记录: 通过集中化监控端口,全程跟踪每一条上传任务状态,并即时记录日志以备查阅,用于故障排除及性能优化。
  2. 错误重试机制: 如果某一次写入操作失败,则触发自动重试策略,同时发送告警通知相关人员进行干预,从而极大提高了任务成功率。

上述流程示例展示了一套相对完善且高效的数据集成方案,其设计思路明确、执行稳定,为企业日常运营提供了有力支持。在实际应用中,这不仅仅提高了业务效率,更是维护了全链条的信息一致性。 如何开发用友BIP接口

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

在数据集成的生命周期中,调用源系统接口是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口,以获取并加工物料数据。

接口概述

executeBillQuery接口用于从金蝶云星空系统中查询业务单据。该接口支持POST请求,并且可以根据不同的查询条件和字段返回相应的数据。以下是元数据配置中的关键字段:

  • API: executeBillQuery
  • Method: POST
  • FormId: BD_MATERIAL(表示物料表单)

请求参数配置

在调用executeBillQuery接口时,需要配置一系列请求参数。这些参数包括查询条件、分页信息以及需要返回的字段。以下是主要的请求参数及其配置:

  1. 查询条件(FilterString)

    • 用于指定查询的过滤条件。例如,可以根据物料组编号、审批日期等进行过滤。
      {
      "field": "FilterString",
      "label": "FilterString",
      "type": "string",
      "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
      "value": "FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' AND FMaterialGroup.FNumber IN ('CGGYK','GYCTK','MG','MK','MT 取消生产!','TJ','XKDWQ','JYCTK','CGJYK','JYMK','FPQT','KZT','SX','XJ','DSP','GYJ','SFFYGQD','CPX5-STDZ','CPX6-VLDZ','BZJ','CPX7-KSZJ','MJ/JJ','TYJ','ZJHZ') AND FForbidStatus='A'"
      }
  2. 分页参数

    • 用于控制查询结果的分页。包括每页记录数(Limit)、起始行(StartRow)等。
      {
      "field": "Limit",
      "label": "Limit",
      "type": "string",
      "describe": "金蝶的查询分页参数",
      "value": "{PAGINATION_PAGE_SIZE}"
      },
      {
      "field": "StartRow",
      "label": "StartRow",
      "type": "int",
      "describe": "金蝶的查询分页参数",
      "value": "{PAGINATION_START_ROW}"
      }
  3. 返回字段(FieldKeys)

    • 指定需要返回的字段列表。例如,物料编号、名称、规格等。
      {
      "field": "FieldKeys",
      "label": "FieldKeys",
      "type": "array",
      "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber"
      }

数据处理与转换

在获取到原始数据后,需要对数据进行清洗和转换,以满足目标系统(如马帮)的要求。以下是一些常见的数据处理步骤:

  1. 数据清洗

    • 去除无效或冗余的数据。例如,过滤掉禁止状态为‘B’的物料。
  2. 数据转换

    • 将源系统中的字段映射到目标系统。例如,将金蝶中的FNumber映射到马帮系统中的物料编号。
  3. 格式调整

    • 根据目标系统的要求调整数据格式。例如,将日期格式从YYYY-MM-DD转换为MM/DD/YYYY。

实际案例

假设我们需要从金蝶云星空中获取所有有效状态下的物料,并将其同步到马帮系统。具体步骤如下:

  1. 配置请求参数:

    {
        "api":"executeBillQuery",
        ...
        // 其他元数据配置
        ...
        ,"request":[
            {"field":"FMATERIALID","label":"FMATERIALID","type":"string","describe":"111","value":"FMATERIALID"},
            {"field":"FNumber","label":"FNumber","type":"string","describe":"111","value":"FNumber"},
            {"field":"FName","label":"FName","type":"string","describe":"111","value":"FName"},
            {"field":"FSpecification","label":"FSpecification","type":"string","describe":"111","value":"FSpecification"},
            // 其他字段
        ],
        ...
    }
  2. 调用接口并获取数据:

    response = requests.post(
        url="https://api.kingdee.com/executeBillQuery", 
        json={
            'FormId': 'BD_MATERIAL',
            'FilterString': "...",  # 根据实际情况填写
            'FieldKeys': ["FMATERIALID", ...],  # 需要返回的字段列表
            'Limit': 100,
            'StartRow': 0
        }
    )
    data = response.json()
  3. 数据清洗与转换:

    cleaned_data = []
    for item in data['Result']:
        if item['FForbidStatus'] == 'A':
            cleaned_data.append({
                'MaterialID': item['FMATERIALID'],
                'Number': item['FNumber'],
                'Name': item['FName'],
                'Specification': item['FSpecification'],
                # 其他字段映射
            })

通过上述步骤,我们可以高效地从金蝶云星空中获取所需的数据,并进行必要的处理和转换,以便后续写入目标系统。这种方法不仅提高了数据集成效率,还确保了数据的一致性和准确性。 数据集成平台API接口配置

使用轻易云数据集成平台进行ETL转换并写入马帮API接口

在数据集成生命周期的第二步中,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,使其符合目标平台马帮API接口所能够接收的格式,最终写入目标平台。以下是详细的技术实现过程。

数据提取与清洗

首先,从源系统(金蝶)提取原始数据,并进行必要的清洗和预处理。假设我们已经完成了这一步,接下来我们将重点放在数据转换和写入阶段。

数据转换

根据提供的元数据配置,我们需要将金蝶的数据字段映射到马帮API所需的字段格式。以下是具体的字段映射关系:

  • FNumber -> stockSku
  • FName -> nameCN
  • 固定值 3 -> status
  • 固定值 马桥仓库 -> warehouseData.name
  • FLENGTH -> length
  • FWIDTH -> width
  • FHEIGHT -> height
  • FNETWEIGHT -> weight
  • 可能需要从其他数据源获取或计算的值 -> parentCategoryName, categoryName, 和 FMaterialGroup_FName

元数据配置解析

根据元数据配置,我们需要构建一个符合马帮API要求的JSON请求体。以下是一个示例请求体模板:

{
  "stockSku": "{FNumber}",
  "nameCN": "{FName}",
  "status": "3",
  "warehouseData": [
    {
      "name": "马桥仓库"
    }
  ],
  "length": "{FLENGTH}",
  "width": "{FWIDTH}",
  "height": "{FHEIGHT}",
  "weight": "{FNETWEIGHT}",
  "parentCategoryName": "",
  "categoryName": "",
  "FMaterialGroup_FName": "{FMaterialGroup_FName}"
}

在实际操作中,我们需要用真实的数据替换这些占位符。

构建请求体

假设我们从金蝶系统中提取到如下数据:

{
  "FNumber": "12345",
  "FName": "商品A",
  "FLENGTH": "100",
  "FWIDTH": "50",
  "FHEIGHT": "30",
  "FNETWEIGHT": "20",
  "FMaterialGroup_FName": ""
}

将这些数据填充到请求体模板中:

{
  "stockSku": "12345",
  "nameCN": "商品A",
  "status": "3",
  "warehouseData": [
    {
      "name": "马桥仓库"
    }
  ],
  "length": "100",
  "width": "50",
  "height": "30",
  "weight": "20",
  "",
"parentCategoryName":""
"categoryName":"",
"FMaterialGroup_FName":""
}

数据写入

使用轻易云平台提供的API调用功能,将上述JSON请求体通过HTTP POST方法发送至马帮API接口。以下是具体的HTTP请求配置:

在轻易云平台上,可以通过可视化界面配置这些参数,并实时监控请求状态和响应结果。

实现代码示例

如果使用Python进行API调用,代码示例如下:

import requests
import json

url = 'https://api.mabang.com/stock-do-change-stock'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer <Your_Token>'
}

data = {
    'stockSku': '12345',
    'nameCN': '商品A',
    'status': '3',
    'warehouseData': [{'name': '马桥仓库'}],
    'length': '100',
    'width': '50',
    'height': '30',
    'weight': '20',
    '',
'parentCategoryName':''
'categoryName':'',
'FMaterialGroup_FName':''
}

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

print(response.status_code)
print(response.json())

通过上述步骤,我们可以实现从金蝶系统到马帮平台的数据ETL转换和写入操作。这一过程不仅确保了数据格式的一致性,还提高了系统间的数据交互效率。 打通企业微信数据接口

更多系统对接方案