ETL实践:使用轻易云将金蝶云数据转入目标平台

  • 轻易云集成顾问-谢楷斌

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

在复杂多变的企业应用环境中,实现系统之间的数据无缝对接和实时同步是一个关键任务。本案例聚焦于如何通过轻易云数据集成平台,将金蝶云星空的计量单位编码数据顺利查询并准确写入,为企业提供高效、稳定的数据交互支持。

为了实现这一综合目标,我们首先需要调用金蝶云星空API —— ExecuteBillQuery,来获取所需的计量单位编码信息。这个接口会返回包含多个分页结果的大量数据,因此我们必须处理好分页和限流问题,以确保不遗漏任何一条记录。这些获取到的数据将通过轻易云集成平台强大的高吞吐量写入能力,被快速、安全地批量导入,从而保证整体工作流程的时效性。

此外,通过轻易云提供的集中监控和告警系统,我们能够实时跟踪每个数据集成任务的状态与性能,一旦发现异常,可以立即采取相应措施。与此同时,自定义的数据转换逻辑功能帮助我们解决了金蝶云星空与轻易云之间可能存在的数据格式差异,使得不同系统间的信息传递更加顺畅。

以上这些步骤不仅保证了计量单位编码查询过程中所有环节都透明可见,同时也提升了整个业务过程中的数据质量。在实际操作中,包括错误重试机制在内的一系列故障处理手段则进一步保障了这个跨系统对接方案的稳定运行。因此,该技术实现为企业带来了显著优化体验,并确保了生产运营效率的大幅提升。 打通用友BIP数据接口

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

在数据集成生命周期的第一步,调用源系统接口获取数据是至关重要的一环。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的ExecuteBillQuery接口来获取计量单位编码,并对数据进行初步加工。

接口配置与请求参数

首先,我们需要配置元数据,以便正确调用金蝶云星空的API接口。以下是元数据配置的详细说明:

{
  "api": "ExecuteBillQuery",
  "effect": "QUERY",
  "method": "POST",
  "number": "FNumber",
  "id": "FNumber",
  "name": "FNumber",
  "idCheck": true,
  "request": [
    {
      "field": "Limit",
      "label": "最大行数",
      "type": "string",
      "describe": "金蝶的查询分页参数",
      "value": "{PAGINATION_PAGE_SIZE}"
    },
    {
      "field": "StartRow",
      "label": "开始行索引",
      "type": "string",
      "describe": "金蝶的查询分页参数",
      "value": "{PAGINATION_START_ROW}"
    },
    {
      "field": "TopRowCount",
      "label": "返回总行数",
      "type": "int",
      "describe": "金蝶的查询分页参数"
    },
    {
      "field": "FilterString",
      "label": "过滤条件",
      "type": "string",
      "describe":"示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=",
      “value”: “FApproveDate>=’{{LAST_SYNC_TIME|dateTime}}’”
    },
    {
      “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_UNIT”
    }
  ],
  “autoFillResponse”:true
}

请求参数解析

  1. Limit: 设置查询结果返回的最大行数。通过{PAGINATION_PAGE_SIZE}动态设置分页大小。
  2. StartRow: 指定从哪一行开始返回结果。通过{PAGINATION_START_ROW}动态设置起始行索引。
  3. TopRowCount: 返回总行数,用于分页控制。
  4. FilterString: 设置过滤条件。例如,过滤条件可以是FSupplierId.FNumber = 'VEN00010' and FApproveDate>=,结合动态时间戳{{LAST_SYNC_TIME|dateTime}}来实现增量同步。
  5. FieldKeys: 指定需要查询的字段集合,通过数组转字符串函数ArrayToString将数组转换为逗号分隔的字符串。
  6. FormId: 必须填写业务对象表单ID,此处为计量单位编码对应的表单ID BD_UNIT

数据请求与清洗

在配置好元数据后,我们通过轻易云平台发起POST请求,调用金蝶云星空的ExecuteBillQuery接口。请求示例如下:

{
  “Limit”: 100,
  “StartRow”:0,
  ”TopRowCount”:true,
  ”FilterString”:”FApproveDate>=’2023-01-01T00:00:00’”,
  ”FieldKeys”:[“FNumber”,“FName”,“FCreateDate”],
  ”FormId”:”BD_UNIT”
}

该请求将返回符合条件的数据集,包括计量单位编码、名称和创建日期等字段。

数据转换与写入

获取到原始数据后,需要对其进行清洗和转换,以便后续处理和写入目标系统。例如,可以对日期格式进行标准化处理,对字段名称进行映射等操作。

def clean_data(raw_data):
    cleaned_data = []
    for record in raw_data:
        cleaned_record = {
            'unit_code': record['FNumber'],
            'unit_name': record['FName'],
            'created_date': standardize_date(record['FCreateDate'])
        }
        cleaned_data.append(cleaned_record)
    return cleaned_data

def standardize_date(date_str):
    # 假设输入日期格式为 'YYYY-MM-DDTHH:MM:SS'
    return date_str.split('T')[0]

上述代码示例展示了如何对原始数据进行清洗和转换,将其标准化为目标系统所需的数据格式。

通过以上步骤,我们成功完成了从调用源系统接口获取数据到初步加工处理的数据集成过程,为后续的数据转换与写入打下了坚实基础。 金蝶与MES系统接口开发配置

使用轻易云数据集成平台进行ETL转换与写入目标平台的技术案例

在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台轻易云集成平台API接口所能够接收的格式,并最终写入目标平台。本文将详细探讨这一过程中的关键技术点和操作步骤。

数据提取与清洗

首先,从源系统中提取原始数据。在本案例中,我们从金蝶系统中查询计量单位编码。假设我们已经通过轻易云数据集成平台完成了数据请求与清洗阶段,现在我们拥有了一个干净的数据集,准备进行下一步操作。

数据转换

在数据转换阶段,我们需要将源系统的数据格式转换为目标系统能够理解和处理的格式。这通常涉及以下几个步骤:

  1. 字段映射:确定源系统和目标系统之间字段的对应关系。例如,金蝶系统中的计量单位编码字段可能需要映射到轻易云集成平台中的特定字段。
  2. 数据类型转换:确保数据类型匹配。例如,将字符串类型的数据转换为目标系统要求的整数类型。
  3. 值标准化:对数据值进行标准化处理,例如日期格式的统一、数值精度的调整等。

以下是一个简单的数据转换示例代码片段:

def transform_data(source_data):
    transformed_data = []
    for record in source_data:
        transformed_record = {
            "unit_code": record["kd_unit_code"],  # 字段映射
            "unit_name": record["kd_unit_name"],
            "created_at": format_date(record["kd_created_at"])  # 日期格式标准化
        }
        transformed_data.append(transformed_record)
    return transformed_data

def format_date(date_str):
    from datetime import datetime
    return datetime.strptime(date_str, "%Y-%m-%d").strftime("%Y%m%d")

数据写入

在完成数据转换后,下一步是将这些数据写入到目标平台。在本案例中,我们使用轻易云集成平台提供的API接口来实现这一操作。根据元数据配置,API接口信息如下:

{
    "api": "写入空操作",
    "effect": "EXECUTE",
    "method": "POST",
    "idCheck": true
}

具体实现步骤如下:

  1. 构建HTTP请求:根据API接口文档,构建符合要求的HTTP请求,包括请求方法、URL、Headers和Body等。
  2. 发送请求:使用HTTP客户端库(如requests)发送请求,并处理响应结果。
  3. 错误处理:对可能出现的错误情况进行处理,如网络异常、接口返回错误等。

以下是一个示例代码片段:

import requests
import json

def write_to_target_platform(transformed_data):
    url = "https://api.qingyiyun.com/execute"  # 假设这是目标API URL
    headers = {
        "Content-Type": "application/json"
    }

    for record in transformed_data:
        payload = json.dumps(record)
        response = requests.post(url, headers=headers, data=payload)

        if response.status_code == 200:
            print(f"Record {record['unit_code']} written successfully.")
        else:
            print(f"Failed to write record {record['unit_code']}: {response.text}")

# 示例调用
source_data = [
    {"kd_unit_code": "001", "kd_unit_name": "公斤", "kd_created_at": "2023-01-01"},
    {"kd_unit_code": "002", "kd_unit_name": "克", "kd_created_at": "2023-02-01"}
]

transformed_data = transform_data(source_data)
write_to_target_platform(transformed_data)

总结

通过上述步骤,我们实现了从金蝶系统提取计量单位编码,并经过ETL转换后,通过轻易云集成平台API接口成功写入目标平台。在整个过程中,关键技术点包括字段映射、数据类型转换、值标准化以及HTTP请求构建与发送。这些操作确保了不同系统之间的数据能够无缝对接,实现高效的数据集成。 泛微OA与ERP系统接口开发配置

更多系统对接方案