轻易云ETL流程:从金蝶到旺店通的数据清洗与转换

  • 轻易云集成顾问-曾平安

案例分享:金蝶云星空数据集成到旺店通·旗舰奇门

在本案例中,我们将深入探讨如何利用轻易云数据集成平台,将金蝶云星空中的直接调拨单无缝集成到旺店通·旗舰奇门系统,实现两大平台间的数据对接与同步。

此次集成的关键技术点主要集中在以下几个方面:

  1. 高效数据写入:通过优化API调用和批量处理机制,确保大量订单数据能够高吞吐量地快速写入到旺店通·旗舰奇门。使用wdt.wms.stocktransfer.edit.createorder接口,可以有效提升整体业务流程的时效性。

  2. 实时监控与告警:借助强大的监控和告警功能,我们可以实时跟踪数据流动情况,及时发现并解决潜在问题。这一特性极大保障了任务执行中的稳定性和可靠性。

  3. API资产管理与控制台:整合了金蝶云星空与旺店通·旗舰奇门的API,通过统一视图进行管理,使企业能全面掌握每个API调用的状态,优化资源配置,提高运维效率。

  4. 数据质量监控:为了避免漏单情况,我们特别实现了针对executeBillQuery接口的数据质量监控体系。当异常发生时,系统会自动触发重试机制,并记录详细日志以供分析。

  5. 自定义转换逻辑及格式差异处理:面对两个系统之间复杂且多变的数据结构需求,通过自定义转换逻辑模块,使得各类格式规范化处理成为可能,从而确保了不同系统间的数据一致性和准确传输。

  6. 分页与限流策略:由于金蝶云星空接口存在分页和限流限制,通过合理设定参数及分段抓取策略,有效规避因请求过载导致的性能瓶颈或失败问题,实现平稳运行。在本方案中,对executeBillQuery接口进行了细致剖析并针对其特点设计了解决方案,以确保稳定获取所需全部调拨单数据。

这个技术实施过程既涵盖了从原始数据抓取、清洗、转换,到最终写入目标系统的一系列操作,也凸显出灵活应对实际业务需求的重要技巧。接下来我们将详细解析具体步骤及核心代码实现。

如何对接钉钉API接口

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

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

接口配置与请求参数

首先,我们需要配置调用金蝶云星空接口的元数据。根据提供的元数据配置,我们可以看到以下关键字段:

  • api: executeBillQuery
  • method: POST
  • number: FBillNo
  • id: FBillEntry_FEntryID
  • request: 包含了所有需要查询的字段及其描述

这些字段定义了我们需要从金蝶云星空获取的数据内容和格式。以下是部分关键字段的解释:

  • FBillEntry_FEntryID: 分录ID
  • FID: 实体主键
  • FBillNo: 单据编号
  • FDocumentStatus: 单据状态
  • FStockOrgId_FNumber: 调入库存组织
  • FDate: 日期

构建请求体

根据元数据配置,我们需要构建一个POST请求体来调用executeBillQuery接口。请求体应包含以下几个部分:

  1. FormId: 业务对象表单Id,例如:STK_TransferDirect
  2. FieldKeys: 需查询的字段key集合,格式为字符串数组,例如:["FBillEntry_FEntryID", "FID", "FBillNo", ...]
  3. FilterString: 过滤条件,例如:"FApproveDate>='2023-01-01' and FBillTypeID.FNumber='ZJDB06' and FStockOrgId.FNumber='100.01'"
  4. Limit: 最大行数,例如:500
  5. StartRow: 开始行索引,例如:0

示例请求体如下:

{
  "FormId": "STK_TransferDirect",
  "FieldKeys": "FBillEntry_FEntryID,FID,FBillNo,FDocumentStatus,FStockOrgId.FNumber,FDate",
  "FilterString": "FApproveDate>='2023-01-01' and FBillTypeID.FNumber='ZJDB06' and FStockOrgId.FNumber='100.01'",
  "Limit": 500,
  "StartRow": 0
}

调用接口并处理响应

通过轻易云数据集成平台,我们可以发送上述请求到金蝶云星空,并接收响应数据。响应数据通常是一个JSON数组,每个元素对应一条调拨单记录。

示例响应数据如下:

[
  {
    "FBillEntry_FEntryID": "12345",
    "FID": "67890",
    "FBillNo": "DB202301010001",
    "FDocumentStatus": "A",
    "FStockOrgId_FNumber": "100.01",
    "FDate": "2023-01-01"
  },
  ...
]

数据清洗与转换

获取到原始数据后,需要对其进行清洗和转换,以便后续写入目标系统(如旺店通)。清洗和转换过程包括但不限于以下步骤:

  1. 字段映射:将金蝶云星空中的字段名映射到目标系统中的字段名。例如,将FBillNo映射为目标系统中的订单编号。
  2. 数据格式转换:将日期、数字等字段转换为目标系统所需的格式。例如,将日期从YYYY-MM-DD格式转换为MM/DD/YYYY格式。
  3. 过滤无效数据:移除不符合业务规则的数据。例如,过滤掉单据状态不是已审核(状态码为"A")的记录。

示例代码如下:

def clean_and_transform(data):
    cleaned_data = []
    for record in data:
        if record['FDocumentStatus'] == 'A':
            transformed_record = {
                'order_no': record['FBillNo'],
                'entry_id': record['FBillEntry_FEntryID'],
                'stock_org': record['FStockOrgId_FNumber'],
                'date': transform_date_format(record['FDate']),
                # 添加其他必要的字段转换
            }
            cleaned_data.append(transformed_record)
    return cleaned_data

def transform_date_format(date_str):
    from datetime import datetime
    date_obj = datetime.strptime(date_str, '%Y-%m-%d')
    return date_obj.strftime('%m/%d/%Y')

通过上述步骤,我们可以高效地从金蝶云星空获取调拨单数据,并进行必要的清洗和转换,为后续的数据写入做好准备。这一过程不仅确保了数据的一致性和准确性,还极大提升了业务流程的自动化程度。 系统集成平台API接口配置

基于轻易云数据集成平台的ETL转换:金蝶直接调拨单到旺店通·旗舰奇门API接口

在数据集成过程中,将源平台的数据转换为目标平台所能接收的格式是关键步骤之一。本文将详细介绍如何通过轻易云数据集成平台,将金蝶的直接调拨单数据转换为旺店通·旗舰奇门API接口所能接收的格式,并最终写入目标平台。

元数据配置解析

首先,我们需要理解元数据配置,以便正确地进行ETL转换。以下是元数据配置的关键部分:

{
  "api": "wdt.wms.stocktransfer.edit.createorder",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "operation": {
    "method": "merge",
    "field": "FBillNo,FSrcStockId_FNumber,FDestStockId_FNumber",
    "bodyName": "order_list",
    "bodySum": ["FQty"],
    "header": ["FBillNo", "FSrcStockId_FNumber", "FDestStockId_FNumber", "FNote"],
    "body": ["FQty", "FMaterialId_FNumber", "FMaterialId_FBARCODE"]
  },
  ...
}

该配置文件指定了API接口wdt.wms.stocktransfer.edit.createorder,使用POST方法提交请求。operation部分定义了如何处理和合并数据字段,包括头部信息和明细信息。

数据请求与清洗

在ETL流程中,首先需要从金蝶系统中请求直接调拨单的数据,并对其进行清洗。这一步通常涉及到从源系统提取原始数据,并进行必要的数据清理和标准化操作,以确保数据质量。

数据转换

接下来,我们将已经清洗的数据按照目标平台的要求进行转换。根据元数据配置,我们需要将金蝶系统中的字段映射到旺店通·旗舰奇门API接口所需的字段。

请求头部信息映射
  • FBillNo -> outer_no
  • FSrcStockId_FNumber -> from_warehouse_no
  • FDestStockId_FNumber -> to_warehouse_no
  • FNote -> remark
请求明细信息映射
  • order_list.FMaterialId_FBARCODE -> spec_no
  • order_list.FQty -> num

以下是一个示例代码片段,展示了如何进行字段映射:

def transform_data(source_data):
    transformed_data = {
        'orderInfo': {
            'outer_no': source_data['FBillNo'],
            'from_warehouse_no': source_data['FSrcStockId_FNumber'],
            'to_warehouse_no': source_data['FDestStockId_FNumber'],
            'remark': source_data['FNote']
        },
        'detailList': []
    }

    for item in source_data['order_list']:
        detail = {
            'spec_no': item['FMaterialId_FBARCODE'],
            'num': item['FQty']
        }
        transformed_data['detailList'].append(detail)

    return transformed_data

数据写入目标平台

完成数据转换后,下一步是将转换后的数据写入旺店通·旗舰奇门API接口。这一步通过调用指定的API接口实现:

import requests

def write_to_target_platform(transformed_data):
    url = 'https://api.wangdian.cn/openapi2/wdt.wms.stocktransfer.edit.createorder'
    headers = {'Content-Type': 'application/json'}

    response = requests.post(url, json=transformed_data, headers=headers)

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

# Example usage
source_data = { ... } # 从金蝶系统获取的数据
transformed_data = transform_data(source_data)
write_to_target_platform(transformed_data)

实际应用中的注意事项

  1. 字段校验:确保所有必填字段都已正确映射并包含在请求中。
  2. 错误处理:处理API响应中的错误信息,例如网络问题、认证失败或业务逻辑错误。
  3. 日志记录:记录每次ETL操作的详细日志,以便后续审计和问题排查。

通过上述步骤,我们可以高效地将金蝶系统中的直接调拨单数据转换为旺店通·旗舰奇门API接口所能接收的格式,并成功写入目标平台。这一过程不仅提升了业务透明度和效率,还确保了不同系统间的数据无缝对接。 电商OMS与ERP系统接口开发配置

更多系统对接方案