需求背景
数据探查上线之前,数据验证都是通过写 SQL 方式进行查询的,从编写 SQL,到解析运行出结果,不仅时间长,还会反复消耗计算资源,探查上线后,只需要一次探查,就可以得到整张表的探查报告,但后续我们还发现了一些问题,主要有三点:
-
无法看到探查的数据明细以及关联的行详情,无法对数据进行预处理操作。
-
探查还是需要资源调度,等待时长平均分钟级。
-
与质量监控没有打通,探查数据的后续走向不明确。
针对这些问题,我们进一步开发了动态探查需求,解决的问题如下:
-
基于大数据预览的探查,支持对数据进行函数级别的预处理。
-
探查结果秒级更新,实时响应。
-
与数据监控打通,探索 SQL 的生成模式 。
本文主要介绍动态探查的应用场景和相关的技术实现。
应用场景
探查主要应用在元数据管理,数据研发,数仓的开发以及数据治理,可为对数据质量有需求的场景提供数据质量的发现和识别能力。目标用户除了研发同学,也包含不是以 SQL 研发为主的群体,比如算法建模和数据挖掘等领域。
探查可以有效的打通三个闭环:
-
元数据管理 -> 探查 -> 数据预览探查(库表的质量报告)
-
数据监控 <-> 数据探查
-
动态探查 -> SQL -> 数据开发 -> 调试 -> 探查报告(质量分析)
名词解释
-
全量探查:基于库表的全量探查,后端引擎执行,展示探查后列的统计分布结果。
-
动态探查:基于抽样的部分数据探查,展示字段明细,可以使用操作对数据进行预处理,并实时动态的展示统计分布结果。数据获取后的过程都由前端执行。
两者的对比示意图
技术实现
除了数据的抽样部分在后端做,其他的都是前端实现的。包括大数据展示,探查计算,卡片联动,操作栈交互,以及未来要做的函数编辑器以及 SQL 生成。
技术架构
-
抽样能力:对数据进行基于质量分布特征的抽取。
目前做的是随机抽样,后续尝试基于特征来抽样。
-
数据展现:大容量的数据载体,支持对数据处理的实时展现。
前端目前是基于虚拟滚动 Table 做的,后续打算迁移到 canvas table 上。
-
前端探查:实时