时间:2023-01-19 | 标签: | 作者:Q8 | 来源:网络
小提示:您能找到这篇{数仓避坑:想清楚维度}绝对不是偶然,我们能帮您找到潜在客户,解决您的困扰。如果您对本页介绍的数仓避坑:想清楚维度内容感兴趣,有相关需求意向欢迎拨打我们的服务热线,或留言咨询,我们将第一时间联系您! |
数仓系列的文章,写到了第三篇,终于开始聊维度了。 维度,这个词非常常见,但也抽象。在数仓、数分场景里,维度到底是什么?来看看这篇吧。 一、维度是什么不懂就问,维度是什么?我们学习的自然反应,自然是去查阅专业资料。 1)阿里dataphin产品简介——基本概念是这样介绍维度:人们观察事物的角度,是指一种视角,是确定事物的多方位、多角度、多层次的条件和概念。 2)华为DGC产品介绍——基本概念如此介绍维度:维度是用于观察和分析业务数据的视角,支撑对数据汇聚、钻取、切片分析,用于SQL中的Group by条件。多数维度具有层级结构,如:地理维度、时间维度。 3)再看看《数据仓库工具箱》怎么说的。 维度能提供围绕某一业务过程所涉及的 “谁、什么、何处、何时、为什么、如何” 等背景。维度表包含BI应用所需要的用于过滤及分类事实的描述性属性。 牢牢掌握事实表的粒度,就能够将所有可能存在的维度区分开。当与给定事实表进行关联时,任何情况下都应该使维度保持单一值。 4)再看《阿里巴巴大数据之路》怎么说的。 维度是维度建模的基础和灵魂。在维度建模中,将度量称为 “事实” 将环境描述为 “维度” ,维度是用于分析事实所需要的多样环境。 例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。 维度所包含的表示维度的列,称为维度属性。 维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。维度的作用一般是查询约束、分类汇总以及排序。 不知道你第一次看到这些解释作何感想,我的真实的反应是:对方好好地给我讲人话,为什么我听不懂。 说实在的,这些解释,非常专业,也很硬核,但理解起来是有点困难的,没怎么接触过数据的伙伴估计有点懵。 二、维度怎么来的维度,到底是什么呢?为什么它叫维度呢? 学习新知识的时候,并不只要看权威的书,任何能给你启发、能帮助你理解的书,都是好书。 一本书看不懂,多换几本看看,要是看完还不懂,那就尝试回归本质吧。 让我们先忘掉维国外社交媒体营销案例度模型,忘掉数据,忘掉维度。 来,一起玩个游戏快问快答游戏:在30秒内说出尽可能多的筷子、勺子的相同点和不同点。 看到这个问题,你会如何描述、对比它们呢? 思考过后,我给你加个条件。问题变成:筷子和勺子在使用方式上的相同点和不同点是什么? 看到新问题,你内心是不是有点方向了,觉得更容易回答了? 这其实是《大象Thinking in UML》里面一个有意思的互动测试,当时我看到这个问题,脑子非常混乱,一时词穷,相同点和不同点我没说出来多少。一方面平时观察得少,另一方面,抽象训练得也少。 作者说:这个问题没有标准答案,这个问题反映你是否会从抽象的方法去看待事物。在不知不觉中,每一组相同点和不同点都来自于你的一个抽象角度。 例如,当从用途的角度去抽象时,他们的相同点是三者都是餐具,而不同点是筷子用于夹,勺子用来舀;从字面上理解,他们都来带了“子”,还有其他的相同、不同点就不多说了,重点是这句:从不同的抽象角度可以得出非常不同的结果。 作者还说,抽象角度的不同,决定了建模方向的不同。我之前讲过什么是建模吗?描述一个东西,就是在建模。 为什么给出分类后,会更容易回答。因为找到了合适的对比分析的角度,问题就会简单很多。 什么是维度,再看看这句话:维度就是观察事物的角度。维度是抽象的对客观事物的描述。 维度本不存在。是人类观察事物、分析问题、分类归纳得来的,每个人都可以创造自己的维度。 维度一直都存在。只是我们发现了它,用某种方式描述了它。 三、维度和粒度的关系上一篇文章,讲过粒度,那么这里就要将维度和粒度联系起来学习。 1)维度有层级结构,不同层级对应不同的粒度。 地理维度有不同的层级:国家、省/自治州/直辖市、市、县,时间维度也有不同的层级和粒度:年度、季度、月度、星期、天等。 正如有了要描述的事情,确定了粒度,再去找对应的维度。比如,订单系统,会记录下单的时间信息,时间维度上,粒度会细到秒。学籍系统,学生户籍信息中,要填入地区维度的信息,粒度要细化到省市。 2)维度的组合越多,粒度越细细 客观的世界,是多维的。描述一个客观事物,维度(通常配合相应的度量)越多,粒度越细。 比如一个箱子,我们可以描述其长宽高,还可以描述颜色。不同描述维度组合越多,粒度越细,描述也越细致。 3)随着事物的变化,描述的维度可以增加 一个箱子会经历生产、运输、送货上门等环节,从产地送达到顾客手中。 箱子被生产出来后,没有品牌、产地属性,或者说属性值为空。未经历运输过程的箱子,没有快递公司、配送员属性。 但是人们可以赋予它这些维度,并且填入维度值。维度是基于人类描述客观事物的需要,被创造来的。 4)有的维度福建头条百科词条价格,没有直接的数字度量 从客观唯物主义的角度来说,某个实体的存在,长、宽、高这种比较客观的维度属性,是有确定值的。 但某些主观的东西,也是需要被描述的。比如,人的帅气程度。我们就简单分两类:很帅、一般。 这种主观的维度,没有绝对精确的度量值,无法直接和数字划上等号。 但聪明的我们依然可以定性、定量地测算进而描述。比如搞投票,得分超过90为很帅,60-90为一般。 但这种方式,只能估算,没有四海皆准的定值,不同的人群,投票结果不同。 四、两个有意思的维度问题上面我提到的两本经典书籍里,介绍了非常多维度的问题。这里我只说自己碰到的 2 个我思考很久的问题。 1)维度的角色 维度模型里,很多人不理解什么是维度角色。包括最开始的我自己。 淘宝的业务过程大家应该很熟悉,涉及4个关键步骤:买家下单、买家付款、卖家发货、买家确认收货。 每个过程,都会涉及一个对应的时间,即下单时间、支付时间、发货时间、确认收货时间。 如果只分析其中的一个业务过程,比如买家下单,那只需要一个时间字段即可。 但是分析完整四个过程时,如果还只有一个时间字段,那如何区分其具体含义呢?到底是下单还是支付时间,搞不清楚。 只有一个字段,肯定不够。那必然要有 4 个时间字段。而且我们会给不同的命名,下蛋白粉的销售卖点单、支付、发货、确认收货作为时间的前缀。 这样一来,咱们看的人是能理解各个数字的含义了。但不仅如此,还得让计算机系统也理解。 所以,要弄一个 “维度角色”的字段来标识,以便计算机能理解。 在写SQL脚本的时候,Left join 相同的维度表两次,要给维度表取别名,这样才不会报错。 2)维度和One data 理论的关系 当我在研究华为的DAYU(现在叫做DGC)产品时,我发现,基于指标生成的SQL,都是 left join 维度表 on 维度表的主键,而且是 group by 维度表的主键。 当时没时间仔细研究,先抄了作业。 后续就碰到不少同事提出疑惑:为什么要如此设计?日期维度表里,还有周、月、年等字段,为什么不能支持按照这些字段进行 group by,一定只能按照维度表的主键的粒度进行汇总? 当我站在数仓层的时候,我无法回答,因为传统数仓,把维度模型建出来就好了。但当我跳到第二层 One data 理论的时候,我仿佛了解了一些(我也不确认自己是否完全懂了)。 我的体会就是:维度表就代表着一种粒度,基于相同统计粒度的指标,才能聚合到同一个表中。 从 SQL 的角度来看,都按照某个维度表主键进行 group by 的指标,能合并到一个表里面,最终能基于维度表的主键,将维度表的非属性字段也冗余到表中。 关于维度,还有很多,缓慢变化维、层次维度、杂项维度等等问题,大家可以自行看经典的书籍或找高人求教~ 五、总结正如书籍里面所说,维度模型的灵魂,就是维度。 之前看《幕后产品》书中提到陆游的一句诗:汝果欲学诗,功夫在诗外。 学习维度,也是如此。知识不是孤立的,搞清楚维度,要联合粒度、事实等模块去理解,必要的时候,还要结合生活。 本文仅记录自己学习维度模型、实践过程中所踩的坑。如有错误,请各位指教。下一篇,将会分享维度模型中的“事实”。
作者:lee;公众号:乐说乐言 本文由 @lee 于,, ,基于 CC0 协议 |
上一篇:够清楚!用户分层与RFM模型可以这么做
下一篇:自废武功!我再也不当「数据分析师」了
小提示:您应该对本页介绍的“数仓避坑:想清楚维度”相关内容感兴趣,若您有相关需求欢迎拨打我们的服务热线或留言咨询,我们尽快与您联系沟通数仓避坑:想清楚维度的相关事宜。
关键词:1年, 初级, 数仓,