使用轻易云实现ETL转换并写入MySQL数据库的方法

  • 轻易云集成顾问-李国敏
### 旺店通·旗舰奇门数据集成到MySQL的技术分享:从店铺信息查询到BI系统 在本案例中,我们将详细解析如何通过轻易云平台实现旺店通·旗舰奇门的数据高效集成,并将其存储至MySQL数据库,特别是针对API接口`wdt.setting.shop.queryshop`和MySQL `execute`的调用过程。此方案名为“旺店通旗舰版-店铺信息查询-->BI柒哦-店铺信息表”,主要目的是实现对旺店通·旗舰奇门系统中各个商铺数据进行批量抓取、处理并写入到企业内部的BI系统中的关键数据库表。 首先,配置和调用旺店通·旗舰奇门的API接口`wdt.setting.shop.queryshop`是集成过程中最重要的一环。该接口能够提供详细且丰富的商铺信息,但面对大量分页和限流问题,我们需要一个可靠、高效的数据获取机制。采用定时可靠抓取策略,每隔一段时间自动调用API并分批次读取数据,以确保不漏单。 在数据传输方面,高吞吐量的数据写入能力是全流程的保障。我们使用了可视化的数据流设计工具,以直观方式构建起从API数据源经清洗、转换至目标MySQL库的数据管道。这些工具不仅简化了复杂流程,还提高了整体管理效率。 考虑到业务需求多样性,自定义数据转换逻辑变得尤为关键。在实际配置中,通过合理映射对应字段并进行必要格式转换,使来自于不同系统间的数据能无缝衔接。此外,为处理数据质量监控与异常检测,整合了一套中心监控及告警机制,对每一次任务执行状态和性能实时跟踪,及时发现潜在问题并作出反应。 最后,在写入阶段,通过灵活运用MySQL API `execute`来完成大规模批量插入操作,同时实现错误重试机制,对于任何可能出现的问题均有预案,实现高效、稳定地落地存储。 以上步骤皆通过轻易云平台全面配合,使整个生命周期管理趋向完美,有效提升业务透明度与效率。在之后具体方案内容部分会更进一步剖析每一步骤细节及其优势特性应用。 ![用友与WMS系统接口开发配置](https://pic.qeasy.cloud/D16.png~tplv-syqr462i7n-qeasy.image) ### 调用旺店通·旗舰奇门接口wdt.setting.shop.queryshop获取并加工数据 在数据集成的生命周期中,调用源系统接口获取数据是至关重要的一步。本文将深入探讨如何通过轻易云数据集成平台调用旺店通·旗舰奇门接口`wdt.setting.shop.queryshop`,并对获取的数据进行初步加工。 #### 接口概述 接口`wdt.setting.shop.queryshop`用于查询旺店通系统中的店铺信息。该接口采用POST请求方式,支持分页查询,并允许通过业务参数进行精确筛选。 #### 元数据配置解析 元数据配置是调用接口的基础,定义了请求参数、响应结构及其他关键属性。以下是该接口的元数据配置: ```json { "api": "wdt.setting.shop.queryshop", "method": "POST", "number": "shop_no", "id": "shop_no", "idCheck": true, "request": [ { "field": "pager", "label": "分页参数", "type": "object", "children": [ { "field": "page_size", "label": "分页大小", "type": "string", "value": "50", "parent": "pager" }, { "field": "page_no", "label": "页号", "type": int, "value": 1, "parent": pager } ] }, { field: params, label: 业务参数, type: object, children: [ { field: shop_no, label: 店铺编号, type: string, parent: params }, { field: platform_id, label: 平台id, type: string, parent: params } ] } ], delay: 5 } ``` #### 请求参数设置 1. **分页参数**: - `page_size`: 每页返回的数据条数,默认值为50。 - `page_no`: 当前页码,从1开始。 2. **业务参数**: - `shop_no`: 店铺编号,用于精确查询特定店铺。 - `platform_id`: 平台ID,用于筛选特定平台上的店铺。 #### 调用接口 通过轻易云平台,我们可以配置并发送请求以获取店铺信息。以下是一个示例请求: ```json { pager: { page_size: '50', page_no: 1 }, params: { shop_no: '12345', platform_id: '67890' } } ``` 在实际操作中,我们可以根据需求调整`page_size`和`page_no`以控制返回的数据量,并使用具体的`shop_no`和`platform_id`进行筛选。 #### 数据处理与清洗 获取到原始数据后,需要对其进行初步处理和清洗,以确保数据质量和一致性。常见的数据处理步骤包括: 1. **字段校验**:检查返回的数据是否包含预期的字段,如店铺编号、名称、平台ID等。 2. **数据转换**:将某些字段转换为统一格式,例如日期格式、数值类型等。 3. **去重处理**:如果存在重复记录,需要进行去重操作,以确保每条记录唯一。 以下是一个简单的数据清洗示例: ```python def clean_data(raw_data): cleaned_data = [] for record in raw_data: if 'shop_no' in record and 'platform_id' in record: cleaned_record = { 'shop_no': record['shop_no'], 'platform_id': record['platform_id'], 'shop_name': record.get('shop_name', '').strip(), 'created_at': parse_date(record.get('created_at')) } cleaned_data.append(cleaned_record) return cleaned_data def parse_date(date_str): # 假设日期格式为'YYYY-MM-DD HH:mm:ss' return datetime.strptime(date_str, '%Y-%m-%d %H:%M:%S') ``` #### 延迟设置与重试机制 为了提高接口调用的稳定性,可以在元数据配置中设置延迟(delay)和重试机制。例如,在上述配置中,延迟时间设置为5秒,这意味着每次请求之间会有5秒的间隔。此外,可以根据实际情况增加重试次数,以应对网络波动或临时故障。 通过上述步骤,我们能够高效地调用旺店通·旗舰奇门接口获取店铺信息,并对数据进行初步加工,为后续的数据集成和分析打下坚实基础。 ![企业微信与ERP系统接口开发配置](https://pic.qeasy.cloud/S14.png~tplv-syqr462i7n-qeasy.image) ### 使用轻易云数据集成平台进行ETL转换并写入MySQLAPI接口 在数据集成生命周期的第二步,我们需要将已经集成的源平台数据进行ETL转换,并转为目标平台 MySQLAPI接口所能够接收的格式,最终写入目标平台。本文将详细探讨如何使用轻易云数据集成平台配置元数据,实现这一过程。 #### 数据请求与清洗 首先,我们需要从源平台(旺店通旗舰版)获取店铺信息。这一步涉及到对原始数据的请求和清洗,以确保数据的准确性和一致性。在轻易云数据集成平台中,这一步通常由一系列API调用和数据验证规则来完成。我们重点关注的是如何将这些原始数据转换为目标平台(BI柒哦)的格式。 #### 数据转换与写入 接下来,我们进入ETL流程中的关键步骤:数据转换与写入。在这个阶段,我们需要将清洗后的数据按照目标平台MySQLAPI接口的要求进行转换,并最终写入数据库。 ##### 元数据配置 以下是用于配置元数据的JSON示例: ```json { "api": "execute", "effect": "EXECUTE", "method": "POST", "idCheck": true, "request": [ { "field": "main_params", "label": "main_params", "type": "object", "describe": "111", "value": "1", "children": [ {"field":"shop_id","label":"店铺唯一键","type":"string","value":"{shop_id}"}, {"field":"shop_name","label":"店铺名称","type":"string","value":"{shop_name}"}, {"field":"shop_no","label":"店铺编号","type":"string","value":"{shop_no}"}, {"field":"platform_id","label":"平台id","type":"string","describe":"点击查看平台代码表","value":"{platform_id}"}, {"field":"sub_platform_id","label":"子平台id","type":"string","value":"{sub_platform_id}"}, {"field":"contact","label":"联系人","type":"string","value":"{contact}"}, {"field":"province","label":"省份","type":"string","value":"{province}"}, {"field":"city","label":"城市","type":"string","value":"{city}"}, {"field":"district","label":"区县","type":"string","value":"{district}"}, {"field":"address","label":"地址","type":"string","value":"{address}"}, {"field":"telno","label":"电话","type":"string","value":"{telno}"}, {"field":"mobile","label":"手机","type":"","value":{"mobile"}}, {"field":"'zip'','label':'邮编','type':'string','value':'{zip}'}, {'"field':'email','label':'Email','type':'string','value':'{email}'}, {'"field':'remark','label':'备注','type':'string','value':'{remark}'}, {'"field':'website','label':'网址','type':'string','value':'{website}'}, {'"field':'group_id','label':'分组','type':'string','value':'{group_id}'}, {'"field':'account_id','label':'平台的主键','describe': '平台店铺授权时平台有推送对应值则返回,不推送则返回空字符串', 'value': '{account_id}'}, {'"field': 'is_disabled', 'label': '停用标志', 'describe': 'true:停用 false:未停用', 'value': '{is_disabled}'}, {'"field': 'auth_state', 'label': '授权状态', 'describe': '0:未授权 1:已授权 2:授权失效 3:授权停用', 'value': '{auth_state}'}, {'"field': 'auth_time', 'label': '授权时间', 'value': '{auth_time}'}, {'"field': 're_expire_time', 'label': 'refresh_token过期时间', 'value': '{re_expire_time}'}, {'"field': 'modified', 'label': '修改时间', 'value': '{modified}'}, {'"field': 'expire_time', 'label': 'session过期时间', 'value': '{expire_time}'}, {'"field":'created,' label:'创建时间,' value:' {created}} ] } ], "otherRequest":[ { "field": "main_sql", "label": "main_sql", "type": "string", "describe": "111", "value": ` REPLACE INTO setting_shop_queryshop( shop_id, shop_name, shop_no, platform_id, sub_platform_id, contact, province, city, district, address, telno, mobile, zip, email, remark, website, group_id, account_id, is_disabled, auth_state, auth_time,re_expire_time , modified , expire_time , created) VALUES ( :shop_id,:shop_name,:shop_no,:platform_id,:sub_platform_id,:contact,:province,:city,:district,:address,:telno,:mobile,:zip,:email,:remark,:website,:group_id,:account_id,:is_disabled,:auth_state,:auth_time ,:re_expire_time , :modified , :expire_time , :created);` } ] } ``` ##### API接口调用 在上述元数据配置中,我们定义了一个POST请求,包含多个字段,这些字段对应于源系统中的各个属性。通过这种方式,可以确保每个字段都被正确地映射到目标系统中。 例如,`shop_id`字段在源系统中表示店铺唯一键,而在目标系统中也需要保持相同的含义。因此,在配置中,我们直接将其值映射为`"{shop_id}"`。其他字段如`shop_name`, `platform_id`, `contact`等也按照类似的方法进行映射。 ##### SQL语句执行 配置中的`main_sql`部分定义了一个REPLACE INTO SQL语句,用于将转换后的数据插入到目标数据库表中。该SQL语句使用了占位符(如`:shop_id`, `:shop_name`),这些占位符将在实际执行时被相应的数据值替换。 通过这种方式,可以确保所有的数据都能被正确地插入到目标数据库表中,从而实现了从源系统到目标系统的数据无缝对接。 #### 实时监控与调试 在ETL过程中,实时监控和调试是确保数据准确性的关键。在轻易云数据集成平台中,可以通过可视化界面实时监控每个环节的数据流动和处理状态。一旦发现任何问题,可以立即进行调试和修正,从而保证整个ETL过程的顺利进行。 总之,通过合理配置元数据并结合API接口调用和SQL语句执行,可以高效地实现从源系统到目标系统的数据转换和写入。这不仅提高了业务透明度和效率,也为后续的数据分析和决策提供了可靠的数据基础。 ![轻易云数据集成平台金蝶集成接口配置](https://pic.qeasy.cloud/T26.png~tplv-syqr462i7n-qeasy.image)