到了这节课,我需要敲敲黑板,所有睡着的同学都给我醒一醒,擦擦口水认真听讲。数据的层级对于后边的学习有着非常非常非常重要的学习意义,尤其是对于Level of Detail(LOD) 更是有着重要的铺垫作用。这一段是个人的经验和理解,你在哪你也听不到

学完这一课你需要能够回答下面三个问题

  1. 什么是数据之间的层级?

  2. 层级的特点

  3. 层级的学习意义

数据之间的层级

层级这个词如果我们拆开,层就说明有很多层,而级就代表着上下级,有高等级有低等级。 我们不需要记住这个概念,更多是需要理解这个概念。

数据中的层级以多种形式出现,这其中有地理上的层级,时间上的层级,组织层级,产品层级,用户层级,供应商层级等等

Country - Region - State - City - Suburb - Address 这叫做地理层级,由于国外经常有地区重名的情况,两个不同的state可能都会有一个相同名字的city,所以你必须知道一个City所在的State才能确定这是哪个city。

Year - Month - Date 这是一个时间上的层级, 某个Date一定属于它所在那一个月,那一年

Company - Department - Team - Employee 这是公司管理结构的层级, 每个Employee有它们归属的Team

Product Category - Product Subcategory - Product 这是一个产品的层级,它属于哪一类

Customer Group - Customer Name - Customer ID 顾客层级 (Customer可能重名,所以Customer ID 在Customer Name之下)

层级的特点

1 层级只会出现在Dimension里边, Measure是没有层级的

2 层级一定是一对多的关系,也就是一个Employee只能归属于一个team,不能是属于多个team。

那么我如果在时间层级上再加上一个新的dimension week,这个week可以简单的加入到 Year - Month - Week -Date么?

答案是错! 同一个week可能属于两个不同的月,同样也有可能属于两个不同的年,所以关于Week的计算要格外小心。

3 不同类型的层级之间互不影响。时间层级不会影响到管理结构层级, 数据是以年计还是以月计与数据是在product这个层级还是在product category这个层级之间毫不相关。

4. 同一个Dimension可以同时出现在不同的Hierarchy Group当中。比如product, 从产品销售的角度,Category - Subcategory - Product是一种Hierachy. 而从供应链的角度 Supplier/Manufacturer - Manufactory Factory - Product 也同样是合理的。

5. 最低等级的Dimension会出现在所有的Hierarchy里。 举个例子,Transaction ID, Invoice ID 这种最低等级的Dimension几乎可以等同于数据集里的Row ID。那这种级别的Dimension你可以将它们放在任何一个层级里,无论是Date Hierarchy,还是Customer Hierarchy其实都可以。

层级的学习意义

1. 如果你对自己所使用的数据层级了解的不够深,你就会不停的犯错,一而再,再而三的犯错。缺乏层级思维所导致的后果会贯穿你在Tableau当中工作的整个过程。而且你会毫无察觉

下面让我们看看如果缺乏层级思维,你是如何犯错的

‘假设你的Manager要求你算出本月消费金额最高的top 10 customer。 你不加思索的把 [customer name] 拖拽到了rows, 然后把sales进行排序。结果最后发现排名第一个客户其实是几个客户销售额的总和,这些客户的名字全都一样,但是Customer ID其实不一样’

‘假设你的Manager让你分析Weekly Sales Trend,但是你发现如果单独看每个月的Weekly Sales, 第一周和最后一周的销售额总是比中间那两个周的销售额少,你百思不得其解’

‘你明明已经把城市名字导入进了Tableau,但是当你画地图的时候,Tableau只是标出了一部分城市,而另一部分城市却告诉你Ambiguous,找不到这些城市的位置,你无法理解为什么’ (如果你没理解这句话是什么意思,我会在Coordinates那课解答这个问题)

2. Hierarchy定义了数据的精度,也提供了解决你需要分析问题和角度和所能达到的深度。是Insightful Report的基础。

一个数据里会有多个Hierarchy Group。 比如日期的Hierarchy Group,比如地理位置的Hierarchy Group, 比如产品的Hierachry Group。每个Hierarchy Group当中的最低等级的那个Dimension,就构成了你的数据的精度,英文有一个词叫颗粒度Granularity,还有一个你未来会经常听到的词,Level of Detail 细节的程度。

而所有Hierachy Group当中最低level Dimension的组合就构成了你dataset的lowest level of detail. 你再下钻也就只能知道这么细了。

3. 意识到数据层级的重要性,就会把默认把识别数据层级作为创建每个Tableau Dashboard之前的必备准备工作。也会时常去检查是否使用了正确的Dimension创建计算。

4. 对Key Dimension Uniqueness的重视。无论是复杂还是简单的Dashboard, 往往有一些dimension是非常重要,那么理解这些Key Dimension的层级首先会影响他们是怎么聚合的,其次还会影响数据模型的搭建。 我们以Customer ID为例,如果想要得到customer的其他信息 比如Memebrship ID, Customer Email 这些信息,往往你需要连结join 其他table来得到,那么使用什么dimention来join, 这些dimension是否有重复是在搭建数据模型 经常容易犯下的错误。如果你有意识的检查你所使用的Dimension处于Hierarchy的什么位置,你就能有效的避免在搭建数据模型时所犯下的错误。

Sample Data Hierarchy of sample store dataset

下边的这个就是一个非常典型的data hierachy的例子。 数据中的每个column如果但从table的layout来看,都是一个挨着一个,大家都是平行的。但是如果看它们的意义你就需要在脑中根据你的数据建立一个这样的结构。你对这个结构越清晰,你在实际开发的过程中,犯的错误就越少。