来源:数据蒋堂

作者:蒋步星

本文长度为1320,建议阅读3分钟

本文为你讲解JOIN延伸之维度的其他应用。

明确维度定义后,还可以换一种更清晰的方式来审视数据库的结构。

这是我们常见的E-R图:

E-R图是个网状结构,实体(表)之间的外键关系直接画在图上,当实体较多时这个图就会显得非常零乱,关联线很随意,任何两个实体之间都有可能发生关联,表现出来的数据结构耦合度很高。在增加删除实体时就要考虑与之关联的所有其它实体,很可能发生遗漏关联或循环关联的现象。

而如果把维度抽取出来之后,我们可以使用总线式的结构图:

所有维度单独列出来处于中心地位,实体(表)只和维度发生关联,实体之间没有直接的关联线,数据结构的耦合度看起来很低。增加删除实体时不会影响到其它实体,不会发生遗漏关联和重复关联。

不过,需要指出的是。无论是E-R图还是总线图,只要画正确时,其中的关联线数量是差不多的,这是数据本身的关系决定的。总线图并不会比E-R中的关联线更少,但改变了看待方法后会更清晰。

为了提供关联查询能力,有些BI产品将表间关联关系(相当于一个局部E-R图)直接暴露给业务人员,这不是个好办法,业务人员难以理解E-R图,这个方案的可用性很差。如果能够由业务人员选择了数据项(字段)后就自动建立出合理的关联,那样可用性就能提高很多了。

有了维度概念,就可以一定程度地实现这一目标。

业务人员任意选择了字段之后,我们可以找出这些字段所在表,再在这些表之间寻找同维字段(优先选择主键),然后使用这些同维字段建立JOIN关系。当某个表上只有唯一的字段和另一表的主键字段同维时,那么基于这两个字段建立的JOIN关系在绝大多数情况下都是正确合理的。而且,在数据结构不是特别复杂的时候,两表之间只有唯一字段同维的条件也常常能够满足,这时候就真地能只基于数据项自动建立正确的关联关系,有些BI产品确实是这么做的。

不过,这种办法不能处理同表自关联和表间有多个同维字段的情况,以及多次递归关联的问题。想要完善地解决问题,还是需要基于DQL语法来实现关联。

上面的讨论中,我们会把发现的同维字段JOIN起来,DQL语法也是这样,只要同维的(广义)字段就可以JOIN。这样的JOIN一定有业务意义吗?

是的,只要是同维字段,JOIN起来总能想出合理业务意义。反过来,也只有同维字段之间可以JOIN,不同维字段的JOIN是没有业务意义的,不过SQL并不禁止,只要数据类型相同就可以JOIN。字段同维和JOIN有业务意义是等价的,DQL在这方面可以确保这一点。

DQL中GROUP BY总是要对应着ON(如果单表可以看成是省略ON),也就是说,GROUP BY总是针对某个维度进行的。事实上也是这样,针对测度的分组运算没有业务意义,不过SQL并没有明确出维度和测度的概念,也不会禁止这个运算。DQL则确保了不会发生无业务意义的分组。

利用这个特点,可以提高分组运算的性能。维度可能的取值是由维表长度决定的,而维表是事先知道的,这样在分组时可以采用类似基数排序法的手段提速,当然,针对维度的排序运算也可以用这种办法。不过,这个算法细节与本篇主题相关性较低,这里就不详细说明了。

专栏作者简介

润乾软件创始人、首席科学家

清华大学计算机硕士,著有《非线性报表模型原理》等,1989年,中国首个国际奥林匹克数学竞赛团体冠军成员,个人金牌;2000年,创立润乾公司;2004年,首次在润乾报表中提出非线性报表模型,完美解决了中国式复杂报表制表难题,目前该模型已经成为报表行业的标准;2014年,经过7年开发,润乾软件发布不依赖关系代数模型的计算引擎——集算器,有效地提高了复杂结构化大数据计算的开发和运算效率;2015年,润乾软件被福布斯中文网站评为“2015福布斯中国非上市潜力企业100强”;2016年,荣获中国电子信息产业发展研究院评选的“2016年中国软件和信息服务业十大领军人物”;2017年, 自主创新研发新一代的数据仓库、云数据库等产品即将面世。

数据蒋堂

《数据蒋堂》的作者蒋步星,从事信息系统建设和数据处理长达20多年的时间。他丰富的工程经验与深厚的理论功底相互融合、创新思想与传统观念的相互碰撞,虚拟与现实的相互交织,产生出了一篇篇的沥血之作。此连载的内容涉及从数据呈现、采集到加工计算再到存储以及挖掘等各个方面。大可观数据世界之远景、小可看技术疑难之细节。针对数据领域一些技术难点,站在研发人员的角度从浅入深,进行全方位、360度无死角深度剖析;对于一些业内观点,站在技术人员角度阐述自己的思考和理解。蒋步星还会对大数据的发展,站在业内专家角度给予预测和推断。静下心来认真研读你会发现,《数据蒋堂》的文章,有的会让用户避免重复前人走过的弯路,有的会让攻城狮面对扎心的难题茅塞顿开,有的会为初入行业的读者提供一把开启数据世界的钥匙,有的甚至会让业内专家大跌眼镜,产生思想交锋。

往期回顾:

数据蒋堂 | JOIN延伸 - 维度查询语法

数据蒋堂 | JOIN延伸 - 维度概念

数据蒋堂 | JOIN提速 - 有序归并

数据蒋堂 | JOIN提速 - 外键指针的衍生

数据蒋堂 | JOIN提速 - 外键指针化

数据蒋堂 | JOIN简化 - 意义总结

数据蒋堂 | JOIN简化-消除关联

数据蒋堂 | JOIN简化 - 维度对齐

数据蒋堂 | JOIN运算剖析

数据蒋堂 | 迭代聚合语法

数据蒋堂 | 非常规聚合

数据蒋堂 | 再谈有序分组

数据蒋堂 | 有序分组

数据蒋堂 | 非等值分组

数据蒋堂 | 还原分组运算的本意

数据蒋堂 | 有序遍历语法

数据蒋堂 | 常规遍历语法

数据蒋堂 | 从SQL语法看离散性

数据蒋堂 | 从SQL语法看集合化

数据蒋堂 | SQL用作大数据计算语法好吗?

数据蒋堂 | SQL的困难源于关系代数

数据蒋堂 | SQL像英语是个善意的错误

数据蒋堂 | 开放的计算能力为数据库瘦身

数据蒋堂 | 计算封闭性导致臃肿的数据库

数据蒋堂 | 怎样看待存储过程的移植困难

数据蒋堂 | 存储过程的利之弊

数据蒋堂 | 不要对自助BI期望过高

数据蒋堂 | 报表的数据计算层

数据蒋堂 | 报表应用的三层结构

数据蒋堂 | 列式存储的另一面

数据蒋堂 | 硬盘的性能特征

数据蒋堂 | 我们需要怎样的OLAP?

数据蒋堂 | 1T数据到底有多大?

数据蒋堂 | 索引的本质是排序

数据蒋堂 | 功夫都在报表外--漫谈报表性能优化

数据蒋堂 | 非结构化数据分析是忽悠?

数据蒋堂 | 多维分析的后台性能优化手段

校对:林亦霖

为保证发文质量、树立口碑,数据派现设立“错别字基金”,鼓励读者积极纠错

若您在阅读文章过程中发现任何错误,请在文末留言,或到后台反馈,经小编确认后,数据派将向检举读者发8.8元红包

同一位读者指出同一篇文章多处错误,奖金不变。不同读者指出同一处错误,奖励第一位读者。

感谢一直以来您的关注和支持,希望您能够监督数据派产出更加高质的内容。

数据蒋堂 | JOIN延伸 - 维度其它应用相关推荐

  1. 数据蒋堂 | JOIN延伸 - 维度查询语法

    来源:数据蒋堂 作者:蒋步星 本文长度为1320字,建议阅读3分钟 本文为你讲解JOIN延伸之维度查询语法. 有了维度定义后,我们就可以来梳理前面讲过的简化JOIN语法了. 先定义字段维度: 维度字段 ...

  2. 数据蒋堂 | JOIN延伸 - 维度概念

    来源:数据蒋堂 作者:蒋步星 本文长度为1320字,建议阅读3分钟 本文为你讲解维度概念. 谈到数据分析时常常会用到维度这个词,针对数据立方体的钻取.旋转.切片等操作都是围绕维度进行的,几乎所有的数据 ...

  3. 数据蒋堂 | JOIN提速 - 外键指针的衍生

    来源:数据蒋堂 作者:蒋步星 本文长度为1320字,建议阅读3分钟 本文为你讲解外间指针的衍生. 我们继续讨论外键JOIN,并延用上一篇的例子. 当数据量大到无法全部放进内存时,前述的指针化方法就不再 ...

  4. 数据蒋堂 | JOIN提速 - 外键指针化

    来源:数据蒋堂 作者:蒋步星 本文长度为1520字,建议阅读4分钟 本文为你讲解重新定义JOIN后如何能够提高运算性能. 我们来看重新定义JOIN后如何能够提高运算性能,先看外键式JOIN的情况. 设 ...

  5. 数据蒋堂 | JOIN简化 - 意义总结

    来源:数据蒋堂 作者:蒋步星 本文长度为3000字,建议阅读6分钟 本文为你讲解SQL中用于多表关联的JOIN运算的简化--意义总结. 我们重新审视和定义了等值JOIN运算,并简化了语法.一个直接的效 ...

  6. 数据蒋堂 | JOIN简化 - 消除关联

    来源:数据蒋堂 作者:蒋步星 本文长度为2200字,建议阅读5分钟 本文为你讲解SQL中用于多表关联的JOIN运算的简化--消除关联. 我们将等值JOIN分成三种情况来分别讨论,分情况相当于加强了条件 ...

  7. 数据蒋堂 | JOIN运算剖析

    来源:数据蒋堂 作者:蒋步星 本文长度为2200字,建议阅读5分钟 本文为你讲解SQL中用于多表关联的运算JOIN. JOIN是SQL中用于多表关联的运算,无论从程序员编写还是数据库实现角度来看,JO ...

  8. 数据蒋堂 | 数据库的封闭性

    作者:蒋步星 来源:数据蒋堂 本文共1200字,建议阅读6分钟. 本文与你探讨数据库的封闭性对数据处理效率的影响. 我们知道,数据库的数据处理能力是封闭的.所谓封闭性,这里是指要被数据库计算和处理的数 ...

  9. 数据蒋堂 | 多维分析预汇总的存储容量

    作者:蒋步星 来源:数据蒋堂 本文共1700字,建议阅读7分钟. 本文带你感性认识多维分析方案中的预汇总额外占用的存储空间. 多维分析一般是交互式操作的,也就要求有极高的响应速度,而多维分析涉及的数据 ...

最新文章

  1. 编辑器source insight,sublime,编码 utf-8和 GB2312
  2. java cpu过高排查_论线上如何排查一次CPU100%的情况
  3. 为什么“极大似然估计表达式的极值”可以用来估计参数
  4. ASP.NET Core中HTTP管道和中间件的二三事
  5. Leedcode9-linked-list-cycle-i
  6. 漫步凸分析五——函数运算
  7. C++ 虚函数表解析(转)
  8. windows找不到文件gpedit.msc_u盘插入电脑在windows却找不到u盘的解决办法【详解】...
  9. Powershell管理系列(一)Active Direcrtory管理:用户管理
  10. python学习笔记011——检查变量类型type()
  11. Atheros对Ralink,看WiFi产品的射频电路设计
  12. RadASM的主题更换!
  13. VS2019新建osgEarth项目时,GL.h文件提示报错
  14. 运营15年的飞扬军事论坛宣布停止运营 关闭服务器
  15. 网络存储专有名词介绍
  16. 一、Vulkan开发理论基础知识
  17. 日常(魔鬼本鬼又来了)
  18. 如何彻底删除HbuilderX
  19. Java websocket + redis 实现多人单聊天室,多人多聊天室, 一对一聊天
  20. MySql的相关资操作

热门文章

  1. Dos判断文件夹有没有存在,如果存在删除,不存在创建
  2. 用C语言解“求整数段和”题
  3. easyui datagrid b表格中的内容显示null_扫盲 | 实际工作中,B 端设计都在做什么?...
  4. 传入一个日期 返回该月的第一天是星期几_Excel VBA 编程开发应用系列 (二十一)— Excel常用的日期函数...
  5. 白月黑羽教python excel_发布程序
  6. python的四种内置数字类型_浅析Python数字类型和字符串类型的内置方法
  7. mysql計劃任務_MySQL計劃任務 | 學步園
  8. torchtext语料库 词与 下标互转使用教程
  9. jupyter 魔法函数
  10. 图片增强深度学习deep learning keras