金蝶云星空与轻易云集成平台的数据对接案例分享
在企业信息化系统中,数据的及时性和准确性尤为重要。本文将重点分享一个实际应用案例:如何通过轻易云数据集成平台,实现金蝶云星空系统物料信息的高效、稳定对接。本方案名为“查询金蝶物料(刷新金蝶许可用勿关闭)”。
1. API接口调用 - executeBillQuery
首先,我们通过调用金蝶云星空提供的executeBillQuery
接口来获取最新的物料信息,该API能够有效地支持高吞吐量的数据请求,从而确保大量数据能够快速被抓取。同时,为了应对接口调用可能出现的大量分页和限流问题,我们在设计时采用了批量处理策略,并结合定时任务进行可靠的定期抓取。这些机制保障了数据漏单现象得以避免。
2. 数据写入过程 - 写入空操作
获取到的原始数据需要按需转换后写入到轻易云集成平台中。为了实现这一点,我们使用了轻易云提供的数据写入API:写入空操作
。该API拥有强大的并发处理能力,可以快速将大批量数据插入目标数据库,有效提升整体流程效率。此外,通过可视化的数据流设计工具,使得整个转换及插入过程更加直观且便于管理。
3. 数据监控和异常处理
实时监控是保证数据质量的重要环节。借助轻易云的平台特性,建立了一套完整的数据质量监控与告警系统,可以实时跟踪每一个任务节点中的状态变化以及性能表现。一旦发现异常情况,比如捕获错误或网络延迟过长,系统会立即触发重试机制,同时记录详细日志,以便后续分析处理。这一功能从根本上提高了系统运行稳定性,确保业务连续性不受影响。
以上三部分构成了我们此次技术方案实施的重要模块。而如何处理两端间复杂多样的数据结构差异,以及具体配置细节,将在下一步内容详述。在这之前,需要明确的是,仅凭标准API无法覆盖各种个性的需求场景,因此灵活有效地融合自定义逻辑成为解决此类问题的重要手段。
接下来让我们逐步展开具体实现步骤。
调用源系统金蝶云星空接口executeBillQuery获取并加工数据
在数据集成的生命周期中,第一步是调用源系统的接口以获取原始数据。本文将详细探讨如何通过轻易云数据集成平台调用金蝶云星空的executeBillQuery
接口,并对获取的数据进行初步加工。
接口配置与调用
首先,我们需要配置和调用金蝶云星空的executeBillQuery
接口。以下是该接口的元数据配置:
{
"api": "executeBillQuery",
"method": "POST",
"number": "FNumber",
"id": "FMasterId",
"pagination": {
"pageSize": 500
},
"request": [
{"field":"FMasterId","label":"id","type":"string","value":"FMasterId"},
{"field":"FNumber","label":"编码","type":"string","value":"FNumber"},
{"field":"FName","label":"名称","type":"string","value":"FName"},
{"field":"FSpecification","label":"规格型号","type":"string","value":"FSpecification"},
{"field":"FMnemonicCode","label":"助记码","type":"string","value":"FMnemonicCode"},
{"field":"FOldNumber","label":"旧物料编码","type":"string","value":"FOldNumber"},
{"field":"FBARCODE","label":"条码","type":"string","value":"FBARCODE"},
{"field":"FDescription","label":"描述","type":"string","value":"FDescription"},
{"field":"FMaterialGroup_FNumber","label":"物料分组","type":"string","value":"FMaterialGroup.FNumber"},
{"field":"FErpClsID","label":"物料属性","type":"string","value":"FErpClsID"},
{"field":"FDocumentStatus","label":"数据状态","type":"string","value":"FDocumentStatus"},
{"field":"FForbidStatus","label":"禁用状态","type":"string","value":"FForbidStatus"},
{"field": "FilterString", "label": "过滤条件", "type": "string", "describe": "示例写法 FSupplierId.FNumber = 'VEN00010' and FApproveDate>=", "value": "FUseOrgId.fnumber='100' and FModifyDate>='{{LAST_SYNC_TIME|datetime}}'"}
],
"otherRequest": [
{"field": "Limit", "label": "最大行数", "type": "string", "describe": "金蝶的查询分页参数", "value": "2000"},
{"field": "StartRow", "label": "开始行索引", "type": "string", describe: 金蝶的查询分页参数, value: "{PAGINATION_START_ROW}"},
{"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_MATERIAL}
]
}
数据请求与清洗
在配置好元数据后,我们可以通过POST请求来调用该接口。以下是一个示例请求:
{
"FormId": "BD_MATERIAL",
"FieldKeys": ["FMasterId", ..., ...],
...
}
在请求中,我们指定了需要查询的字段以及过滤条件,例如:
"FilterString" : “FSupplierId.FNumber = 'VEN00010' and FApproveDate>=2023-01-01”
这将确保我们只获取符合条件的数据。
数据转换与写入
一旦我们成功获取到数据,下一步就是对数据进行转换和写入。在轻易云平台上,这一步通常包括以下几个步骤:
- 字段映射:将源系统中的字段映射到目标系统中的相应字段。例如,将
金蝶云星空
中的FMasterId
映射到目标系统中的id
。 - 数据清洗:对获取的数据进行清洗,包括去除无效字符、格式化日期等操作。
- 批量处理:由于每次请求只能获取有限数量的数据,因此需要实现分页处理,逐页获取并处理所有数据。
示例代码
以下是一个简单的示例代码,用于展示如何通过轻易云平台实现上述过程:
import requests
url = 'https://api.kingdee.com/executeBillQuery'
headers = {'Content-Type': 'application/json'}
payload = {
'FormId': 'BD_MATERIAL',
'FieldKeys': ['FMasterId', '...', '...'],
'FilterString': “FSupplierId.FNumber = 'VEN00010' and FApproveDate>=2023-01-01”,
...
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
# 数据清洗与转换
cleaned_data = []
for item in data:
cleaned_item = {
'id': item['FMasterId'],
...
}
cleaned_data.append(cleaned_item)
# 写入目标系统
write_to_target_system(cleaned_data)
通过上述步骤,我们可以高效地从金蝶云星空获取所需的数据,并进行初步加工,为后续的数据集成奠定基础。
轻易云数据集成平台中的ETL转换与写入
在轻易云数据集成平台中,ETL(Extract, Transform, Load)过程的第二步至关重要,即将已经集成的源平台数据进行转换,并转为目标平台能够接收的格式,最终写入目标平台。本文将深入探讨这一过程中涉及的技术细节,特别是API接口的配置和使用。
数据转换与API接口配置
在数据集成过程中,首先需要确保源数据经过清洗和初步处理,接下来便是通过ETL流程将这些数据转换为目标平台所需的格式。以下是一个具体的元数据配置示例,用于将金蝶物料数据写入到轻易云集成平台:
{
"api": "写入空操作",
"effect": "EXECUTE",
"method": "POST",
"number": "number",
"id": "id",
"name": "编码",
"idCheck": true
}
配置解析
-
API Endpoint:
"api": "写入空操作"
:指定了目标API接口名称。在实际应用中,这个字段会被替换为具体的API路径。
-
Effect:
"effect": "EXECUTE"
:指明了操作类型。在此配置中,EXECUTE
表示执行写入操作。
-
HTTP Method:
"method": "POST"
:指定了HTTP请求方法为POST,用于向目标平台发送数据。
-
Field Mapping:
"number": "number"
:映射源数据中的number
字段到目标API中的number
字段。"id": "id"
:映射源数据中的id
字段到目标API中的id
字段。"name": "编码"
:映射源数据中的name
字段到目标API中的编码
字段。
-
ID Check:
"idCheck": true
:表示在写入前需要检查ID是否存在,以避免重复或冲突的数据写入。
数据转换流程
-
提取(Extract): 从金蝶系统中提取物料信息,通过预先配置好的连接器和查询语句获取原始数据。这一步通常涉及到对数据库或REST API进行访问,并获取JSON或XML格式的数据。
-
转换(Transform): 根据元数据配置,对提取的数据进行必要的转换。例如,将金蝶系统中的物料编码字段映射到轻易云集成平台所需的格式。这一步可能涉及到多种数据处理操作,如类型转换、字段重命名、值映射等。
-
加载(Load): 使用配置好的API接口,将转换后的数据通过POST请求发送到目标平台。确保在发送前进行ID检查,以防止重复记录。以下是一个简化的Python代码示例,展示了如何实现这一过程:
import requests
import json
# 示例源数据
source_data = {
'number': '12345',
'id': '67890',
'name': '物料A'
}
# 转换后的目标数据
target_data = {
'number': source_data['number'],
'id': source_data['id'],
'编码': source_data['name']
}
# API接口配置
api_url = 'https://example.com/api/写入空操作'
headers = {'Content-Type': 'application/json'}
# 发送POST请求
response = requests.post(api_url, headers=headers, data=json.dumps(target_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}')
关键技术点
- 异构系统支持:确保不同系统间的数据格式和协议兼容性,通过灵活的元数据配置实现无缝对接。
- 实时监控与日志记录:在ETL过程中实时监控每个环节,并记录详细日志以便于后续分析和故障排查。
- 错误处理机制:设计健壮的错误处理机制,在发生异常时能够及时捕获并采取相应措施,如重试、告警等。
通过以上技术手段,可以有效地实现从金蝶系统到轻易云集成平台的数据转换与写入,提高业务流程的自动化程度和效率。