一、维度是什么

不懂就问,维度是什么?我们学习的自然反应,自然是去查阅专业资料。

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 的指标,能合并到一个表里面,最终能基于维度表的主键,将维度表的非属性字段也冗余到表中。

关于维度,还有很多,缓慢变化维、层次维度、杂项维度等等问题,大家可以自行看经典的书籍或找高人求教~

五、总结

正如书籍里面所说,维度模型的灵魂,就是维度。

之前看《幕后产品》书中提到陆游的一句诗:汝果欲学诗,功夫在诗外。

学习维度,也是如此。知识不是孤立的,搞清楚维度,要联合粒度、事实等模块去理解,必要的时候,还要结合生活。

本文仅记录自己学习维度模型、实践过程中所踩的坑。如有错误,请各位指教。下一篇,将会分享维度模型中的“事实”。

数仓中关于“维度” “粒度”的详细理解(转)相关推荐

  1. 数仓中指标-标签,维度-度量,自然键-代理键,数据集市等各名词解析及关系

    序列号 内容 链接 1 大数据知识面试题-通用(2022版) https://blog.csdn.net/qq_43061290/article/details/124819089 2 大数据知识面试 ...

  2. 数仓中指标-标签,维度-度量,自然键-代理键等各名词深度解析

    作为一个数据人,是不是经常被各种名词围绕,是不是对其中很多概念认知模糊.有些词虽然只有一字之差,但是它们意思完全不同,今天我们就来了解下数仓建设及数据分析时常见的一些概念含义及它们之间的关系. 本文首 ...

  3. 老司机带带我:数仓建模架构|维度建模剖析与案例演示

           作者基于多年的大数据处理经验,当前管理着100PB+数据仓库和2000+节点的集群.持续系统化给大家分享一下关于数据仓库建设的经验总结.本系列既有数据仓库的形而上学理论体系,也有结合公司 ...

  4. Apache Doris在美团外卖数仓中的应用实践

    来自:美团技术团队 美团外卖数据仓库通过MOLAP+ROLAP双引擎模式来适配不同应用场景.MOLAP引擎使用了Apache Kylin.ROLAP我们经过综合考虑,选择了Apache Doris.本 ...

  5. Hive 数仓中常见的日期转换操作

    (1)Hive 数仓中一些常用的dt与日期的转换操作 下面总结了自己工作中经常用到的一些日期转换,这类日期转换经常用于报表的时间粒度和统计周期的控制中 日期变换: (1)dt转日期 to_date(f ...

  6. 数据仓库(9)数仓缓慢变化维度数据的处理

      数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一.缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的,它会随着时间的流逝发生缓慢的变化,与数据增长较为快 ...

  7. 数仓中应该出现的所有表格

    数仓中应该出现的所有表格及其逻辑 1.ods_app_log(app日志贴源表) 计算:详情请见数据预处理整体代码实现 源表:原始数据 +--------------+---------------- ...

  8. 内部矩阵维度必须一致simulink_浅谈数仓模型(维度建模)

    背景 数据仓库的核心是展现层和提供优质的服务.ETL 及其规范.分层等所做的一切都是为了一个更清晰易用的展现层. 数仓架构的原则: 1.底层业务的数据驱动为导向同时结合业务需求驱动 2.便于数据分析 ...

  9. 吴乙己的数仓指南_2维度建模核心思想

    目录 0.引言 1.维度建模"四部曲" 1.1选择业务过程 1.2声明粒度 1.3确定维度 1.4确定事实 2.总线矩阵 0.引言 前两章讲了很多宽泛,大而全,代码之外的东西,想必 ...

最新文章

  1. 项目的技术路线怎么写_资讯丨空压机节能改造项目技术路线
  2. 如何更好的招聘软件测试人员?
  3. ASP.NET Core Web Razor Pages系列教程:使用ASP.NET Core创建Razor Pages Web应用程序
  4. linux安装tree命令
  5. 西固哪家计算机学校好,兰州市西固区有什么技术学校和大学
  6. matlab 设计带阻型陷波滤波器_Q值可调、最大增益恒定的带通滤波器
  7. JAVA中判断一个字符串是否包含另一个字符串
  8. gsm短信猫长短信pdu数据包分析[转]
  9. od拦截消息 comboboxonchange_某聊天软件逆向之偷看消息不quot;已读quot;
  10. 2020阿里云线上峰会预告 | 凌云时刻
  11. 新手php环境一键安装包,常用PHP运行环境一键安装包
  12. (3/3) plsql使用技巧PL/SQL Developer实现双击table表名查询
  13. webqq机器人php,一步一步来做WebQQ机器人-(一)(验证码)
  14. 2021-03-08动力学方程
  15. 最新 开源 好用的同城投诉爆料平台适合各类公司PHP源码 违法举报 投诉 文明城市 城市经营利器
  16. Cent OS (一)Cents OS的基本安装
  17. Android 启动优化(五)- AnchorTask 1.0.0 版本正式发布了
  18. bilibili直播地址获取
  19. 截图软件shutter
  20. SUST OJ P5502

热门文章

  1. 即点即用的office程序_相较之下,小程序的主要优势有哪些?
  2. 2003邮件服务器维护,Windows 2003邮件服务器配置指南
  3. VB(视频缓冲区)配置
  4. Java简单学生信息管理系统
  5. 云栖科技评论第23期:CES2017年度最佳榜单出炉 看“黑科技”如何入围
  6. destooon7.0装修网站源码带分站多地区带设计报价
  7. 玩转ES,一文教你掌握IK中文分词器
  8. POSTEK标签打印机跳纸问题解决
  9. 计算机经常使用不维护,电脑维护注意三个细节,电脑用上十年都没问题,别说我没有告诉你...
  10. Appium+python自动化(一)- 环境搭建—上(超详解)