数据仓库系列--维度表技术

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
实时计算 Flink 版,5000CU*H 3个月
实时数仓Hologres,5000CU*H 100GB 3个月
简介: 数据仓库系列--维度表技术

维度表技术常见:增加列,维度子集,角色扮演维度,层次维度,退化维度,杂项维度,维度合并,分段维度等基本维度表技术。

一.增加列

事实表和维度表上增加列。

Hive上增加列,慎用alter table。原因老版本的hive对ORC格式表的模式修改,尤其是增加列的支持存在很多问题。

JIRA上说2.0.0修复了ORC表模式修改问题。

空值处理:<=>

二.维度子集

有些需求不需要最细节的数据。此时事实数据需要关联特定的维度,这些特定维度包含在从细节维度选择的行中,所以叫维度子集。

细节维度和维度子集具有相同的属性或内容,具有一致性。

1.建立包含属性子集的子维度

比如需要上钻到子维度。

2.建立包含行子集的子维度

当两个维度处于同一细节粒度,但是其中一个仅仅是行的子集,会产生另外一种一致性维度构造子集。

某些版本的Hive中,对ORC表使用overwrite会出错,为保持兼用性,使用truncate 。

3.使用视图实现维度子集

实现维度子集,这种方式两个主要问题:一需要额外的存储空间,因为新创建的子维度是物理表;二是存在数据不一致的潜在风险。

为解决上述问题,常用做法是在基本维度上建立视图生成子维度。

优点:实现简单,不需要修改原来脚本的逻辑;不占用存储空间,因为视图不真正存储数据;消除数据不一致的可能。

缺点:当基本维度和子维度表数据量相差悬殊,性能比物理表差很多;如果定义视图查询,并且视图很多,可能对元数据存储系统造成压力,严重影响查询性能。

三.角色扮演维度

单个物理维度可以被事实表多次引用,每次引用连接逻辑上存在差异的角色维度。例如,事实表可以有多个日期,每个日期通过外键引用不同的日期维度,原则上每个外键表示不同维度视图,这样引用具有不同的含义。这些不同的维度视图具有唯一的代理键列名,被称为角色,相关维度被称为角色扮演维度。

Hive中的order by,sort by ,distribute by,cluster by子句都用于对查询结果进行排序,处理方式不一样。

Hive中order by跟传统的SQL语言的order by作用一样的,会对查询的结果做一次全局排序,如果使用order by ,所有数据都会发送到同一个reduce进行处理。不管多少map,也不管文件有多少block只会起动一个reduce,因为多个reducer无法保证全局有序。对于大量数据这将会消耗很长时间去执行。

Sort by 在每个reducer端都会排序,也就保证了局部有序。

Ditribute by 控制map输出reducer中是如何规划。

假设有一张名为store 的商店表,mid是这个商店所属的商户,money是这个商户的盈利,name商店名称

语句:select mid,money.name from store distribute by mid sort by mid asc,money asc;

所有mid相同数据都会被送到同一个reducer处理,这是因为指定了distribute by mid,这样话就可以统计每个商户中各个商店盈利排序。肯定全局有序。因为相同的商户会放到同一个reducer去处理。

Cluster by 是distribute by和sort by相结合,但是排序只能是升序(至少hive 1.1.0是这样)

四.层次维度

经常使用grouping__id 二进制序列,rollup,collect_set,concat_ws等函数。

层次关系方法:固定深度层次进行分组和钻取查询,递归层次结构数据装载、展开与平面化,多路径层次和参差不齐处理

五.退化维度

除了业务主键外没有其他内容的维度表。

六.杂项维度

包含数据具有很少可能值的维度。有时与其为每个标志或属性定义不同的维度,不如建立单独的讲不同维度合并到一起的杂项维度。

七.维度合并

如果几个相关维度的基数都很小,或者具有多个公共属性时,可以考虑合并。

八.分段维度

包含连续的分段度量值,通常用作客户维度的行为标记时间序列,分析客户行为。

目录
相关文章
|
7月前
|
机器学习/深度学习 数据可视化 数据挖掘
探索大数据时代的关键技术:数据挖掘、可视化和数据仓库
探索大数据时代的关键技术:数据挖掘、可视化和数据仓库
546 0
|
3月前
|
机器学习/深度学习 消息中间件 搜索推荐
【数据飞轮】驱动业务增长的高效引擎 —从数据仓库到数据中台的技术进化与实战
在数据驱动时代,企业逐渐从数据仓库过渡到数据中台,并进一步发展为数据飞轮。本文详细介绍了这一演进路径,涵盖数据仓库的基础存储与查询、数据中台的集成与实时决策,以及数据飞轮的自动化增长机制。通过代码示例展示如何在实际业务中运用数据技术,实现数据的最大价值,推动业务持续优化与增长。
127 4
|
2月前
|
存储 数据管理 大数据
从数据仓库到数据中台再到数据飞轮:社交媒体的数据技术进化史
从数据仓库到数据中台再到数据飞轮:社交媒体的数据技术进化史
|
4月前
|
存储 监控 数据挖掘
【计算机三级数据库技术】第14章 数据仓库与数据挖掘-
文章概述了数据仓库和数据挖掘技术的基本概念、决策支持系统的发展、数据仓库的设计与建造、运行与维护,以及联机分析处理(OLAP)与多维数据模型和数据挖掘技术的步骤及常见任务。
48 3
|
5月前
|
机器学习/深度学习 分布式计算 数据挖掘
数据仓库与数据挖掘技术的结合应用
【7月更文挑战第30天】数据仓库与数据挖掘技术的结合应用是现代企业实现高效决策和精准分析的重要手段。通过整合高质量的数据资源,利用先进的数据挖掘技术,企业可以更好地理解市场、客户和业务,从而制定科学的决策和战略。未来,随着技术的不断进步和应用场景的不断拓展,数据仓库与数据挖掘技术的结合应用将会为企业的发展提供更多机遇和挑战。
|
5月前
|
存储 运维 监控
云原生数据仓库使用问题之怎么创建维度表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
7月前
|
Cloud Native 关系型数据库 MySQL
云原生数据仓库产品使用合集之在ADB中,如何将源数据的多表(数据结构一致)汇总到一张表
阿里云AnalyticDB提供了全面的数据导入、查询分析、数据管理、运维监控等功能,并通过扩展功能支持与AI平台集成、跨地域复制与联邦查询等高级应用场景,为企业构建实时、高效、可扩展的数据仓库解决方案。以下是对AnalyticDB产品使用合集的概述,包括数据导入、查询分析、数据管理、运维监控、扩展功能等方面。
|
7月前
|
消息中间件 SQL Kafka
实时计算 Flink版产品使用合集之构建实时数据仓库时,如何操作在几分钟内一直变化的表
实时计算Flink版作为一种强大的流处理和批处理统一的计算框架,广泛应用于各种需要实时数据处理和分析的场景。实时计算Flink版通常结合SQL接口、DataStream API、以及与上下游数据源和存储系统的丰富连接器,提供了一套全面的解决方案,以应对各种实时计算需求。其低延迟、高吞吐、容错性强的特点,使其成为众多企业和组织实时数据处理首选的技术平台。以下是实时计算Flink版的一些典型使用合集。
|
7月前
|
数据挖掘 数据库
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
离线数仓6.0--- 数据仓库 ER模型-范式理论,维度模型、维度建模理论之事实表、维度建模理论之维度表
310 0
|
7月前
|
存储 大数据 数据管理
数据仓库(08)数仓事实表和维度表技术
所谓的事实表和维度表技术,指的就是如何和构造一张事实表和维度表,是的事实表和维度表,可以涵盖现在目前的需要和方便后续下游数据应用的开发
164 1
下一篇
DataWorks