数仓中的粒度初级篇
数据粒度
对于Data Warehouse的数据模型建设,我们逃离不了的一个话题就是粒度,而Kimball的建模四部曲中,至关重要的第二步,就是确认粒度,那么粒度,到底是什么?这个模糊的概念对于初学者非常的不友好,不友好在抽象,太抽象,很难去深刻理解这个概念。而我们在真正的工作中,对于粒度,我有以下几个CASE,方便读者能够深刻理解。今天我们就用大白话,手撕粒度。
首先是数据粒度:什么是数据粒度,数据粒度准确的描述,就是确定数据惟一。在一个表中,我查找ID,ID是唯一,那么这个粒度就是ID,什么是唯一,就是ID不存在第二条一样的,这就是唯一。
SELECT
*
FROM 表1
-- ****************** --
结果:
USERID 姓名 成绩
1 李四 5
2 李四 6
3 张三 5
以上的CASE,我们会发现,USERID是唯一的,其他都是不唯一的,那么这个表1的粒度就是USERID。其实粒度有多种多样的,但是他们的目的很简单,就是可以让一条数据,代表的含义更明确,粒度是数据的辅助,可以这样理解。
再比如,订单表,一条数据代表的是一个订单,那么订单表的粒度,就可能是以子订单ID为粒度,保证数据唯一。
再比如,商品维度表,一条数据代表了一个商品的详细信息,那么这个表的粒度有可能是SKUID粒度的(商品ID粒度的)。
再比如,我一条数据代表的是SKU在坑位(秒杀、万人团等活动)下的数据样貌,那么我们这张表的粒度为 SKU + 坑位。为多重粒度表。
说穿了,粒度的制作