ETL转换与数据清洗:轻易云助力金蝶云与旺店通整合

  • 轻易云集成顾问-姚缘

案例分享:金蝶云星空至旺店通·企业奇门的数据集成与优化

在实际业务环境中,如何高效地实现从金蝶云星空到旺店通·企业奇门的系统数据对接,是众多企业面临的挑战。本文将详细探讨一个具体的集成案例,通过使用轻易云数据集成平台,实现物料数据从金蝶云星空平滑迁移到旺店通·企业奇门,并确保稳定可靠的数据处理过程。

首先,要解决的问题是如何利用金蝶云星空提供的executeBillQuery接口进行定时、可靠的数据抓取。通过配置轻易云的平台,我们能够按照预设的时间间隔,定时调用这一API接口,从而获取最新的物料信息。同时,为了避免因接口限流或分页问题导致的数据丢失,我们对每次的数据请求进行了日志记录与状态监控,确保每一条记录都有据可查。

其次,在将大量数据快速且准确地写入到旺店通·企业奇门时,我们采用wdt.goods.push API。在此过程中,不仅需要考虑批量数据写入以提升效率,还需处理两套系统之间可能存在的数据格式差异。例如,会计科目编码等字段在两个系统中的格式不一致,这就需要我们通过自定义映射规则,对传输过来的数据进行预处理和转换。

最后,对于整个流程异常和错误重试机制设计也是至关重要的一环。当出现网络延迟、中断或者API返回错误码等情况时,我们设置了完善的异常捕获逻辑,并结合自动重试机制,以保障整个链路尽量不受偶发性故障影响。此外,同步完成后实时更新状态并生成详细日志,使得运维人员可以全面掌握同步过程中的每个细节与潜在问题。这不仅提高了日常维护的便捷性,也为未来类似项目提供了宝贵经验参考。

以上初步介绍即展示了本案例关键技术点及其实施方案细节,让我们深入探讨具体实现步骤以及可能遇见的问题解法。 钉钉与ERP系统接口开发配置

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

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

接口配置与请求参数

首先,我们需要了解executeBillQuery接口的基本配置和请求参数。根据提供的元数据配置,接口的主要参数如下:

  • API名称: executeBillQuery
  • 请求方法: POST
  • 业务对象表单ID: BD_MATERIAL
  • 请求字段:
    • FMATERIALID: 实体主键
    • FNumber: 编码
    • FName: 名称
    • FSpecification: 规格型号
    • FOldNumber: 旧物料编码
    • FBARCODE: 条码
    • FDescription: 描述
    • ...(其他字段详见元数据配置)

此外,还有一些分页和过滤条件参数,例如:

  • Limit: 最大行数
  • StartRow: 开始行索引
  • FilterString: 过滤条件(如:FApproveDate>='{{LAST_SYNC_TIME|dateTime}}' and FCheckBox_TBWDT= '1'

调用接口获取数据

在轻易云数据集成平台中,我们可以通过以下步骤来调用该接口并获取数据:

  1. 配置API请求: 在平台的可视化界面中,选择“新增API请求”,并填写上述API名称、请求方法和业务对象表单ID等基本信息。

  2. 设置请求参数: 根据元数据配置中的字段信息,逐一添加请求参数。例如:

    {
     "FormId": "BD_MATERIAL",
     "FieldKeys": ["FMATERIALID", "FNumber", "FName", "FSpecification"],
     "FilterString": "FApproveDate>='2023-01-01' and FCheckBox_TBWDT= '1'",
     "Limit": "100",
     "StartRow": "0"
    }
  3. 发送请求并处理响应: 配置完成后,发送API请求,并处理返回的数据。轻易云平台会自动解析响应结果,并根据预先定义的映射规则进行数据清洗和转换。

数据清洗与转换

在获取到原始数据后,需要对其进行清洗和转换,以满足目标系统的需求。以下是一些常见的数据清洗与转换操作:

  1. 字段映射: 将源系统的字段映射到目标系统。例如,将金蝶云星空的FMATERIALID映射到目标系统的MaterialID

  2. 数据格式转换: 根据目标系统要求,对日期、数值等字段进行格式转换。例如,将日期格式从YYYY-MM-DD转换为MM/DD/YYYY

  3. 过滤无效数据: 去除不符合业务规则的数据。例如,过滤掉禁用状态为“禁用”的物料。

  4. 合并与拆分字段: 根据业务需求,对某些字段进行合并或拆分。例如,将多个描述性字段合并为一个详细描述字段。

实例代码示例

以下是一个简单的Python示例代码,用于调用金蝶云星空接口并处理响应数据:

import requests

# API URL 和 请求头部信息
url = 'https://api.kingdee.com/executeBillQuery'
headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer YOUR_ACCESS_TOKEN'
}

# 请求参数
payload = {
    "FormId": "BD_MATERIAL",
    "FieldKeys": ["FMATERIALID", "FNumber", "FName", "FSpecification"],
    "FilterString": "FApproveDate>='2023-01-01' and FCheckBox_TBWDT= '1'",
    "Limit": 100,
    "StartRow": 0
}

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

# 检查响应状态码
if response.status_code == 200:
    data = response.json()
    # 数据处理逻辑,例如清洗、转换等
    for item in data:
        material_id = item['FMATERIALID']
        number = item['FNumber']
        name = item['FName']
        specification = item['FSpecification']
        # 更多处理逻辑...
else:
    print(f"Error: {response.status_code}, {response.text}")

通过上述步骤,我们可以高效地调用金蝶云星空接口获取物料数据,并在轻易云平台上完成后续的数据清洗与转换工作。这不仅提升了数据集成效率,也确保了业务流程的顺畅运行。 金蝶与WMS系统接口开发配置

轻易云数据集成平台:ETL转换与写入旺店通·企业奇门API接口

在数据集成生命周期的第二步,关键任务是将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,并将其转为目标平台——旺店通·企业奇门API接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台完成这一过程。

数据请求与清洗

在开始ETL转换之前,首先需要从源系统中提取数据并进行初步清洗。假设我们已经完成了这一阶段,并获得了一个包含物料信息的数据集。接下来,我们将重点放在如何将这些数据转换为旺店通·企业奇门API接口所需的格式。

元数据配置解析

根据提供的元数据配置,我们可以看到目标API接口wdt.goods.push需要通过POST方法发送请求。请求参数包含一个名为goods_list的数组节点,该节点包含SPU(标准产品单元)的所有属性信息。此外,每个SPU还包含一个名为spec_list的子数组节点,用于存储SKU(库存单位)的属性信息。

以下是元数据配置中的关键字段及其描述:

  • goods_no: 货品编号
  • goods_type: 货品类别
  • goods_name: 货品名称
  • short_name: 货品简称
  • alias: 货品别名
  • pinyin: 拼音名称
  • origin: 产地
  • class_name: 分类
  • brand_name: 品牌名称
  • unit_name: 基本单位
  • remark: 备注
  • props1props6: 自定义属性1至6

子节点spec_list中的关键字段包括:

  • spec_no: 商家编码
  • spec_code: 规格码
  • barcode: 主条码
  • spec_name: 规格名称
  • is_allow_neg_stock: 是否允许负库存
  • is_sn_enable: 是否启用序列号
  • spec_unit_name: 基本单位名称
  • weight, length, width, height: 重量、长、宽、高等物理属性

数据转换

为了实现数据转换,我们需要编写一个ETL脚本,将源数据映射到上述字段中。以下是一个示例脚本,用于将源数据转换为目标API所需的格式:

import json

# 假设从源系统提取的数据如下:
source_data = [
    {
        "FTextSuXingBM": "12345",
        "FName": "商品A",
        "F_LJT_Assistant_PL_FNumber": "分类1",
        "FAssistant_PingPai_FNumber": "品牌A",
        "FBaseUnitId_FNumber": "个",
        "FAssistantYJPL_FNumber": "自定义1",
        "FAssistantErJPL_FNumber": "自定义2",
        "FCategoryID_FName": "类别A",
        # SKU相关字段...
    },
    # 更多商品...
]

# 转换后的目标格式:
target_data = {
    "goods_list": []
}

for item in source_data:
    goods_item = {
        "goods_no": item["FTextSuXingBM"],
        "goods_type": "1",  # 固定值,表示销售商品
        "goods_name": item["FName"],
        "class_name": item["F_LJT_Assistant_PL_FNumber"],
        "brand_name": item["FAssistant_PingPai_FNumber"],
        "unit_name": item["FBaseUnitId_FNumber"],
        "props1": item["FAssistantYJPL_FNumber"],
        "props2": item["FAssistantErJPL_FNumber"],
        "props3": item["FCategoryID_FName"],
        # 添加更多字段映射...
    }

    # 假设每个商品有多个SKU,需要进一步处理spec_list子节点:
    goods_item["spec_list"] = [
        {
            # 映射SKU相关字段...
            # 示例:假设每个商品只有一个SKU,实际情况可能需要循环处理多个SKU。
            "spec_no": item["FTextSuXingBM"],  
            # 更多SKU字段映射...
        }
    ]

    target_data["goods_list"].append(goods_item)

# 将转换后的数据转为JSON格式,以便POST请求发送:
json_data = json.dumps(target_data, ensure_ascii=False)
print(json_data)

数据写入

完成数据转换后,我们需要通过HTTP POST方法将JSON格式的数据发送到旺店通·企业奇门API接口。可以使用Python中的requests库来实现这一操作:

import requests

url = 'https://api.wangdian.cn/openapi2/goods_push.php'
headers = {'Content-Type': 'application/json'}
response = requests.post(url, headers=headers, data=json_data)

if response.status_code == 200:
    print("Data successfully pushed to WDT API")
else:
    print(f"Failed to push data: {response.text}")

以上代码展示了如何利用轻易云数据集成平台进行ETL转换,并将转换后的数据写入到旺店通·企业奇门API接口。这一过程确保了不同系统间的数据无缝对接,实现了高效的数据管理和业务流程优化。 用友与CRM系统接口开发配置

更多系统对接方案