数据仓库——大维度问题

这篇具有很好参考价值的文章主要介绍了数据仓库——大维度问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

数据仓库基础笔记思维导图已经整理完毕,完整连接为:
数据仓库基础知识笔记思维导图

大维度

大维度很深,有很多记录。大维度很宽,有很多属性。满足任何一种情况,都可以说这是个大维度。
由于数据量很大,很多包含大维度的数据仓库功能可能会很慢,效率很低,需要设计有效的方法,原则正确索引或者采用其他优化技术处理以下问题

  • 向大维度表填充数据
  • 非限制维度的浏览功能,尤其是那些属性基数较小的维度
  • 多维度限制属性值的浏览时间
  • 对事实表的查询涉及大维度表时,效率低
  • 为处理第二类修改需要增加额外的记录

多层次的结构

大维度通常拥有多层次的结构,不同的业务需要的不同属性可能不同。

快速变化中的大维度

在大多情况下,第二类修改适合处理快速变化的维度:

  • 如果维度表扁平,它允许在许多维度中不同属性间进行对称浏览
  • 即使加入了额外的维度表行,维度表的基本结构依然不变
  • 只有当最终用户的查询涉及修改过的属性时,同一个客户的多行记录展现出来,对其他的查询是看不出有多行记录的
    将大维度分解成一个或者多个比较简单的小维度表:
  • 将快速变化的属性放到另一个维度表中,而缓慢变化的属性放在原来的表里面
    废弃维度:
    一些标志与文本,不会在维度表中出现,如何处理
  • 忽略掉所有标志和文本。可能会丢掉一些有用的信息
  • 将标志和文本原封不动地放在事实表中,会增大事实表
  • 为每个标志和文本建立一个独立的维度,大大增加维度表的数目
  • 只保留那些有意义的标志和文本,将所有有用的标志放在一个单独的废弃的维度中,废弃维度中的属性对涉及标记文本的查询来说是有用的

分解大型维度

任意分隔维度表,虽然该方法解决了数据管理员提供的问题,但也带来的一系列的问题。

  • 连接选择,对于表本身来说不是问题,然而这可能导致混淆,并且可能为自动建立查询的商业智能工具带来问题

    • 事实表外键声明,将每个维度表行表示成两部分,导致两个 维度表共享相同的代理键。提供完整的维度表示。事实表中的外键引用了涉及的表,但是关系型数据库管理系统却不能对这种双重引用进行配置。一个外键只适用于一个表。
    • ETL处理,对ETL开发人员来说,将表分裂为两部分踢出了独特的挑战。
  • 分隔维度方法的替代方法

    • 两个维度,当某个维度具有海量属性时,这一情况通常可以作为存在两个相异维度的标志。如果确定存在相异维度,可以重新设计维度,将其划分为两个表,每一个 表都有各自的代理键,这连个维度将通过事实表分享明确的关系。
    • 将自由形态的文本字段定位到支架表,由大量属性造成的过长的行通常是在维度表中包含多个自有形态的文本字段的结果。他们可以被重新定位到不同的表中,并且用外键引用进行替换。
    • 寻找子类型,在很多情况下,维度表包含大量的属性组,每个属性组只作为所在行的一个子集。在包含特殊子类型属性的情况中,维度行的规模可以通过建立仅包含共享属性核心的维度和相互独立的自定义维度来控制。当需要分析所有子类型,使用核心维度,当只研究特定子类型时,使用自定义维度。
    • 考虑微型维度,将维度属性的子集分离,使用子集作为被称为微型维度的新维度的基础。与杂项维度类似,此类表的属性不表示单独户的分析概念,新维度表能顾通过心智可浏览性开销来缓解属性的规模问题。
    • 与其他维度一样,微型维度表被分配了一个代理键,与分隔维度不同的是,微型维度不共享原始维度表的代理键,原始维度和微型维度没有一对一关系,事实表将使用不同的外键来引用原始维度和微型维度。
    • 当表增长过快或存在大量的类型2属性,导致对变化的处理成为瓶颈时,一个或多个微型维度可能会有用,将不稳定的属性移动到微型维度表,用所有可能值填充。
    • 采用微型维度破坏了可浏览性,维度表和微型维度之间只通过事实关联,但是用户很少希望去构建针对某个大型维度最详细的浏览查询。提供维度和微型维度间有限的可浏览性是可能的。可以通过在引用微型维度中添加外键来实现。通过将微型维度中的键保存在维度中以实现交叉可浏览性也存在限制,只能获得微型维度中的当前信息,并未保存历史信息。
    • 如果需要的话,维度和微型维度表之间的全部历史关系,可以通过设计额外的事实表得以保留。

角色维度和别名的使用

业务过程的度量可以包含维度的多个实例。
单一表,多重关系,维度表可以参与事实表中多个关系,每个关系称作一个角色。
利用别名来存取角色,历史数据库视图,创建不同的维度表视图来表示每个角色,采用适当的外键列将事实表与每个视图连接。SQL别名也可以

避免空值

一个不太规范却实际的解决方案是当数据无效时存储特定的值。如0或者N/A来表示。文章来源地址https://www.toymoban.com/news/detail-851388.html

空值带来的问题

  • 空值是没有意义的,但它与空白、空串或者零值存在明显的区别。
  • 空值不代表任何事物,不能被认为是等同于任何事物,甚至不能与其他的空值等同。如果涉及空值,任何传统的比较都要失败。
  • 不要允许在外键列中使用空值,即时为存储NULL值,也需要替换维度列的连接语法并创建维度NULL实例值。
  • 当事实表和维度表之间的关系可选择时,随着空值而来的问题能通过在维度表中创建特殊的行来加以避免。该行将会被不包含对应的维度细节的事实行引用。
  • 采用特殊行的方法避免了一些与空值相关的负面影响,但是仍然影响可浏览性,需要在查询时果粒橙特殊的行。

特殊情况行的用途

  • 可选关系,事实表和维度表之间的可选关系并不常见,但是的确存在,当不是事实表的部分粒度时,可选维度能被接受。
  • 无效数据,在事实表中加载数据行时,当与实务关联的产品无效时,可以将一个特别行添加到产品维度中。
  • 迟到的数据,有事数据仓库在获得相关细节前就获得事务,这种情况发生在加载间隔短或者史诗加载数据的环境。当事务的细节尚不存在时,将事实与维度表中的用于指示位置产品的特殊行关联。避免了将事务排除在数据仓库之外的可能,以便队未来能够获得事务并对其进行更新。
  • 未来事件,涉及时间,当事实表行代表一些涉及期限的事务时,采用记录一队日期的方式是非常有效的:事务的有效日期和截止日期。

到了这里,关于数据仓库——大维度问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数据仓库:如何解决ODS数据零点漂移问题

    本篇文章讲解的是从业务库同步数据至数仓导致的零点漂移,查看flume+kafka同步数据导致的零点漂移参考该文章:业务数据采集_零点漂移处理方法(Flume+Kafka+HDFS) 1、什么是零点漂移: 数据零点漂移指的是数据同步过程中,ODS表按时间字段分区时, 同一个业务日期 (分区) 包含

    2024年01月22日
    浏览(32)
  • 时间步长问题。tensorflow训练lstm时序模型,输出层实际输出维度和期待维度不一致

    设置输出维度为1. Dense(1) 但结果跑出来的输出维度每次都是三维的。 模型设置: 输入x维度(2250,48,2) 输入y 维度(2250,) 和 (2250,1) 但模型预测出的结果维度都是(2250,48,1) 我就很纳闷= = ! 后来对比了以前跑过的文件。发现LSTM少定义一个参数。 input_shape填两个

    2024年04月28日
    浏览(34)
  • 49个过程背诵方法

    五大过程组:启规执监收  需要死记住,五个比较好记按照顺序启动规划执行监控结束   十大过程:整范进,成质源,疯(风)狗(沟)踩(采)人  过程数量: 7  6  6    4   3 6     7            3             3           4 记住每个过程有几个过程,方便记不住的

    2024年02月08日
    浏览(28)
  • 408需要背诵的知识点

    2023年07月24日
    浏览(41)
  • 用颜色表示数据的第三个维度

    横纵坐标显示时间和空间后,第三个数据的特征有时就不好表示了,3d图有的时候看起来更复杂。对于某些情况,用颜色来表示更加简洁。 这里展示的效果图有点像烟花,所以选了这张,但是换其他的cmap才能使得数据展示更加直观 先放一个快捷简洁版本,后面将细节(高级

    2024年02月13日
    浏览(49)
  • java和sql生成时间维度数据

    JAVA: POM依赖:   代码: SQL:

    2024年02月11日
    浏览(39)
  • 添加数据维度并使用Python绘制5D散点图

    大家好,散点图通常用于比较2个不同特征以确定它们之间的关系,散点图也可以添加更多的维度来反映数据,例如使用颜色、气泡大小等。在本文中,将介绍如何绘制一个五维的散点图。 数据集:  让我们从二维开始,简单地看一下 Healthy_life_expectancy_at_birth 和 Log_GDP_per_ca

    2024年02月12日
    浏览(39)
  • 42道JavaWeb高频题整理(附答案背诵版)

    1、说一说Servlet的生命周期? Servlet的生命周期主要由以下三个阶段组成:初始化,服务和销毁。 初始化(Initialization): 当一个Servlet被载入到内存中时(例如,第一次访问或者服务器启动并且在web.xml中配置了load-on-startup),Servlet容器(例如Tomcat)就会调用Servlet的 init() 方法进

    2024年04月23日
    浏览(29)
  • 60道KafKa高频题整理(附答案背诵版)

    废话不多说,直接上干货 简述什么是 Kafka 的 Topic ? Kafka 的 Topic 是一个存储消息的逻辑概念,可以认为是一个消息集合。每条消息发送到 Kafka 集群的消息都有一个类别,这个类别就是 Topic。物理上来说,不同的 Topic 的消息是分开存储的,每个 Topic 可以有多个生产者向它发

    2024年01月16日
    浏览(29)
  • 助力工业物联网,工业大数据之工业大数据之油站维度设计【十四】

    目标 :掌握油站维度的需求与设计 路径 step1:需求 step2:设计 实施 需求 :构建油站维度表,得到油站id、油站名称、油站所属的地理区域、所属公司、油站状态等 设计 数据来源 ciss_base_oilstation:油站信息表 eos_dict_type:字典状态类别表,记录所有需要使用字典标记的表

    2024年02月07日
    浏览(73)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包