数据仓库——特殊类型的星型模式

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

特殊类型的星型模式

通过维度表示的事物通常可以按照类别或者类型细分。有时想要在维度表中记录的属性类型是多样的。
尽管类型相同,但是却存在很大差别。在此情况下,维度模型的设计者处于两难境地,一方面希望跨越所有类型来研究业务过程,另一方面希望使用特定类型的属性来研究每个特定的类型。

数据仓库必须反映出过程分析和度量的所有方法。如果受限于单个的分析观点,数据仓库的整个效应将会大大降低。管理层可能想要分析全局的类型,使用可共享的事实和维度。当专注于某个特定类型时,也可能需要做更详细的表达,使用特定类型的素有事实和维度,不能实现这些功能将会破坏整个解决方案的价值。

使用单一星型模式

建立包含所有可能属性的单一星型模式,该方法是完全有效的,允许企业进行跨类型的分析或者进行特定类型的分析,包含在查询或报表中的属性确定了关注点。

缺点 :有时在单一星型模式中包含所有属性是不现实的,在技术方面,维度的频繁变化可能导致产生过多的属性。单一事实表也可能存在语义缺陷。合并素有可能属性的星型模式可能会导致无意义的报表。

核心和自定义星型模式

核心和自定义维度表

核心星型模式包括所有公共属性且支持跨所有类型的分析,特定类型的自定义星型模式包括所有的核心属性以及任何特定类型的属性。

为了成功实现核心/自定义设计,需要使用核心维度和每个特定类型的自定义维度之间的公共属性具有一致性。

有时存在自定义属性却没有自定义事实的情况,但是自定义事实表仍然可以避免分析意外。物理实现可以采用独立且不同的核心和自定义表的方式。或者使用数据库视图来实现。

异构维度属性能通过设计多个维度表来处理,核心维度包含所有公共属性;自定义维度包含核心属性和特定类型的属性。

  • 一致性属性:核心和自定义维度的公共属性应该是一致的,这意味着他们必须在结构和内容方面是相同的。
  • 公共代理键:核心和自定义维度表共享一个公共键域。可以将核心维度看做每个自定义维度的公共属性的联合。
  • 缓慢变化维度:类型2缓慢变化会对核心/自定义设计产生明显不良的影响。当变化的值恰巧在一个自定义列时会发生一个奇怪的副作用。在自定义表中,发生变化的项和旧行和新行是完全不同的,其他所有方面,新旧版本均相同。

核心和自定义事实表

强烈建议在设计相应的自定义事实表时,避免由此可能带来的分析混乱,实现不需要物理表;视图或类似的备选方案就足够了。

  • 用于所有类型的相同事实:如果为所有类型记录了相同的事实,就能发现维度的核心或者自定义版本嫩通过分析情况按需求被连接到事实表。在跨所有类型分析时,使用核心版本表;分析将被限制在公共维度属性上,当分析某个特定的类型时,使用自定义版本;分析包含特定类型的属性。通过公共键值域可以方便地获得交互能力。注意,可能产生任何连接到自定义维度的查询都隐含地受到特定类型事实表的约束。可以通过建立一个特定的自定义副本来解决没每个副本只包含一个特定产品类型的行,结果是一个核心和自定义星型模式的集合。(建立视图)
  • 特定类型的事实:当特殊事实与特定类型关联时,自定义事实表称为必要的,核心事实表包含所有事实的行。并且将包含所有类型的公共事件。为每个类型建立自定义事实表,这些事实表包含核心事实以及任何特定类型的事实表。对维度表,一致性是必须考虑的事情;公共事实表必须具有相同的结构和内容。
  • 分析需要首先选择适当的星型模式。跨所有类型的分析使用核心星型模式实现;分析将被限制与核心事实和维度中。需要针对某个特定类型的事实或者为敌的分析将使用适当的自定义星型模式执行,分析将被限制于特定类型的事务中。

其他注意事项

  • 重叠自定义维度:有时在一个维度中存在多个类型等级,当在类型中存在类型时,可能想要设计多重等级的自定义星型模式。在此情况下,创建的自定义事实表中包含冗余是不可避免的,可以选择一个基于视图的解决方案来避免产生冗余事实表,甚至是冗余维度表。
  • 使用支架表:针对核心/自定义主题的不同方法力图消除自定义表中核心属性的冗余。这种防范能节约空间,但是受限于雪花模式的潜在缺点。
  • 使用具有核心维度的层次桥接表:涉及实体的集合似乎参与了某种层次的情况,但是又不能明确层次的等级。常常发生在区域或者组织架构中,解决这个问题的关键在于认识到一组事物具有不同的属性。虽然在没有源系统作为同一事物的例子来表示他们,同时没有业务员以这种方式描述他们,当发现他们都被用来汇总行为时,共性是明显的哪些被看做一组不同的维度,实际上是未被发现的核心维度的自定义版本。
  • 有时,两个或者多个维度在使用后才发现他们具有一些相同的核心属性,一种选择是忽略该问题并且通过一个复杂的报表过程来协调数据。已经创建了自定义维度,而常见的属性没有一致性的名称或者数据类型,并且他们也不存在可共享的关键域。在构建核心维度要求对原始表进行调整,调整他们的内容,重新分配键值,如此一开,在关联的事实表上会产生连锁反应,外键引用被更新,现存的报表也要求用SQL重写。

使用通用属性

通用属性的使用试图用一个列的集合来捕获类型的多样性,在维度表中,描述核心属性的列集合通过一系列多用途的列来补充,目的是随着类型来变化。

在存储信息时,这一设计是十分灵活的,允许为大量类型存储自定义属性并且都存储在单一表中,有的类型可以利用所有的通用属性,其他的类型使用其中的一些,只要拥有足够的适当数据类型的通用列,就可以适合任意属性,同样的技术可以用来捕获事实表的变化。

尽管存储信息十分灵活,当检索信息时,通用设计往往会失去灵活性,因为列名采用通用定义,所以构建查询时需要引用列中信息。同样查询结构将需要与解码的属性标签重新打包,标准的查询和报表软件往往不能支持这样的需求。

通用属性的使用通常是不受欢迎的,因为会导致不易获取数据,然而若将其与自定义开发的应用程序结合,便有助于获得良好的分析体验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/789667.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

荣誉 | 人大金仓连续三年入选“金融信创优秀解决方案”

3月28日,由中国人民银行领导,中国金融电子化集团有限公司牵头组建的金融信创生态实验室发布“第三期金融信创优秀解决方案”,人大金仓新一代手机银行系统解决方案成功入选,这也是人大金仓金融行业解决方案连续第三年获得用户认可。…

LabVIEW齿轮箱噪声监测系统

LabVIEW齿轮箱噪声监测系统 齿轮箱作为机械设备的“心脏”,其健康状态对设备的性能有着重要的影响。传统的齿轮箱监测方法依赖于直接的振动信号分析,但这种方法不仅成本高昂,而且在安装和拆卸过程中可能对设备造成损害。针对这些问题&#x…

CMake解析

二 CMake解析 2.1 各种可用变量 CMake语法指定了许多变量,可用于帮助您在项目或源代码树中找到有用的目录。 其中一些包括: VariableInfoCMAKE_SOURCE_DIR根源代码目录,工程顶层目录。暂认为就是PROJECT_SOURCE_DIRCMAKE_CURRENT_SOURCE_DIR当前处理的 CMakeLists.txt 所在…

filetype: python中判断图像格式库imghdr替代库

引言 imghdr库是python中的一个内置库,用来判断图像原本格式的。自己一直有在用,不过近来看到这个库在python 3.13中会被移除。 自己感觉一直被python版本赶着走。这不找了好久,才找到一个替代库–filetype Python各个版本将要移除和可替代…

【Rust】——使用迭代器处理元素序列

💻博主现有专栏: C51单片机(STC89C516),c语言,c,离散数学,算法设计与分析,数据结构,Python,Java基础,MySQL,linux&#xf…

Kubernetes控制器(四)______StatefulSet

控制器介绍 StatefulSet: 是Kubernetes中用于管理有状态应用的控制器。与Deployment不同,StatefulSet用于部署和管理需要持久标识、有序部署和唯一网络标识的 Pod。典型的用例包括数据库、缓存和队列等有状态应用。(有状态服务:单…

分享几个好用的电商API接口(可测试)

以下是一些好用的电商API接口,这些接口都可以用于获取电商平台的商品、订单、物流等相关信息,并提供了测试功能以确保接口的稳定性和可用性: 请求示例,API接口接入Anzexi58 淘宝开放平台API:淘宝开放平台提供了丰富的…

Keil 警告解决 : warning: #870-D: invalid multibyte character sequence

说明:在Keil项目编译时出现了几个 warning: #870-D: 的警告,接下来分析解决这个警告。 注意:在尝试解决问题前一定要将整个工程打包成压缩文件备份,以防更改失败变文件成乱码。 1.警告内容 warning: #870-D: warning: #870-…

2024.2.27力扣每日一题——统计树中的合法路径数目

2024.2.27 题目来源我的题解方法一 埃氏筛深度优先遍历 题目来源 力扣每日一题;题序:2867 我的题解 方法一 埃氏筛深度优先遍历 分别以质数节点为根,用「深度优先搜索」的方式,递归搜索所有的非质数的子树,并求出所…

Android Monkey自动化测试

monkey一般用于压力测试,用户模拟用户事件 monkey 基本用法 adb shell monkey [参数] [随机事件数]monkey常用命令 -v:用于指定反馈信息级别,总共分三个等级-v -v -vadb shell mokey -v -v -v 100-s:用于指定伪随机数生成器的种…

CentOS7安装flink1.17完全分布式

前提条件 准备三台CenOS7机器,主机名称,例如:node2,node3,node4 三台机器安装好jdk8,通常情况下,flink需要结合hadoop处理大数据问题,建议先安装hadoop,可参考 hadoop安…

impnt只读,燕用,必填,提示词(占位符)属性分别是什么

readonly 属性规定输入字段为只读&#xff08;不能修改&#xff09; <input type"text" placeholder"点我啊" readonly/> disabled 属性规定输入字段是禁用的 <input type"text" placeholder"点我啊" disabled/> re…

XXLJob中GLUE模式实现在线编写java/shell/python/php/nodejs/powerShell---SpringCloud工作笔记202

1.起因: 之前就一直想实现类似的功能,今天总于找到有可以参考的东西了,这个思路可以帮助实现这种功能. 2.获得灵感 就是:我想实现通过在线编写代码,来扩展我们平台的能力,这样随着业务的扩展,不用我们每次都修改了代码,再去部署,这样就比较麻烦,今天偶尔发现,对于xxljob来说.有…

OSCP靶场--ProStore

OSCP靶场–ProStore 考点(node.js代码注入gdb-list源文件c语言命令执行) 1.nmap扫描 ## ┌──(root㉿kali)-[~/Desktop] └─# nmap 192.168.200.250 -sV -sC -Pn --min-rate 2500 -p- Starting Nmap 7.92 ( https://nmap.org ) at 2024-04-01 09:18 EDT Nmap scan report…

Stream2Graph论文翻译

Stream2Graph: Dynamic Knowledge Graph for Online Learning Applied in Large-scale Network Abstract 知识图谱(KG)是用于存储某个领域(医疗保健、金融、电子商务、ITOps等)中的知识的有价值的信息来源。大多数工业KG本质上是动态的&#xff0c;因为它们定期更新流数据(客…

Scala第十八章节(Iterable集合、Seq集合、Set集合、Map集合以及统计字符个数案例)

Scala第十八章节 章节目标 掌握Iterable集合相关内容.掌握Seq集合相关内容.掌握Set集合相关内容.掌握Map集合相关内容.掌握统计字符个数案例. 1. Iterable 1.1 概述 Iterable代表一个可以迭代的集合, 它继承了Traversable特质, 同时也是其他集合的父特质. 最重要的是, 它定…

git tag 恢复代码

在Git中&#xff0c;标签&#xff08;tag&#xff09;用于标记特定的提交&#xff0c;它们并不直接涉及恢复代码的过程。恢复代码通常意味着回退到某个历史提交或找回之前删除的文件。虽然标签可以帮助你定位到特定的提交&#xff0c;但恢复代码本身需要使用其他Git命令。 如果…

python文件的写入操作

文件的写入和追加 import time #1.打开文件 fopen("F:/python/helloworld/1.txt","w",encoding"UTF-8")#2.文件写入 f.write("hello world") #3.内容刷新 f.flush()#关闭文件 内置了flush功能 f.close()#追加内容 fopen("F:/…

windows无法使用hadoop报错:系统找不到路径

在windows下安装hadoop-3.1.4,进行环境变量配置后&#xff0c;打开window命令行窗口测试hadoop命令&#xff0c;报错&#xff0c;如图所示&#xff1a; 方案&#xff1a;由于JAVA_HOME路径有空格导致&#xff0c;可修改hadoop下\etc\hadoop\hadoop_env.cmd文档中set JAVA_HOME以…

Kubernetes(k8s):如何进行 Kubernetes 集群健康检查?

Kubernetes&#xff08;k8s&#xff09;&#xff1a;如何进行 Kubernetes 集群健康检查&#xff1f; 一、节点健康检查1、使用 kubectl 查看节点状态2、查看节点详细信息3、检查节点资源使用情况 2、Pod 健康检查2.1、 使用 kubectl 查看 Pod 状态2.2、 查看特定 Pod 的详细信息…