ETL在数据集成中的应用:从金蝶云星空到轻易云

  • 轻易云集成顾问-彭萍

金蝶云星空数据集成到轻易云:案例解析

在系统集成的项目中,如何确保跨平台的数据对接稳定高效,是每个工程师都必须面对和解决的挑战。本文将聚焦一个具体案例:【仅查询】金蝶辅助资料-出库申请类型,通过详细剖析该方案在实际运行中的技术细节,为读者提供清晰的实现思路与应用技巧。

首先,需要明确的是,从金蝶云星空获取数据至轻易云集成平台这一完整流程涉及多个关键环节。我们使用金蝶云星空提供的API接口executeBillQuery来抓取必需的数据,并通过轻易云集成平台的写入接口完成批量数据导入操作。在此过程中,我们必须充分考虑异构系统之间的数据格式差异、分页处理以及限流问题。

获取和传输大规模数据

为了避免漏单,我们设计了定时任务去调用executeBillQuery接口,该任务能可靠地捕捉到新增或修改的数据记录。在执行查询请求时,针对返回结果进行分页处理,每次只拉取一定数量的数据,以防止一次性拉取过多导致超时或网络阻塞。这种方式不仅确保了数据获取过程中的效率,还避免了遗漏任何重要信息。

# 伪代码示例:调用 executeBillQuery 接口并进行分页处理
def fetch_data_from_kingdee(page_number, page_size):
    params = {
        "page": page_number,
        "size": page_size,
        # 其他必要参数...
    }
    response = requests.post("https://api.kingdee.com/executeBillQuery", json=params)
    return response.json()

data_batches = []
page_number = 1
while True:
    data_batch = fetch_data_from_kingdee(page_number, PAGE_SIZE)
    if not data_batch:
        break
    data_batches.append(data_batch)
    page_number += 1

# 将每一页数据汇总后继续处理...

数据写入与映射策略

从金蝶获取到原始数据后,需要经过一系列预处理,包括字段映射及格式转换,以适配轻易云集成平台所要求的数据结构。由于两套系统可能存在不同的数据字段命名规则和类型,预先设计好映射关系非常重要。同时,在大批量提交之前,可以利用轻易云的平台特性,将其分割成更小单位进行逐步写入,这有助于提高整体性能及稳定性。

# 伪代码示例:将预处理后的数据批量写入轻易云集成平台 
def write_to_qingyi(data_list):
   for data in data_list:
       mapped_data = map_fields(data) # 字段映射
![数据集成平台API接口配置](https://pic.qeasy.cloud/D14.png~tplv-syqr462i7n-qeasy.image)
### 调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的`executeBillQuery`接口来获取和加工出库申请类型的辅助资料。

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

首先,我们需要了解`executeBillQuery`接口的基本配置和请求参数。根据提供的元数据配置,以下是该接口的详细信息:

- **API**: `executeBillQuery`
- **Method**: `POST`
- **Effect**: `QUERY`
- **Number**: `FDataValue`
- **ID**: `FEntryID`
- **Name**: `FNumber`

请求参数分为两类:基础请求参数和其他请求参数。

##### 基础请求参数

基础请求参数主要包括以下字段:

1. **FEntryID**
   - **Label**: FEntryID
   - **Type**: string
   - **Describe**: id
   - **Value**: FEntryID

2. **FNumber**
   - **Label**: 编码
   - **Type**: string
   - **Describe**: 编码
   - **Value**: FNumber

3. **FDataValue**
   - **Label**: 名称
   - **Type**: string
   - **Describe**: 名称
   - **Value**: FDataValue

##### 其他请求参数

其他请求参数用于分页、过滤等高级操作:

1. **Limit**
   - **Label**: 最大行数
   - **Type**: string
   - **Describe**: 金蝶的查询分页参数
   - 默认值:2000

2. **StartRow**
   - **Label**: 开始行索引
   - **Type**: string
   - **Describe**: 金蝶的查询分页参数
   - 默认值:{PAGINATION_START_ROW}

3. **TopRowCount**
   - **Label**: 返回总行数
   - **Type**: int
   - 默认值:无

4. **FilterString**
   - **Label**: 过滤条件
   - **Type**: string
   - 默认值:FId.FNumber='CKSQLX'

5. **FieldKeys**
   - **Label**: 需查询的字段key集合
   - 格式:金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber

6. **FormId**
   - 必须填写金蝶的表单ID如:PUR_PurchaseOrder,默认值:BOS_ASSISTANTDATA_DETAIL

#### 请求示例与数据处理

在实际操作中,我们需要构建一个完整的HTTP POST请求来调用`executeBillQuery`接口。以下是一个示例请求体:

```json
{
  "FormId": "BOS_ASSISTANTDATA_DETAIL",
  "FieldKeys": "FEntryID,FNumber,FDataValue",
  "FilterString": "FId.FNumber='CKSQLX'",
  "Limit": "2000",
  "StartRow": "{PAGINATION_START_ROW}"
}

通过这个请求,我们可以获取到符合条件的数据。接下来,我们需要对返回的数据进行处理,以便后续的数据转换与写入阶段使用。

数据加工与清洗

在数据返回后,通常需要进行一些清洗和加工操作。例如,可能需要将特定字段转换为目标系统所需的格式,或者根据业务规则进行过滤和排序。

假设我们从金蝶云星空获取到以下数据:

[
  {
    "FEntryID": "1001",
    "FNumber": "CKSQLX001",
    "FDataValue": "出库申请类型1"
  },
  {
    "FEntryID": "1002",
    "FNumber": "CKSQLX002",
    "FDataValue": "出库申请类型2"
  }
]

我们可以对这些数据进行如下处理:

  1. FNumber字段中的前缀去掉,只保留数字部分。
  2. 根据业务需求,将FDataValue字段中的特定字符替换或删除。

例如:

processed_data = []
for record in data:
    processed_record = {
        'id': record['FEntryID'],
        'number': record['FNumber'].replace('CKSQLX', ''),
        'name': record['FDataValue'].replace('类型', '')
    }
    processed_data.append(processed_record)

处理后的数据将变为:

[
  {
    "id": "1001",
    "number": "001",
    "name": "出库申请1"
  },
  {
    "id": "1002",
    "number": "002",
    "name": "出库申请2"
  }
]

总结

通过上述步骤,我们成功地调用了金蝶云星空的executeBillQuery接口,并对返回的数据进行了必要的清洗和加工。这一步骤为后续的数据转换与写入奠定了坚实基础。在整个过程中,轻易云数据集成平台提供了全透明可视化的操作界面,使得每个环节都清晰易懂,并实时监控数据流动和处理状态,大大提升了业务透明度和效率。 电商OMS与ERP系统接口开发配置

将金蝶辅助资料转换为轻易云集成平台API格式并写入目标平台

在数据集成过程中,ETL(提取、转换、加载)是关键步骤之一。本文将深入探讨如何将已经集成的源平台数据进行ETL转换,转为目标平台轻易云集成平台API接口所能够接收的格式,并最终写入目标平台。

数据请求与清洗

在进行数据转换之前,我们首先需要从源系统(金蝶)中提取出库申请类型的辅助资料。假设我们已经通过轻易云数据集成平台完成了数据请求和清洗阶段,获取了所需的数据。

数据转换

接下来,我们进入数据转换阶段。此阶段的核心任务是将从金蝶系统提取的数据转换为符合轻易云集成平台API接口要求的格式。以下是一个典型的数据结构示例:

{
    "data": [
        {
            "id": "001",
            "name": "普通出库"
        },
        {
            "id": "002",
            "name": "退货出库"
        }
    ]
}

为了确保数据能够被正确写入目标平台,我们需要根据元数据配置对其进行处理。元数据配置如下:

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

数据格式化

根据上述元数据配置,我们需要确保以下几点:

  1. API路径:使用写入空操作
  2. HTTP方法:使用POST方法。
  3. ID检查:启用ID检查功能。

在实际操作中,我们可以使用以下Python代码示例来完成数据格式化和发送请求:

import requests
import json

# 定义API路径和HTTP方法
api_url = "https://api.qingyiyun.com/execute"
headers = {
    'Content-Type': 'application/json'
}

# 定义从金蝶系统提取的数据
data = {
    "data": [
        {"id": "001", "name": "普通出库"},
        {"id": "002", "name": "退货出库"}
    ]
}

# 转换为轻易云集成平台API接口所需的格式
formatted_data = {
    "operation": "write",
    "dataSet": data,
    "checkId": True
}

# 发送POST请求到轻易云集成平台API
response = requests.post(api_url, headers=headers, data=json.dumps(formatted_data))

# 检查响应状态码和内容
if response.status_code == 200:
    print("Data successfully written to the target platform.")
else:
    print(f"Failed to write data: {response.status_code} - {response.text}")

数据写入

通过上述代码,我们实现了将从金蝶系统提取的数据转换为符合轻易云集成平台API接口要求的格式,并成功发送POST请求以完成数据写入。

在整个过程中,关键点在于:

  • 确保数据结构符合目标平台API的要求。
  • 使用正确的HTTP方法(POST)。
  • 启用ID检查功能以保证数据的一致性和完整性。

通过这种方式,我们可以高效地将异构系统中的数据无缝对接,实现跨平台的数据集成和共享。这不仅提高了业务流程的透明度和效率,也为企业的数据管理提供了强有力的支持。 电商OMS与WMS系统接口开发配置

更多系统对接方案