MySQL数据集成到金蝶云星空:SR生产入库单新增案例分享
在复杂多变的企业业务环境中,如何高效、安全地实现数据的无缝流动与集成,是每个系统管理者最为关心的问题。本次我们聚焦于一个实际运行方案“SR生产入库单新增-单工序-深圳天一-好”,详细探讨如何将MySQL中的数据通过API接口有效地集成到金蝶云星空。
首先,我们采用轻易云数据集成平台,借助其可视化的数据流设计工具和自定义转换逻辑功能,实现了对MysQL数据库中的select查询结果进行批量处理,并准时可靠地抓取所需的数据。这些数据随后利用金蝶云星空提供的batchSave API 进行高速写入。
为了确保整个过程中不漏单,并及时发现和处理任何可能出现的数据异常,我们启用了全面的数据质量监控机制。此外,通过集中式的监控和告警系统,对各节点性能及任务状态进行了实时跟踪,大大提高了任务执行过程中的透明度与可靠性。
不仅如此,这次集成还特别注意到了从MySQL接口形式获取分页和限流问题,以及两种不同系统间数据格式差异带来的挑战。通过定制化的数据映射对接方案,这些问题得以顺利解决,从而保障了系统间数据信息的一致性及准确性。
具体实施细节将在后续内容中逐步揭晓,包括API调用、异常处理机制以及日志记录策略等技术要点,为您展示一次完整且成功的跨平台数据集成实战案例。
调用MySQL接口select获取并加工数据
在轻易云数据集成平台中,调用源系统MySQL接口select
获取并加工数据是数据处理生命周期的第一步。本文将详细探讨如何通过元数据配置实现这一过程。
元数据配置解析
首先,我们需要理解元数据配置中的各个字段及其作用:
api
: 指定调用的API类型,这里为select
。effect
: 表示操作类型,这里为QUERY
,即查询操作。method
: 数据请求的方法,这里为SQL
。number
,id
,name
: 这些字段用于标识和描述请求的数据结构。request
: 包含主查询语句内的动态参数对象,主要包括:limit
: 返回的记录数,用于限制查询结果的数量。offset
: 数据偏移量,用于指定查询起始位置。
主查询语句
主查询语句是整个数据获取过程的核心部分。以下是一个典型的主查询语句示例:
select
case m.delivery_org
when 'T01.01' then CONCAT('HJ', CAST(hj1.id AS CHAR))
when 'T04' then CONCAT('HJGD', CAST(hj1.id AS CHAR))
else
CONCAT('HJ', CAST(hj1.id AS CHAR))
end as 生产订单号,
a.part_no as 成品编号,
c.mode_no as 计划跟踪号,
CONCAT('RKD',CAST(a.id AS CHAR)) as 入库单号,
date(a.update_time) as 日期,
a.confirm_numb as 入库数量,
a.id as sourceid,
0.000001 as 工时,
m.delivery_org as 供应组织
from wms_instock_confirm_task_detail a
left join wms_instock_purchase_task_detail c on MATTERIAL_TYPE='3' and c.next_process_code is null
left join wms_instock_confirm_main_task_detail b on b.connect_uuid=c.uuid
left join mbs_nuclear_price_task hj on hj.mold_no=c.mode_no and hj.part_no=a.part_no
left join mbs_nuclear_price_info hj1 on hj1.nuclear_price_task_uuid=hj.nuclear_price_task_uuid and hj1.out_type='3'
left join mbs_order_plan_bom l on c.mode_no=l.bom_no
left join mbs_order_bom m on m.bom_uuid=l.bom_uuid
where a.connect_uuid=b.uuid
and a.company_code='TYZN'
and a.update_time>'2023-08-01'
and hj1.create_time>(select config_value from sys_config where config_id=337)
and a.is_success3 !='1' and a.is_success2='1'
limit :limit offset :offset
动态参数对象
在上述SQL语句中,使用了两个动态参数::limit
和 :offset
。这些参数通过元数据配置中的request
字段进行传递和控制:
{
"field": "main_params",
"label": "主参数",
"type": "object",
"describe": "对应主查询语句内的动态参数对象",
"children": [
{
"field": "limit",
"label": "返回的记录数",
"type": "int",
"describe": "你可以使用 LIMIT 属性来设定返回的记录数。",
"value": "100"
},
{
"field": "offset",
"label": "数据偏移量",
"type": "int",
"describe": "你可以通过OFFSET指定SELECT语句开始查询的数据偏移量。默认情况下偏移量为0。",
"value": "0"
}
]
}
实际应用案例
假设我们需要从MySQL数据库中获取生产入库单新增的数据,并且每次返回100条记录,从第0条开始。我们可以通过以下步骤实现:
- 配置元数据:按照上述元数据配置格式,定义好动态参数和主查询语句。
- 执行SQL查询:在轻易云平台上,通过API调用执行上述SQL查询,并传递相应的动态参数值(如:limit=100, offset=0)。
- 处理结果:将查询结果进行后续的数据清洗、转换和写入操作。
通过这种方式,我们能够高效地从MySQL数据库中获取所需的数据,并进行进一步处理。这不仅提高了数据集成的效率,也确保了每个环节都透明可控。
以上就是关于如何在轻易云数据集成平台中调用MySQL接口select
获取并加工数据的详细技术案例,希望对您有所帮助。
轻易云数据集成平台ETL转换配置案例:金蝶云星空API接口
在数据集成的生命周期中,ETL(提取、转换、加载)是关键步骤之一。本文将详细探讨如何使用轻易云数据集成平台,将已集成的源平台数据进行ETL转换,最终写入金蝶云星空API接口所能接收的格式。
API接口配置
首先,我们需要配置金蝶云星空API接口。根据提供的元数据配置,我们可以看到以下关键字段和参数:
- api: "batchSave"
- method: "POST"
- idCheck: true
- operation:
- rowsKey: "array"
- rows: 1
- method: "batchArraySave"
这些参数定义了我们将使用POST方法调用batchSave
API,并且在操作时会检查ID。
请求参数配置
接下来是请求参数的具体配置,这些参数决定了如何将源平台的数据映射到目标平台的数据结构中。以下是主要字段及其对应关系:
-
FBillNo(单据编号)
- 类型:string
- 描述:单据编号
- 值:{{入库单号}}
-
FBillType(单据类型)
- 类型:string
- 描述:单据类型
- 值:"SCRKD01_SYS"
- 解析器:ConvertObjectParser, 参数:"FNumber"
-
FDate(日期)
- 类型:string
- 描述:日期
- 值:{{日期}}
-
FPrdOrgId(生产组织)
- 类型:string
- 描述:生产组织
- 值:
_function case '{{供应组织}}' when 'T01.01' then 'T01.06' when 'T04' then 'T04' else '' end
- 解析器:ConvertObjectParser, 参数:"FNumber"
-
FStockOrgId(入库组织) 与生产组织类似,同样需要根据供应组织进行条件判断并转换。
-
FOwnerTypeId0(货主类型)
- 类型:string
- 描述:货主类型
- 值:"BD_OwnerOrg"
-
FOwnerId0(货主) 与生产组织类似,需要条件判断并转换。
-
FDescription(备注)
- 类型:string
- 描述:备注
- 值:{{生产订单号}}
-
FWorkShopId(生产车间) 根据供应组织进行条件判断并转换。
明细字段配置
对于明细字段,我们需要特别注意数组类型的处理方式。以下是明细字段的一些关键配置:
-
FInStockType(入库类型)
{"field":"FInStockType","label":"入库类型","type":"string","describe":"入库类型","value":"1"}
-
FIsNew(是否新增)
{"field":"FIsNew","label":"是否新增","type":"string","value":"false"}
-
FProductType(产品类型-1主产品 2联副产品)
{"field":"FProductType","label":"产品类型-1主产品 2联副产品","type":"string","describe":"产品类型-1主产品 2联副产品","value":"1"}
-
FMoEntryId(生产订单分录内码)
{"field":"FMoEntryId","label":"生产订单分录内码","type":"string","describe":"生产订单分录内码","value":"_findCollection find FTreeEntity_FEntryId from 10e0ff3a-25f4-31e0-acbc-6e462ae4fdb8 where FBillNo={{生产订单号}}"}
-
FSrcBillType(源单类型)
{"field":"FSrcBillType","label":"源单类型","type":"string","describe":"源单类型","value":"PRD_MORPT"}
-
FSrcEntryId(源单分录内码)
{"field":"FSrcEntryId","label":"源单分录内码","type":"string","value":"_findCollection find FEntity_FEntryID from a515bce3-b680-3906-8f45-50e1c488da3b where FMoBillNo={{生产订单号}} FBillNo={{入库单号}}"}
-
FMustQty & FRealQty (应收数量 & 实收数量)
{"field":"FMustQty","label":"应收数量","type":"string","describe":"应收数量","value":"{{入库数量}}"} {"field":"FRealQty","label":"实收数量","type":"","describe":"","value":""}
最终请求结构
通过上述字段的映射和转换,我们可以构建最终的请求结构,以便发送到金蝶云星空API接口。以下是一个简化示例:
{
"FormId": "PRD_INSTOCK",
"Operation": "BatchSave",
"IsAutoSubmitAndAudit": true,
"IsVerifyBaseDataField": true,
"Model": {
"FBillNo": "{{入库单号}}",
"FBillType": { "FNumber": "SCRKD01_SYS" },
...
"FEntity": [
{
"FInStockType": "1",
...
}
]
}
}
通过这种方式,我们能够确保数据从源平台经过ETL处理后,准确无误地写入到金蝶云星空系统中,实现不同系统间的数据无缝对接。