基于轻易云平台进行ETL转换与数据写入的技术案例分享

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

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

在本次分享的技术案例中,我们将探讨如何实现金蝶云星空与轻易云数据集成平台的系统对接,具体场景为“仓库查询”。本文着重展示了从获取金蝶云星空的数据、处理分页和限流问题,到批量写入至轻易云集成平台全过程。

首先,为确保金蝶云星空的数据不漏单且快速准确地传输到轻易云,我们使用了executeBillQuery API接口抓取相关数据。通过定时任务来调用该接口,设置合理的时间间隔以保证数据的新鲜度和一致性。与此同时,还解决了API调用过程中的分页问题,通过循环迭代方式逐页获取完整的数据,并处理API限流限制,以防止因请求过于频繁导致服务拒绝。

其次,考虑到两大系统之间可能存在的数据格式差异,我们进行了必要的映射转换。在完成格式转换后,将整理好的数据通过batchSave API接口高效地批量写入至轻易云,实现大量数据的快速存储。同时,对每一步骤进行实时监控和日志记录,以便及时发现并处理潜在的问题。当出现异常情况时,利用错误重试机制确保不会丢失任何一条重要信息,提高系统整体稳定性。

最后,通过全透明可视化界面的操作,不仅提升了业务流程各环节的透明度,也进一步提高了工作效率。此实施方案不仅适用于金蝶云星空与轻易云平台之间的数据对接,还可以作为其他类似场景下的一种标准配置模版提供参考。

以上是此次案例开头部分内容,在后续章节中我们会详细剖析具体实现步骤和关键技术点。 用友与CRM系统接口开发配置

使用轻易云数据集成平台调用金蝶云星空接口executeBillQuery获取并加工数据

在数据集成的生命周期中,第一步是从源系统获取数据,并对其进行初步加工。本文将详细探讨如何使用轻易云数据集成平台调用金蝶云星空接口executeBillQuery来实现这一过程。

接口配置与请求参数

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

{
  "api": "executeBillQuery",
  "method": "POST",
  "number": "FNumber",
  "id": "FStockId",
  "pagination": {
    "pageSize": 100
  },
  "idCheck": true,
  "request": [
    {"field":"FStockId","label":"id","type":"string","value":"FStockId"},
    {"field":"FNumber","label":"编码","type":"string","value":"FNumber"},
    {"field":"FName","label":"名称","type":"string","value":"FName"},
    {"field":"FGroup","label":"分组","type":"string","value":"FGroup"},
    {"label":"使用组织","field":"FUseOrgId","type":"string","value":"FUseOrgId.FNumber"}
  ],
  "otherRequest": [
    {"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>='{{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_STOCK"}
  ]
}

请求参数解析

  1. API与方法

    • api: executeBillQuery
    • method: POST
  2. 主键与编号

    • number: FNumber
    • id: FStockId
  3. 分页设置

    • pagination.pageSize: 每页100条记录
  4. 请求字段

    • request部分定义了需要从源系统获取的数据字段,包括仓库ID(FStockId)、编码(FNumber)、名称(FName)、分组(FGroup)和使用组织(FUseOrgId.FNumber)。
  5. 其他请求参数

    • 分页参数如最大行数(Limit)、开始行索引(StartRow)等。
    • 查询过滤条件(FilterString),例如:过滤供应商编号为'VE00010'且审批日期大于某个时间点的数据。
    • 查询字段集合(FieldKeys),通过数组转字符串解析器转换。

调用接口并处理响应

在轻易云平台上配置好上述元数据后,可以通过以下步骤调用接口并处理响应:

  1. 构建请求体: 根据元数据配置,构建POST请求体,包含所有必要的字段和分页参数。例如:
{
  "FormId": "BD_STOCK",
  "FieldKeys": ["FStockId", "FNumber", "FName", "FGroup", "FUseOrgId.FNumber"],
  "FilterString": "",
  ...
}
  1. 发送请求: 使用HTTP POST方法将请求发送到金蝶云星空API端点。

  2. 处理响应: 接收并解析响应数据,对返回的数据进行初步清洗和转换。例如,将JSON格式的数据转换为适合目标系统的数据结构。

数据清洗与转换

在接收到原始数据后,需要对其进行清洗和转换,以确保其符合目标系统的要求。常见的数据清洗操作包括:

  • 去除冗余字段:只保留需要的字段。
  • 数据类型转换:将字符串类型的数据转换为相应的数据类型,如日期、数字等。
  • 格式化数据:根据目标系统的要求,对数据进行格式化处理。

例如,对于仓库名称中的特殊字符进行处理,确保其在目标系统中能够正确显示。

实践案例

假设我们需要从金蝶云星空中获取所有仓库的信息,并将其导入到另一个ERP系统中。具体步骤如下:

  1. 配置元数据,定义所需字段和分页参数。
  2. 构建并发送API请求,获取仓库信息。
  3. 对返回的数据进行清洗和转换,去除不必要的字段,并格式化剩余字段。
  4. 将处理后的数据写入目标ERP系统。

通过上述步骤,我们可以高效地实现不同系统间的数据集成,确保数据的一致性和准确性。这一过程不仅提升了业务透明度,还极大地提高了工作效率。 如何对接金蝶云星空API接口

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

在数据集成生命周期的第二步,我们将已经集成的源平台数据进行ETL(提取、转换、加载)转换,最终写入目标平台。本文将详细探讨如何利用轻易云数据集成平台的API接口实现这一过程。

元数据配置解析

首先,我们需要理解元数据配置中的各个字段及其含义。这些字段定义了如何将源数据转换为目标平台所需的格式,并通过API接口进行写入。

{
  "api": "batchSave",
  "method": "POST",
  "pagination": {
    "pageSize": 500
  },
  "idCheck": true,
  "request": [
    {"field": "FName", "label": "名称", "type": "string"},
    {"field": "FNumber", "label": "编码", "type": "string"},
    {"field": "FUseOrgId", "label": "使用组织", "type": "string", 
     "describe":"100", 
     "parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field": "FCreateOrgId", "label": "创建组织", 
     "type":"string","describe":"100",
     "parser":{"name":"ConvertObjectParser","params":"FNumber"}},
    {"field": "FDescription", "label": "描述", 
     "type":"string"},
    {"field": "FStockStatusType", 
     "label":"仓库类型","type":"string",
     "value":"0,1,2,3,4,5,6,7,8"},
    {"field":"FAddress","label":"地址","type":"string"},
    {"field":"FStockProperty","label":"仓库属性",
     "type":"string","value":"1"}
  ],
  ...
}

数据请求与清洗

在ETL过程中,首先需要从源系统提取数据。假设我们从一个仓库管理系统中提取了以下原始数据:

[
  {
    "名称": "仓库A",
    "编码": "WH001",
    ...
  },
  ...
]

这些原始数据需要经过清洗和转换,以符合目标平台API接口的要求。例如,将"名称"字段映射为"FName","编码"字段映射为"FNumber",并根据需求对其他字段进行相应处理。

数据转换与写入

接下来,我们利用元数据配置中的parser和其他配置项进行数据转换。以下是一个示例代码片段,展示了如何使用Python进行此操作:

import requests
import json

def convert_data(raw_data):
    converted_data = []
    for item in raw_data:
        converted_item = {
            'FName': item['名称'],
            'FNumber': item['编码'],
            'FUseOrgId': convert_object_parser(item['使用组织']),
            'FCreateOrgId': convert_object_parser(item['创建组织']),
            'FDescription': item.get('描述', ''),
            'FStockStatusType': item.get('仓库类型', '0'),
            'FAddress': item.get('地址', ''),
            'FStockProperty': '1'
        }
        converted_data.append(converted_item)
    return converted_data

def convert_object_parser(value):
    # 假设这里有具体的转换逻辑
    return value

raw_data = [
    {'名称': '仓库A', '编码': 'WH001', ...},
    ...
]

converted_data = convert_data(raw_data)

# 准备请求体
payload = {
    'FormId': 'BD_STOCK',
    'IsVerifyBaseDataField': False,
    'Operation': 'BatchSave',
    'IsAutoSubmitAndAudit': True,
    'Data': converted_data
}

# 调用轻易云API接口
response = requests.post(
    url='https://api.qingyiyun.com/batchSave',
    headers={'Content-Type': 'application/json'},
    data=json.dumps(payload)
)

print(response.json())

API接口调用细节

在上述代码中,我们通过HTTP POST方法调用轻易云的batchSave API接口。请求体包含了经过转换的数据以及其他必要参数,如FormIdOperation等。

  • FormId: 指定业务对象表单ID,这里是'BD_STOCK'。
  • IsVerifyBaseDataField: 是否验证基础资料有效性,默认为False。
  • Operation: 执行的操作,这里是'BatchSave'。
  • IsAutoSubmitAndAudit: 是否自动提交并审核,设置为True。

通过这种方式,我们可以确保源系统的数据经过清洗和转换后,能够无缝地写入目标平台,从而完成整个ETL过程。

实时监控与调试

为了确保数据处理过程的准确性和高效性,可以利用轻易云平台提供的实时监控功能,对每个环节的数据流动和处理状态进行监控。一旦发现异常,可以及时调整配置或修正代码,以保证数据集成的顺利进行。

以上就是关于如何使用轻易云数据集成平台进行ETL转换并写入目标平台的一些技术细节和案例分享。希望这些内容能为您的实际项目提供参考和帮助。 用友与CRM系统接口开发配置

更多系统对接方案