基于轻易云平台的ETL转换案例:金蝶到MySQL

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

基于轻易云平台实现MOM-金蝶物料分组数据集成到MySQL的技术方案

在信息系统集成领域,如何高效稳定地对接不同的数据源始终是一个重要课题。本次案例重点聚焦金蝶云星空数据与MySQL数据库的无缝对接,通过详细剖析API接口调用及数据处理流程,为相关从业人员提供参考。

1. API接口调用及数据抓取

首先,在本项目中,我们使用了金蝶云星空的executeBillQuery接口来获取物料分组的数据。该接口支持丰富的查询参数和灵活的数据筛选功能,可以根据业务需求定制化地获取所需记录。此外,为了确保不漏单并且能及时地抓取新产生的数据,设置定时任务进行周期性调用显得尤为关键:

import requests
import time

def fetch_kingdee_data():
    url = "https://api.kingdee.com/executeBillQuery"
    headers = {
        'Content-Type': 'application/json',
        # Authorization Header可以根据具体情况添加
    }
    payload = {
        # 这里填写实际请求需要的参数
    }

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

    if response.status_code == 200:
        return response.json()
    else:
        raise Exception(f"API请求失败,状态码:{response.status_code}")

# 定时任务,每隔一定时间抓取一次数据
while True:
    try:
        data = fetch_kingdee_data()
        process_and_store(data)  # 后续步骤处理函数

        time.sleep(3600)  # 每小时执行一次(可调整)

    except Exception as e:
         print(f"Error fetching Kingdee data: {e}")

2. 数据转换与批量写入MySQL

在获得原始JSON格式的数据后,需要将其转换为符合MySQL表结构要求的格式。为了简化这个过程,我们采用自定义逻辑进行数据映射,并通过批量插入的方法提高写入效率:

import pymysql

def convert_to_mysql_format(raw_data):
   transformed_data = []

   for item in raw_data['rows']:
       transformed_item = (
           item['field1'], 
           item['field2'],
           ...   # 按照目标表字段顺序依次填充       
       )
       transformed_data.append(transformed_item)

   return transformed_data

def batch_insert_to_mysql(data):
   connection = pymysql.connect(host='localhost',
                                user='user',
                                password='passwd',
                                db='database')

   cursor = connection.cursor()

   insert_query = '''
      INSERT INTO target_table(field1, field2, ...) VALUES (%s, %s,
![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/D32.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据

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

#### 接口配置与请求参数

首先,我们需要配置元数据以调用`executeBillQuery`接口。以下是元数据配置的详细信息:

```json
{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FNAME",
  "id": "FID",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {"field": "FID", "label": "FID", "type": "string", "value": "FID"},
    {"field": "FNUMBER", "label": "分组编码", "type": "string", "value": "FNUMBER"},
    {"field": "FNAME", "label": "名称", "type": "string", "value": "FNAME"},
    {"field": "FDESCRIPTION", "label": "", type: string, value: FDESCRIPTION},
    {"field":"FPARENTID","label":"上级分组内码","type":"string","value":"FPARENTID"}
  ],
  ...
}

在这个配置中,我们定义了需要从金蝶云星空获取的字段,包括FIDFNUMBERFNAMEFDESCRIPTIONFPARENTID。这些字段将用于后续的数据处理和分析。

请求示例

为了实际调用该接口,我们需要构建一个POST请求。以下是一个示例请求体:

{
  "FormId":"AMB_MaterialGroup",
  ...
}

在这个请求体中,FormId指定了业务对象表单ID,这里为物料分组(AMB_MaterialGroup)。其他参数如分页参数和过滤条件也可以根据需求进行配置。

数据清洗与转换

获取到原始数据后,下一步是对数据进行清洗和转换。这包括去除无效数据、格式化字段以及根据业务需求进行计算和转换。

例如,我们可以使用轻易云的数据清洗功能,将所有名称字段(FNAME)中的空格去除:

def clean_data(data):
    for record in data:
        record['FNAME'] = record['FNAME'].replace(' ', '')
    return data

数据写入目标系统

完成数据清洗和转换后,最后一步是将处理后的数据写入目标系统。这可以通过轻易云平台提供的多种连接器实现,如数据库、文件存储或其他API接口。

以下是一个将清洗后的数据写入数据库的示例代码:

import pymysql

def write_to_db(data):
    connection = pymysql.connect(host='localhost',
                                 user='user',
                                 password='passwd',
                                 db='database')
    try:
        with connection.cursor() as cursor:
            for record in data:
                sql = """INSERT INTO material_group (FID, FNUMBER, FNAME, FDESCRIPTION, FPARENTID)
                         VALUES (%s, %s, %s, %s, %s)"""
                cursor.execute(sql, (record['FID'], record['FNUMBER'], record['FNAME'], record['FDESCRIPTION'], record['FPARENTID']))
        connection.commit()
    finally:
        connection.close()

通过上述步骤,我们成功地完成了从金蝶云星空获取数据、清洗与转换以及最终写入目标系统的全过程。这一过程充分利用了轻易云平台的数据集成功能,实现了高效的数据处理和集成。 轻易云数据集成平台金蝶集成接口配置

数据集成生命周期中的ETL转换:从源数据到MySQL API接口

在数据集成的生命周期中,ETL(Extract, Transform, Load)转换是关键步骤之一。本文将深入探讨如何使用轻易云数据集成平台,将已经集成的源平台数据进行ETL转换,转为目标平台MySQL API接口所能够接收的格式,并最终写入目标平台。

元数据配置解析

在进行ETL转换之前,首先需要理解元数据配置。以下是一个典型的元数据配置示例:


{
  "api": "execute",
  "effect": "EXECUTE",
  "method": "POST",
  "idCheck": true,
  "request": [
    {
      "field": "main_params",
      "label": "main_params",
      "type": "object",
      "describe": "111",
      "value": "1",
      "children": [
        {"field": "FID", "label": "FID", "type": "string", "value": "{FID}"},
        {"field": "FNUMBER", "label": "FNUMBER", "type": "string", "value": "{FNUMBER}"},
        {"field": "FNAME", "label": "FNAME", "type": "string", "value": "{FNAME}"},
        {"field": "FDESCRIPTION", "label": "FDESCRIPTION", "type": "string", "value": "{FDESCRIPTION}"},
        {"field": "FPARENTID", "label": "FPARENTID", 
![泛微OA与ERP系统接口开发配置](https://pic.qeasy.cloud/T18.png~tplv-syqr462i7n-qeasy.image)
更多系统对接方案