如何进行数据探察
对于数仓操作,数据探察是很重要的一步,为了获得数据库的数据情况,了解数据分别和数据数值以及数据库运行情况
充分了解库表情况,从数据入手,知道数据的前世今生,对于进行接下来的工作尤为重要。
数据探察最直接的方式就是使用SQL查询表数据,得到数据的类型、数据分布、空值情况、数值占比等等
一、数据探察内容
数据探察的内容大概可以总结为以下几种:
1. 模型信息:
可以从数据表名、数据来源、数据生命周期、粒度这些入手
2. 字段分类:
字段术语维度属性、文本、主键、关联键、时间等等
3. 字段名:
表中原始的字段名
4. 字段类型:
表中原始的字段类型
5. 字段含义:
字段代表的含义,比如:job_id,就是任务标识号
6. 字段数值:
每个字段的数值,如果有一些字段是字符代表的,数值代表含义比如1和0等,配合下一项使用
7. 取值说明:
数值的取值,数值所占的比例,给出可测的数值的比例,就是有很多代表的,比如只有1和0这种,如果三千条数据,有三千个值,就不需要
8. 数据量:
每个字段有多少行数据,注意:空值和null是不一样的
9. 去重后的数据量
对于重复数据的统计
10. 无数据统计:
字段中无数据占有的行数
11. 非空值占比:
字段数值的占比情况,了解该字段的数值分布
12. sample1、sample2:
给出两个样本数据
13. 待确定问题:
如果对于某个字段不明确,需要和建表人确定
二、数据探察过程操作
知道了数据探察的内容,就需要考虑数据探察的过程怎么进行
首先1、2、3、4、5点是毋庸置疑的,数据表的基础信息
第6点一般在建表中的表描述都有说明,若没有说明,可以在字段数据量的统计中自行思考
第7点:
取值说明就需要对数据进行计算,比如某个字段,有8个数值,我们就需要得出这8个的具体数值是什么,并且求出其所占比例
select column
,count(*)
from table_name
group by column; -- 探寻某个字段的取值和值数量
select column
,count(*)/总量
from table_name
group by column; -- 探寻某个字段的取值和值数量占比
第8点:数据量问题
select count(column)
from table_name; -- 得到某个字段的总数
注意:这里可能会有疑问,这样求得的字段总数应该都是一样的。这个想法当然没问题,如果存在null,则不会记录在count中,但是空值的话就会记录在count中,所以空值和null是不同的
第9点:去重后的数据量
了解字段数据的重复情况,可能存在大量的重复数据,去重操作
select count(*) -- 去重后的数据量
from (
select distinct column
from table_name
) t;

打开网易新闻 查看精彩图片

第10点:空值统计,这种情况可以使用if和sum的组合
select sum(if(name="",1,0) -- 空值赋予1,非空赋予0,求得的和就是空值的数据量
from table_name;
第11点:非空值占比
在上一步已经求出了空值个数,那么求得非空值占比也是一样的道理
第12点:两个样本数据
这个就直接查询出两个数据就可以了
select *
from table_name
limit 2;
第12点:如果对于探察的过程中,有某些字段存在疑问,可以在后面注明
最后,给出一行探察示例
总之,数据探察是为了充分的了解数据,怎么能够快速充分了解,就怎么探察,可以根据需要增加探察内容,比如对于关联字段,还可以接着往下探察,与哪张表进行关联,关联之后得到的数据表又是哪张。