利用轻易云平台实现ETL流程,转换并写入目标平台数据

  • 轻易云集成顾问-钟家寿

金蝶云星空数据集成到轻易云平台的技术实现:MOM-SCHB-金蝶生产汇报单查询-XSL

在现代企业管理系统中,数据的高效流动和准确性至关重要。本文将聚焦于一个具体的系统对接案例——如何将金蝶云星空的数据集成到轻易云数据集成平台,以MOM-SCHB-金蝶生产汇报单查询-XSL方案为例,剖析其技术实现细节。

首先,我们需要解决的是如何调用金蝶云星空API接口executeBillQuery来获取所需的数据。在这个过程中,需要注意处理分页和限流问题,以确保能够稳定、高效地抓取到全部汇报单信息。此外,通过定时可靠的任务调度机制,实现了对金蝶云星空接口数据的周期性抓取,从而最大化保证了数据的不漏失。

在成功获取到API响应的数据之后,下一步便是将这些大量的数据快速写入到轻易云集成平台。这里关键的一点是利用轻易云提供的高吞吐量写入能力,使得大量的数据能够迅速且无损地被存储下来。同时,在写入过程中,还要特别针对不同业务需求进行自定义的数据转换逻辑,这不仅能适应特定业务场景,也提高了整体流程中的灵活性。

为了进一步保障数据质量,整个集成过程支持实时监控与日志记录。当检测到异常情况时,可以通过自动触发告警并重试机制来及时处理问题。这种设计有效避免了由于网络或系统波动导致的数据丢失,提高了整体流程的鲁棒性。

总之,在本次集成项目中,我们综合应用了一系列先进技术手段,从源头上确保了数据完整、实时、精准地从金蝶云星空迁移至轻易云平台,为企业提供了一套高效、安全、健全的数据管理解决方案。接下来,将详细介绍各个步骤及其关键技术点。 系统集成平台API接口配置

调用金蝶云星空接口executeBillQuery获取并加工数据的技术案例

在数据集成过程中,调用源系统接口是关键的一步。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery接口来获取并加工数据。

接口配置与元数据解析

首先,我们需要理解元数据配置中的各个字段及其作用。以下是元数据配置的详细解析:

  • api: executeBillQuery,表示我们要调用的API名称。
  • effect: QUERY,表示这是一个查询操作。
  • method: POST,表示使用POST方法进行请求。
  • number: FBillNo,单据编号字段。
  • id: FID,唯一标识字段。
  • idCheck: true,表示需要检查ID。

请求参数(request)和其他请求参数(otherRequest)分别定义了具体的查询条件和分页等辅助参数。

请求参数配置

在请求参数中,我们定义了需要查询的字段,如下所示:

"request": [
    {"field":"FID","label":"FID","type":"string","describe":"111","value":"FID"},
    {"field":"FBillNo","label":"单据编号","type":"string","describe":"111","value":"FBillNo"},
    {"field":"FEntity_FEntryID","label":"FEntity_FEntryID","type":"string","describe":"111","value":"FEntity_FEntryID"},
    {"field":"FMoBillNo","label":"生产订单号","type":"string","describe":"111","value":"FMoBillNo"},
    {"field":"FMaterialId","label":"物料编码","type":"string","value":"FMaterialId.FNumber"},
    {"field":"FBaseUnitId","label":"基本单位","type":"string","value":"FBaseUnitId.FNumber"}
]

这些字段将用于构建查询条件,以获取生产汇报单的数据。

其他请求参数配置

其他请求参数主要用于分页和过滤条件设置:

"otherRequest": [
    {"field":"Limit","label":"Limit","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_PAGE_SIZE}"},
    {"field":"StartRow","label":"StartRow","type":"string","describe":"金蝶的查询分页参数","value":"{PAGINATION_START_ROW}"},
    {"field":"TopRowCount","label":"TopRowCount","type": "int", "describe": "金蝶的查询分页参数"},
    {"field": "FilterString", "label": "FilterString", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FApproveDate>='{{LAST_SYNC_TIME|datetime}}' and FPrdOrgId.FNumber in ('T02', 'T02.01')"},
    {"field": "FieldKeys", "label": "FieldKeys", "type": "array", "describe": "金蝶分录主键ID格式:FPOOrderEntry_FEntryId,其它格式 FPurchaseOrgId.FNumber", "value": "{MAIN_REQUEST}"},
    {"field": "FormId", "label": "FormId", "type": "string", "describe": "必须填写金蝶的表单ID如:PUR_PurchaseOrder", "value": "PRD_MORPT"}
]

这些参数确保了我们能够精确控制查询结果,包括分页、过滤条件等。

数据请求与清洗

在实际操作中,我们通过POST方法向金蝶云星空发送请求。以下是一个示例请求体:

{
  "FormId": "PRD_MORPT",
  "FieldKeys": ["FID", "FBillNo", "FEntity_FEntryID", "FMoBillNo", 
                "FMaterialId.FNumber", 
                "FBaseUnitId.FNumber"],
  "FilterString": "FApproveDate>='2023-01-01' and FPrdOrgId.FNumber in ('T02', 'T02.01')",

![打通金蝶云星空数据接口](https://pic.qeasy.cloud/S8.png~tplv-syqr462i7n-qeasy.image)
### 使用轻易云数据集成平台进行ETL转换并写入目标平台的技术案例

在数据集成生命周期的第二步中,我们将已经集成的源平台数据进行ETL(Extract, Transform, Load)转换,转为目标平台能够接收的格式,最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台实现这一过程。

#### 数据提取与清洗

首先,我们需要从源系统中提取数据。假设我们从金蝶生产汇报单查询系统中提取生产汇报单数据。这些数据可能包含多个字段,如生产单号、产品编码、数量等。在提取过程中,我们需要确保数据的完整性和准确性。

```json
{
  "productionOrderNumber": "PO123456",
  "productCode": "PC7890",
  "quantity": 100,
  "reportDate": "2023-10-01"
}

数据转换

接下来,我们需要将提取的数据进行转换,以满足目标平台API接口的要求。根据提供的元数据配置,目标平台API接口要求的数据格式如下:

{
  "api": "写入空操作",
  "effect": "EXECUTE",
  "method": "POST",
  "number": "number",
  "id": "id",
  "name": "编码",
  "idCheck": true
}

在转换过程中,我们需要将源数据字段映射到目标API接口所需的字段。例如,将productionOrderNumber映射到number,将productCode映射到编码

{
  "number": "PO123456",
  "id": null,
  "编码": "PC7890"
}

数据写入

完成数据转换后,我们使用轻易云集成平台提供的API接口将数据写入目标平台。根据元数据配置,API接口采用POST方法,并且需要执行写入操作。

以下是一个使用Python语言实现这一过程的示例代码:

import requests
import json

# 源数据
source_data = {
    "productionOrderNumber": "PO123456",
    "productCode": "PC7890",
    "quantity": 100,
    "reportDate": "2023-10-01"
}

# 转换后的目标数据
target_data = {
    "number": source_data["productionOrderNumber"],
    "id": None,
    "编码": source_data["productCode"]
}

# API接口配置
api_url = 'https://api.qingyiyun.com/write'
headers = {'Content-Type': 'application/json'}
payload = {
    'api': '写入空操作',
    'effect': 'EXECUTE',
    'method': 'POST',
    'data': target_data,
    'idCheck': True
}

# 将转换后的数据写入目标平台
response = requests.post(api_url, headers=headers, data=json.dumps(payload))

if response.status_code == 200:
    print("Data written successfully")
else:
    print(f"Failed to write data: {response.text}")

上述代码展示了如何通过HTTP POST请求将转换后的数据发送到轻易云集成平台API接口。在实际应用中,可以根据具体需求对代码进行调整和优化。

实时监控与错误处理

在整个ETL过程中,实时监控和错误处理是确保数据集成成功的重要环节。轻易云集成平台提供了实时监控功能,可以帮助我们及时发现和解决问题。例如,如果API请求失败,可以通过日志记录详细的错误信息,并采取相应措施进行修复。

try:
    response = requests.post(api_url, headers=headers, data=json.dumps(payload))
    response.raise_for_status()
except requests.exceptions.RequestException as e:
    print(f"Error occurred: {e}")

通过上述方式,我们可以有效地管理和监控ETL过程中的每个环节,确保数据准确、高效地传输到目标平台。

总结来说,通过合理配置元数据,并结合轻易云集成平台提供的API接口,我们可以高效地完成从源系统到目标系统的数据ETL转换和写入工作。这不仅提升了业务透明度和效率,也为企业的数据管理提供了强有力的支持。 打通企业微信数据接口

更多系统对接方案