KDT#53 给维度添加描述属性
在维度建模时,我们会尽力在维度表中添加描述性的字段。我们在维度表中添加的描述性的属性越多,用户在进行分析和出报表时就会越灵活。在大型的客户维度表中尤其如此。
在进行维度建模时,我们不应该将一些业务逻辑留给分析工具去完成。比如一些经过业务逻辑处理才能得到的派生数据,应该在ETL层就完成,这样才能保证数据的一致性,无论使用任何工具都可以。如果这步在分析工具中完成,不同人有可能会建立起不同的业务逻辑,导致数据的不一致。这段描述中的派生数据其实主要说的是事实表,但象客户维度这样的大维度表也会有同样的数据。
像客户维度这样的可能拥有百万条数据的维度表来说,用户如果提出要跟踪感兴趣的属性的变化的话会比较麻烦。通常的TYPE 2缓慢变化维(slowly changing dimension)技巧在这么大的维度表面前变得不太合适。这时通常会建立微型维度(mini-dimension)来解决这个问题。有关微型维度需要单独写一个日志来进行描述。
还有一个需要给维度添加的描述性属性是聚集好的度量值,比如“去年购买量”等汇总值。这样的值我们在把它放入事实表的同时,也可以把它放到维度表中给用户作为报表的标签项或过滤条件使用。要小心的是在Staging Area汇总这些值时要保证数据的准确性和一致性。这些值也可以进行分组后保存到维度表,因为毕竟离散值对分组等操作不太方便。
总之,我们要尽量在Staging Area把描述性信息准备好,放入维度表,尽量多向维度表添加描述属性,这样有利于用户分析的方便性和一致性。