ETL转换与写入金蝶云星空的技术解析

  • 轻易云集成顾问-胡秀丛
### MySQL数据集成到金蝶云星空的实践案例 在本次技术分享中,我们将介绍如何使用轻易云数据集成平台,将MySQL数据库中的生产汇报单新增数据高效、可靠地集成到金蝶云星空。具体场景为:深圳天一公司的"SHw生产汇报单新增-带料委外全工序"项目。 首先要解决的问题是确保MySQL数据不漏单,并能够高吞吐量写入至金蝶云星空系统。在这个流程中,实时监控及异常处理显得尤为重要。我们通过MySQL接口`select`抓取所需的数据,而后利用金蝶云星空提供的`batchSave` API接口进行批量保存。 为了适应业务需求和数据结构,我们自定义了数据转换逻辑,确保从MySQL拉取的数据能无缝对接进入金蝶云。此外,为避免分页和限流问题影响性能,对MySQL接口进行了优化处理。同时,通过设计精细化的异常检测与错误重试机制,提高整个集成过程的可靠性。 轻易云平台提供了强大的可视化工具,使得整个配置过程更加直观,从而快速定位与解决潜在问题。最后,通过集中监控和告警系统,我们实现了实时跟踪任务状态,有效提高运维效率。这些措施共同保障了此次项目的不间断、高质量的数据流转与整合。 ![电商OMS与ERP系统接口开发配置](https://pic.qeasy.cloud/D32.png~tplv-syqr462i7n-qeasy.image) ### 调用MySQL接口获取并加工数据的技术实现 在数据集成过程中,调用源系统接口是至关重要的一步。本文将详细探讨如何通过轻易云数据集成平台调用MySQL接口select获取并加工数据。 #### 元数据配置解析 元数据配置是实现数据请求与清洗的关键。以下是我们需要重点关注的元数据配置字段: - `api`: 表示我们使用的API类型,这里为`select`。 - `effect`: 该字段表示操作类型,这里为`QUERY`,即查询操作。 - `method`: 该字段表示方法类型,这里为`SQL`。 - `number`和`id`: 用于标识入库单号。 - `request`: 包含主参数对象,用于动态传递查询参数。 - `otherRequest`: 包含主查询语句,用于定义具体的SQL查询逻辑。 #### 主参数对象 主参数对象包含两个重要字段: 1. `limit`: 返回的记录数,默认值为100。 2. `offset`: 数据偏移量,默认值为0。 这些参数允许我们灵活地控制查询结果的数量和起始位置。 ```json "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。" } ] } ] ``` #### 主查询语句 主查询语句是整个数据请求与清洗过程中的核心部分。以下是具体的SQL查询逻辑: ```sql 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('RKB',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 c.out_type='1' and c.matterial_type='4' 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 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_success2 !='1' and a.is_success='1' limit :limit offset :offset ``` 该SQL语句从多个表中联结并提取所需的数据字段,通过条件过滤和动态参数(如`limit`和`offset`)控制返回的数据集。 #### 实现步骤 1. **配置元数据**:在轻易云平台上,根据上述元数据配置进行设置。 2. **编写SQL查询**:根据业务需求编写具体的SQL查询语句,并确保其与元数据中的动态参数相匹配。 3. **执行查询**:通过平台提供的API接口调用功能,执行配置好的SQL查询,获取并加工数据。 #### 技术要点 - **动态参数化**:利用元数据中的动态参数(如`limit`和`offset`),实现灵活的数据分页和批量处理。 - **多表联结**:通过多表联结操作,实现复杂的数据提取和整合。 - **条件过滤**:利用条件过滤(如日期范围、状态标识等),确保仅提取符合业务需求的数据。 以上内容详细介绍了如何通过轻易云平台调用MySQL接口select获取并加工数据。通过合理配置元数据和编写高效的SQL查询,可以实现高效、灵活的数据集成。 ![金蝶云星空API接口配置](https://pic.qeasy.cloud/S18.png~tplv-syqr462i7n-qeasy.image) ### 轻易云数据集成平台与金蝶云星空API接口的ETL转换与写入 在数据集成生命周期的第二阶段,重点在于将已经集成的源平台数据进行ETL(提取、转换、加载)处理,转为目标平台——金蝶云星空API接口所能够接收的格式,并最终写入目标平台。本文将深入探讨如何使用轻易云数据集成平台配置元数据,以实现这一过程。 #### API接口配置 在实现ETL转换过程中,首先需要了解金蝶云星空API接口的配置。以下是一个典型的元数据配置示例: ```json { "api": "batchSave", "effect": "EXECUTE", "method": "POST", "number": "FBillNo", "id": "FID", "name": "FBillNo", "idCheck": true, "operation": { "method": "merge", "field": "入库单号", "bodyName": "items", "bodySum": ["工时", "入库数量"], "header": ["生产订单号", "日期", "入库单号"], "body": ["成品编号", "入库数量", "工时"] }, ... } ``` 该配置定义了API接口调用的基本信息,包括请求方法(POST)、操作类型(merge)以及关键字段(如`FBillNo`和`FID`)。 #### 数据请求与清洗 在ETL过程中,首先需要从源系统提取数据,并进行必要的清洗和预处理。以下是一些关键字段及其配置: - `FBillNo`: 单据编号,通过模板变量`{{入库单号}}`动态赋值。 - `FDate`: 单据日期,通过模板变量`{{日期}}`动态赋值。 - `FPrdOrgId`: 生产组织,通过条件语句 `_function case '{{供应组织}}' when 'T01.01' then 'T01.06' when 'T04' then 'T04' else '' end` 动态解析。 这些字段通过模板变量和条件语句,实现了从源系统到目标系统的数据映射和转换。 #### 数据转换与写入 接下来,我们需要将清洗后的数据进行转换,并按照金蝶云星空API接口的要求进行格式化。以下是一些关键字段及其对应关系: - `FMaterialId`: 物料编码,通过模板变量 `{{items.成品编号}}` 动态赋值。 - `FFinishQty`: 完成数量,通过模板变量 `{{items.入库数量}}` 动态赋值。 - `FHrWorkTime`: 人员实作工时,通过模板变量 `{{items.工时}}` 动态赋值。 这些字段通过元数据配置中的`children`节点定义,实现了对明细行数据的详细映射和转换。 #### 执行操作 最后一步是执行操作,将转换后的数据写入目标系统。以下是一些关键配置: - `FormId`: 金蝶表单ID,必须填写为 `"PRD_MORPT"`。 - `IsAutoSubmitAndAudit`: 是否自动提交并审核,设置为 `true`。 - `Operation`: 执行操作类型,设置为 `"Save"`。 这些配置确保了在数据写入过程中能够自动提交并审核,提高了操作效率。 #### 实际案例应用 假设我们有一条生产汇报单的数据需要写入金蝶云星空,源数据如下: ```json { "生产订单号": "MO20231001", "日期": "2023-10-01", "入库单号": "RK20231001", ... } ``` 通过上述元数据配置,我们可以将该条数据成功转换并写入金蝶云星空系统中。具体步骤包括: 1. 提取源数据,并根据模板变量进行字段映射。 2. 根据条件语句和解析规则,对特定字段进行动态赋值。 3. 调用金蝶云星空API接口,将格式化后的数据发送至目标系统。 通过以上步骤,我们实现了从源系统到目标系统的数据无缝对接,大大提高了业务处理效率和准确性。 以上即为使用轻易云数据集成平台实现ETL转换并写入金蝶云星空API接口的技术案例。希望通过本文的详细讲解,能够帮助读者更好地理解和应用这一过程。 ![金蝶与MES系统接口开发配置](https://pic.qeasy.cloud/T3.png~tplv-syqr462i7n-qeasy.image)