金蝶云星空数据集成到轻易云集成平台:仓库查询案例分享
在本次分享的技术案例中,我们将探讨如何实现金蝶云星空与轻易云数据集成平台的系统对接,具体场景为“仓库查询”。本文着重展示了从获取金蝶云星空的数据、处理分页和限流问题,到批量写入至轻易云集成平台全过程。
首先,为确保金蝶云星空的数据不漏单且快速准确地传输到轻易云,我们使用了executeBillQuery API接口抓取相关数据。通过定时任务来调用该接口,设置合理的时间间隔以保证数据的新鲜度和一致性。与此同时,还解决了API调用过程中的分页问题,通过循环迭代方式逐页获取完整的数据,并处理API限流限制,以防止因请求过于频繁导致服务拒绝。
其次,考虑到两大系统之间可能存在的数据格式差异,我们进行了必要的映射转换。在完成格式转换后,将整理好的数据通过batchSave API接口高效地批量写入至轻易云,实现大量数据的快速存储。同时,对每一步骤进行实时监控和日志记录,以便及时发现并处理潜在的问题。当出现异常情况时,利用错误重试机制确保不会丢失任何一条重要信息,提高系统整体稳定性。
最后,通过全透明可视化界面的操作,不仅提升了业务流程各环节的透明度,也进一步提高了工作效率。此实施方案不仅适用于金蝶云星空与轻易云平台之间的数据对接,还可以作为其他类似场景下的一种标准配置模版提供参考。
以上是此次案例开头部分内容,在后续章节中我们会详细剖析具体实现步骤和关键技术点。
使用轻易云数据集成平台调用金蝶云星空接口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"}
]
}
请求参数解析
-
API与方法:
api
:executeBillQuery
method
:POST
-
主键与编号:
number
:FNumber
id
:FStockId
-
分页设置:
pagination.pageSize
: 每页100条记录
-
请求字段:
request
部分定义了需要从源系统获取的数据字段,包括仓库ID(FStockId
)、编码(FNumber
)、名称(FName
)、分组(FGroup
)和使用组织(FUseOrgId.FNumber
)。
-
其他请求参数:
- 分页参数如最大行数(
Limit
)、开始行索引(StartRow
)等。 - 查询过滤条件(
FilterString
),例如:过滤供应商编号为'VE00010'且审批日期大于某个时间点的数据。 - 查询字段集合(
FieldKeys
),通过数组转字符串解析器转换。
- 分页参数如最大行数(
调用接口并处理响应
在轻易云平台上配置好上述元数据后,可以通过以下步骤调用接口并处理响应:
- 构建请求体: 根据元数据配置,构建POST请求体,包含所有必要的字段和分页参数。例如:
{
"FormId": "BD_STOCK",
"FieldKeys": ["FStockId", "FNumber", "FName", "FGroup", "FUseOrgId.FNumber"],
"FilterString": "",
...
}
-
发送请求: 使用HTTP POST方法将请求发送到金蝶云星空API端点。
-
处理响应: 接收并解析响应数据,对返回的数据进行初步清洗和转换。例如,将JSON格式的数据转换为适合目标系统的数据结构。
数据清洗与转换
在接收到原始数据后,需要对其进行清洗和转换,以确保其符合目标系统的要求。常见的数据清洗操作包括:
- 去除冗余字段:只保留需要的字段。
- 数据类型转换:将字符串类型的数据转换为相应的数据类型,如日期、数字等。
- 格式化数据:根据目标系统的要求,对数据进行格式化处理。
例如,对于仓库名称中的特殊字符进行处理,确保其在目标系统中能够正确显示。
实践案例
假设我们需要从金蝶云星空中获取所有仓库的信息,并将其导入到另一个ERP系统中。具体步骤如下:
- 配置元数据,定义所需字段和分页参数。
- 构建并发送API请求,获取仓库信息。
- 对返回的数据进行清洗和转换,去除不必要的字段,并格式化剩余字段。
- 将处理后的数据写入目标ERP系统。
通过上述步骤,我们可以高效地实现不同系统间的数据集成,确保数据的一致性和准确性。这一过程不仅提升了业务透明度,还极大地提高了工作效率。
使用轻易云数据集成平台进行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接口。请求体包含了经过转换的数据以及其他必要参数,如FormId
、Operation
等。
FormId
: 指定业务对象表单ID,这里是'BD_STOCK'。IsVerifyBaseDataField
: 是否验证基础资料有效性,默认为False。Operation
: 执行的操作,这里是'BatchSave'。IsAutoSubmitAndAudit
: 是否自动提交并审核,设置为True。
通过这种方式,我们可以确保源系统的数据经过清洗和转换后,能够无缝地写入目标平台,从而完成整个ETL过程。
实时监控与调试
为了确保数据处理过程的准确性和高效性,可以利用轻易云平台提供的实时监控功能,对每个环节的数据流动和处理状态进行监控。一旦发现异常,可以及时调整配置或修正代码,以保证数据集成的顺利进行。
以上就是关于如何使用轻易云数据集成平台进行ETL转换并写入目标平台的一些技术细节和案例分享。希望这些内容能为您的实际项目提供参考和帮助。