什么是空值以及空值是什么产生的?
1.1 什么是空值?
空值在原始数据当中以null的形式显示,如果你不熟悉这个设定, null并不是一个值,而是系统必须显示点什么让你知道这是一个空值。
null是数据中最常见的空值形式,对空值的处理是也是每个Tableau使用者的必修课之一。 空值就是在一个Table当中某个cell没有值。
空值是如何产生的?
- 第一种是作为原始数据,它没有被录入到系统中
- 第二种往往来源于join. 比如你有一个customer的ID,但是这个customerID并没有出现在另一个customer的表中,当你把这两个表进行join的时候,自然就找不到有关这customer的其他信息。
- 第三种来自于计算,如果我们使用除法,然后分子是0或者是null,那么用任何数除以0所得到的都是空值
比如你输入一个产品的信息,但是你不知道来自于供应商的哪个工厂,在factory这一栏你就没有填入任何信息,那么这个产品的factory在数据里就是空值。
2. 为什么我们需要特别警惕空值?
Tableau与其他编程语言一样,涉及null的计算都需要注意因为如果计算的过程当中包含了null那结果也是null。换句话说,1 + null = null 不等于0.
null 不会被计入到COUNT当中,假设我们有一个表格, 如果想要知道有多少个Customer,一般会COUNT([CustomerID]) 而[Customer ID]当中有一旦有null的话,那一行就会被跳过
3. 怎么解决null的问题?
Tableau里提供了一个叫ZN( )的函数,它的多用是将一个column里边的null值来转化为0. 我在这里停顿五秒钟,你思考一下, 为什么这个将null转化成0的函数叫ZN( )呢,如何确保你下次想起来这个函数的时候,能记得它叫ZN( )呢? 在所有的学习过程当中,理解之后,在使用的时候能够记住也是极为关键的。
思考一秒钟。。。
思考两秒钟。。。
思考三秒钟。。。
思考四秒钟。。。
思考五秒钟
时间到
好了,时间到。 ZN是Zero if Null的缩写,所以是ZN( ) 你记住了吗?如果你熟悉SQL, COALESCE( )函数有点跟它的功能类似。
如果你使用的数据当中某个column有空值,养成习惯,先创建一个用ZN( )函数转换过的column,然后用转换过的column来创建所有的计算,这个能避免你在后边去单独修改每个计算。
你以为这一课到这就完了吗,天真。
4. 空字符 Empty String
空字符和空值这俩绝对是卧龙凤雏。空字符是指你说它不是一个字符吧,人家可是正经的字符变量,你要说它是字符吧,它里边毛都没有。
跟null类似,有时候就是这个column创建了,但是就是什么都没输入进去,比如让你填表的时候,你一下看到一栏叫精神面貌,这下你楞住不知道该填啥了。你狠狠思索,要不填个少先队?但是你犹豫了,决定先缓一缓。就在此时,你的这个操作就产生了一个空字符。
空字符和空值是不一样的,空值有时候反而有奇效。你的骚操作离不开他
在字符那一课我讲过,一个字符串可以理解为一个个单个字符的集合,那如果你想让哪一个字符piu~一下的消失,你能拿个橡皮上手就给它擦了么,你不能。
你唯一能做的就是用一个空字符来取代它,告诉那个字符: 对不起,你被这个空字符给优化了。这是一种非常常见的数据清洗思维。 咳咳,这是知识点,可能考嗷
空字符,如果用一个表达式输入的话就是两个单引号: ‘ ‘
5. 消失的她
不少同学看到这个标题立刻精神一振。我要是不用这个标题,估计你们肯定已经开始溜号了.
请听题:公司让我们计算“几年平均每台卡车一年交多少罚款”。你手里有一张表,列着车牌号和今年已交的罚款。此刻你要做什么?马上算平均吗?等五秒钟。
1s... 2s... 3s... 4s... 5s 时间到。
你该先问:这张表包含公司所有卡车吗?那些全年守规矩、零罚款的“文明司机”在不在表里?难道每个司机每年一定都会被罚吗?
如果里边只有10台卡车的罚款, 但是全公司的车队有100卡车, 我们的计算是不是应该把这一百台卡车都包括在内?
数据从来不止是“看得见的”。还有那位“消失的她”。你的计算,真的把她算进来了吗?所谓“消失的她”,不是某个高深的技术点,而是一种数据分析师的基本素养与警惕:很多问题必须把“没出现的数据”与其他数据一起思考。只有这样,结论才站得住。