基于Superset的智能汽车维修可视化平台设计
作者: 王俊伟 王琦
关键词:智能汽车;维修管理;数据可视化;Superset;ECharts
中图分类号:TP311 文献标识码:A
文章编号:1009-3044(2024)25-0055-03
0 引言
随着汽车智能化和网联化的发展,车辆产生的数据呈现爆炸性增长[1],随之面临的数据管理挑战日益凸显。传统的手动处理方式已无法满足现有汽车维修数据管理的需求,特别是在数据处理、分析以及图表可视化方面[2]。例如,在清洗大量的故障描述、维修过程、更换零部件等维修记录数据时,传统的处理方式不仅会导致工作效率低下,还可能影响维修服务的及时性和准确性。在可视化方面,传统数据可视化方式主要依赖于图表和报表等形式,展示形式相对单一且缺乏交互性,这种展示方式难以满足用户对于直观、便捷、交互性强的数据展示需求。为解决上述问题,本文提出一种基于Superset的智能汽车维修可视化平台,旨在实现海量维修数据的高效管理、深度分析及直观可视化。
1 平台架构及功能
1.1 平台架构
该大数据可视化平台主要由数据源、数据处理、数据可视化三部分组成,平台架构图如图1所示。
1) 数据源:数据源主要来自维修管理系统数据库。对源数据进行清洗和预处理,如识别并处理缺失值、异常值、重复值等,然后通过自动化脚本将数据同步到数据中台。
2) 数据分析:通过Python数据分析工具,主要使用Pandas和NumPy模块,将源数据按照业务分析需求进行数据分析、计算及整合,整理为可供可视化模块使用的数据。
3) 数据存储:将第二步中处理好的数据存储到MySQL中间数据库,作为可视化展示的数据源。
4) 数据可视化:二次开发Superset开源可视化工具,引入ECharts库,实现数据的可视化。可视化展示包含零部件库存管理、车辆信息管理、故障诊断与预测、维修记录管理可视化模块,每一部分对应一个看板页面,网宿详见1.2小节的功能模块。
1.2 功能模块
1) 车辆信息管理可视化模块:展示车辆的基本信息,如车型、车牌号、发动机号等,方便维修人员快速了解车辆情况,并可根据车型、时间等不同维度筛选查询。
2) 故障诊断与预测可视化模块:提供了丰富的图表类型,如饼图、柱状图、折线图、地理空间图、气泡图等。并通过引入ECharts图表可实现切片的下钻。
例如,维修人员首先进入故障诊断模块,看到的是一个汇总了车辆各系统状态的仪表盘或总览图。在这个视图中,可能会显示发动机、变速器、制动系统等多个关键系统的状态,此为第一层:系统级。点击发动机,即进入发动机的详细视图,此为第二层:子系统级,在这里,可以看到燃油泵、喷油嘴、燃油压力传感器等关键部件的状态和性能参数。点击喷油嘴,即进入该部件的详细信息,此为第三层:部件级。
3) 维修记录管理可视化模块:提供一个综合的仪表盘视图,展示关键指标和统计数据,如维修进度、费用概览、故障类型分布等。这有助于管理人员快速了解维修状况。
4) 零部件库存管理可视化模块:实时监控零部件的库存情况,避免缺货或积压现象的发生。通过图表(如柱状图、折线图)或数字面板,实时展示各类零部件的库存数量,帮助管理者快速了解库存状况。
2 关键技术
1) Superset:一个开源的、现代化的、轻量级的BI 大数据可视化工具[3],支持多种数据源、提供丰富的可视化图表模板、支持自定义仪表盘和报告。Superset 是此大数据可视化平台的核心,所有可视化看板均在此平台完成。但Superset不支持图表的下钻功能,须引入ECharts可视化库进行二次开发。
2) ECharts:一个开源的JavaScript可视化库[4],提供了丰富的图表类型,并拥有图表下钻功能。
3) Jenkins:Jenkins是一个持续集成工具,可定时执行任务、监控构建和部署过程中的异常情况等。在此平台中,在Jenkins上部署数据源和数据分析模块任务,定时执行同步数据。
3 大数据可视化平台开发
大数据可视化平台开发主要包括4个步骤,如图2所示。
3.1 搭建中间数据库
为了不影响源系统的正常使用,设计一个中间数据库存储源数据。MySQL开源免费,且可以跨多平台运行、安全稳定,因此用MySQL搭建一个中间数据库。利用Jenkins定时执行Python脚本,实现汽车维修管理系统数据同步到中间数据库。
3.2 数据处理与分析
针对原始数据量大、关联性强等特点,Superset可视化工具在分析处理时耗时较长,因此,在可视化前需要对原始数据进行缺失值、异常值、重复值等清洗处理,并根据业务需求对数据进行计算分析处理。本设计使用Python对源数据根据业务需求按不同维度进行处理,并将处理好的可进行可视化的数据存入数据库。
3.3 数据可视化工具开发
Superset可视化工具功能强大,但可视化图表类型受限,且没有图表下钻功能。因此,本设计在Super⁃set中集成ECharts,从而丰富Superset的图表类型的同时,增加图表下钻功能。具体实现方法如下:
步骤1:Superset 接入ECharts 图形,并引入点击事件。
步骤2:用引入的ECharts图形做切片,在要点击的切片parameters 中增加:"jump_to_slice_id":"slice_id"键值对,其中,slice_id为要跳转到的切片id。
步骤3:处理点击事件,根据步骤2中设置好的跳转切片id,访问开放获取form_data的接口得到对应的数据form_data。
步骤4:处理点击事件,根据步骤3的form_data和原切片中的filter信息,拼装要跳转切片的访问地址,跳转到对应的切片。
在步骤1中,Superset接入ECharts图形,最关键的部分为:
1) 在Superset源码viz.py中添加获取图表数据的方法,可根据参数正常获取数据。
2) 在visualizations下增加ECharts图表的可视化js文件,此文件内容主要包括:①根据1) 中获取的数据,做适应于ECharts图形的参数处理;②处理点击事件,即根据步骤3获取form_data信息和步骤4拼装跳转切片访问地址。
在步骤3 中,core.py 中封装了根据切片id 获取form_data的方法,但没有对应的访问接口可以获取,因此最关键的是增加@expose‘( /query_form_data//′),将该方法的访问注册到这个地址上,可以通过访问http://ip: port/superset/query_form_data/slice_id/的形式获取到想要的参数“form_data”。
在步骤4 中,根据当前切片的数据fd、payload.form_data,判断是否有filterbox的条件,从而重新生成跳转切片的adhoc_filters进行跳转,即带原始切片的filter信息跳转。
3.4 可视化看板开发
将3.2中处理好的中间数据库接入Superset可视化平台,根据业务需求,设计多维度数据可视化切片,并将相同业务层或维度的切片组合为一个看板。可视化展示共包含4个看板:零部件库存管理、车辆信息管理、故障诊断与预测、维修记录管理可视化模块。根据后续的需求可对看板数量及内容做对应调整。
4 总结与展望
本文基于Superset+ECharts+Jenkins+MySQL 技术,实现了智能汽车维修管理系统数据的高效管理及直观的数据展示功能。通过数据的分析及挖掘,帮助用户精准预测故障、优化资源配置,从而促进决策支持,制定更加科学合理的战略规划和业务决策。
随着维修数据的持续快速增长和维修管理系统的智能化,此大数据平台对数据处理及存储提出了更高的要求。该平台未来可进一步引入大数据技术,使用Hive存储数据表,并基于Kylin计算平台从不同维度预先进行数据立方,并将聚合结果存储到HBase数据库中[5],从而进一步提升平台的处理效率及稳定性。