1. 什么是空值以及空值是什么产生的?

1.1 什么是空值?

空值在原始数据当中以null的形式显示,如果你不熟悉这个设定, null并不是一个值,而是系统必须显示点什么让你知道这是一个空值。
null是数据中最常见的空值形式,对空值的处理是也是每个Tableau使用者的必修课之一。 空值就是在一个Table当中某个cell没有值。
空值是如何产生的?
第一种是作为原始数据,它没有被录入到系统中
比如你输入一个产品的信息,但是你不知道来自于供应商的哪个工厂,在factory这一栏你就没有填入任何信息,那么这个产品的factory在数据里就是空值。

第二种往往来源于join. 比如你有一个customer的ID,但是这个customerID并没有出现在另一个customer的表中,当你把这两个表进行join的时候,自然就找不到有关这customer的其他信息。

第三种来自于计算,如果我们使用除法,然后分子是0或者是null,那么用任何数除以0所得到的都是空值

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. 消失的她

不少同学看这个标题一下就精神了,没错我不用这个标题你们转眼就忘光了。

请听题。假设公司让我们计算,平均每台卡车一年交多少罚款。这时候你拿到一张表,里边列着每个卡车的车牌号和它们今年所交的罚款时,你此刻需要做什么?是直接算平均值么? 思考五秒钟

思考一秒钟。。。

思考两秒钟。。。

思考三秒钟。。。

思考四秒钟。。。

五秒钟时间到。

你此刻需要问的是这个表里包含的是公司所有的卡车么?万一有文明女司机遵守交规没出现在这个名单里呢,难道每个司机每年就一定有罚款吗?数据里其实往往不只是显示在你面前的东西,还有消失的‘她’。你的计算里边真的把所有的情况都想到了么?

消失的她其实并不是一个具体的技术问题而是一个数据分析师所需要具备的一种思维,一种警惕性。有一些数据问题往往要连带着其他数据一起思考。

Customer name Customer ID
a 1
b 2
c 3
d 3
e

我在Excel里边创建了两个column, 分别叫Test 1和Test 2, 然后将这两个column导入到Tableau当中,创建一个计算叫Test 1+Test 2,从我左侧的截图当中你就可以看出Test 1 + Test 2在第二行的结果 = 0。

然而不一样的是,如果我们换一种方式纵向相加,也就是在纵向上,我们把所有来自[Column Test2]的数值相加又会如何呢?
你会发现 3 + null 在Tableau当中会显示3 而不是null.

当纵向聚合的时候,null不会影响计算,但是null如果和其他列进行混合计算,这就会出现巨大的问题