dataCompare核心功能之数据探针

简介: dataCompare核心功能之数据探针

1.数据探针产生的背景:

数据开发和接入的过程中,数据开发人员接到一个需求或者一条新的业务线可能需要搭建数仓,做数据处理,然后提供一些指标数据给到需求方,如果是你这边会怎么开始呢?

直接开干?抽表,清洗,分层,建模?

然后发现做完之后,怎么数据各种不对,取不到想要的数据,比如说:业务上说明明一个字段为空比例非常少(1%以内),但是加工出来的数据问题非常多?比如说:空值占比接近30%,然后报表显示的结果就各种问题,然后又往上排查发现,原来是别人提供的数据,或者采集的数据有问题

所以一上来开干,这就是瞎搞。啥也不知道不了解的情况下,对数据源一无所知的情况下,是谁给你勇气直接开干的?干完之后返工成本更大

2.正常的数据开发流程:

接到新的数据需求或者任务的时候,最开始应该需要做一下数据调研,即数据探查(也就是标题上提的数据探针),发现数据潜在的问题。

那数据探针到底要探测哪些内容呢?

3.现状

大多数数据开发人员的处理方法:写大量的sql

比如:

总行数据:select count(*) from table_name;

枚举值:select table_column,count(*) as cnt from table_name group by table_column

等等

4.数据探针

(1)低代码、少量配置即可实现探查任务

(2)将数据探测标准化,避免不同的数据开发人员采用不同的探测标准,做标准统一

(3)快速完成数据探测:30秒完成探测任务配置,2分钟出探测结果

5.功能演示

探测任务配置

探测结果详情

探测代码模板

//主键探测模板
public static final String mainTemplateSql = "select count(distinct column) as distinct_cnt," +
            "count(*) as cnt" +
            " from tableName filter";
//空值探测模板
    public static final String emptyTemplateSql = "select count(*) as cnt,column_dict from (\n" +
            "select *,\n" +
            "case when column is null then 0\n" +
            "else 1\n" +
            "end as column_dict\n" +
            "from tableName\n" +
            "filter\n" +
            ")t group by column_dict;";
//枚举值探测模板
    public static final String enumTemplateSql = "select * from (\n" +
            "select count(*) as cnt,column\n" +
            "from tableName\n" +
            "filter\n" +
            "group by column\n" +
            ")t order by cnt desc limit 50;";
//字段长度探测模板
    public static final String lengthTemplateSql = "select len,count(*) as cnt from (\n" +
            "select *,length(column) as len from tableName filter\n" +
            ")t group by len;";
//探测信息配置
String tableName = "";
String mainField = "";
String emptyFields = "";
String enumFields = "";
String lengthFields = "";
String filter = "";


相关文章
|
存储 监控 Kubernetes
『Skywalking』.NET Core快速接入分布式链路追踪平台
📣读完这篇文章里你能收获到 - .NET Core接入Skywalking - 了解Skywalking的整体架构设计 - 了解Skywalking的各项技术指标怎么看 - 生产部署时的坑全跳过 - 感谢点赞+收藏,避免下次找不到~
1011 1
『Skywalking』.NET Core快速接入分布式链路追踪平台
|
7月前
|
Kubernetes 监控 安全
Kustomize 生产实战 - 注入监控 APM Agent
Kustomize 生产实战 - 注入监控 APM Agent
|
7月前
|
数据采集 Web App开发 JavaScript
爬虫技术升级:如何结合DrissionPage和Auth代理插件实现数据采集
本文介绍了在Python中使用DrissionPage库和Auth代理Chrome插件抓取163新闻网站数据的方法。针对许多爬虫框架不支持代理认证的问题,文章提出了通过代码生成包含认证信息的Chrome插件来配置代理。示例代码展示了如何创建插件并利用DrissionPage进行网页自动化,成功访问需要代理的网站并打印页面标题。该方法有效解决了代理认证难题,提高了爬虫的效率和安全性,适用于各种需要代理认证的网页数据采集。
448 0
爬虫技术升级:如何结合DrissionPage和Auth代理插件实现数据采集
|
7月前
|
存储 数据采集 Kubernetes
一文详解K8s环境下Job类日志采集方案
本文介绍了K8s中Job和Cronjob控制器用于非常驻容器编排的场景,以及Job容器的特点:增删频率高、生命周期短和突发并发大。文章重点讨论了Job日志采集的关键考虑点,包括容器发现速度、开始采集延时和弹性支持,并对比了5种采集方案:DaemonSet采集、Sidecar采集、ECI采集、同容器采集和独立存储采集。对于短生命周期Job,建议使用Sidecar或ECI采集,通过调整参数确保数据完整性。对于突发大量Job,需要关注服务端资源限制和采集容器的资源调整。文章总结了不同场景下的推荐采集方案,并指出iLogtail和SLS未来可能的优化方向。
|
5月前
|
数据采集 存储 监控
使用Java构建实时监控和警报系统的最佳实践
使用Java构建实时监控和警报系统的最佳实践
|
JSON Java 数据格式
springboot 集成tlog 实现分布式日志标记追踪
springboot 集成tlog 实现分布式日志标记追踪
1311 0
|
人工智能 监控 Java
SpringBoot实战(十六):集成Skywalking调用链监控系统
SpringBoot实战(十六):集成Skywalking调用链监控系统
817 0
|
监控 Java 关系型数据库
SpringBoot - 构建监控体系01_使用 Actuator 组件实现及扩展系统监控
SpringBoot - 构建监控体系01_使用 Actuator 组件实现及扩展系统监控
354 0
|
设计模式 SQL 缓存
「Java 路线」| 服务发现框架 ServiceLoader | 七日打卡
「Java 路线」| 服务发现框架 ServiceLoader | 七日打卡
361 0
「Java 路线」| 服务发现框架 ServiceLoader | 七日打卡
|
监控 Java API
基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》
在第二章中我们已经可以监控方法执行耗时,虽然它能完成我们一些基本需要,但是为了增强代码的扩展性,我们需要使用字节码操作工具ByteBuddy来帮助我们实现更完善的监控程序。
455 0
基于JavaAgent的全链路监控三《ByteBuddy操作监控方法字节码》

热门文章

最新文章