数据仓库——维度表更新
维度表的更新
维度表修改规律:
- 绝大部分维度表都是不变的
- 很多维度虽然会变化,但是变化的很缓慢
- 源记录产品键不会改变
- 产品描述及其他属性的改变都很缓慢
- 在源OLTP 系统中,新的值会覆盖旧的值
- 在数据仓库中,覆盖维度表的属性并不总是适当的做法
- 修改维度表的方法依赖于变化的属性,以及数据仓库必须保存什么信息
对维度表修改的类型
进入维度表中的信息,在操作系统中仍有可能发生改变,在维度设计方案时,确定数据源的变化情况在维度表中如何表示非常重要,这一想想称为缓慢变化的维度,简称缓慢变化维。
改正错误
修改原则
- 这些修改与改正源系统中的错误有关
- 这种修改在源系统中有时没有影响
- 源系统中旧数值不应保留
- 源系统中修改不需要在数据库中保存
修改方法 - 新的值覆盖维度表中旧数值
- 属性的旧数值不需要保留
- 对维度表没有其他修改
- 维度表中的键或任何其他键值均不受影响
- 这类修改是最容易实施的
保存历史数据
修改原则
- 他们通常与源系统中的修改相关
- 需要在数据仓库中保留历史数据
- 这一类修改将数据仓库的历史分区
- 对同一属性的每一个修改都要保留
修改方法 - 在维度表中增加一条新记录,该记录有修改后的数值
- 维度表中可以包含一个有效的日期字段
- 对维度表中原来数据不做修改
- 原来记录的键不受影响
- 插入新的记录,该记录有一个新的替代键
暂时的修改
几乎所有的对维度表的修改都属于前两类修改,第一类是最常见的,第二类修改保留了历史数据。
修改原则
- 它们通常与源系统的临时修改有关
- 需要利用新旧属性值跟踪历史数据
- 新旧两个值用于比较改变所带来的效果
- 它提供了向前向后追踪的能力
修改方法 - 对受影响的属性,在维度表加入旧的字段
- 将现有的字段赋值给旧的字段
- 将新的值赋值给现有的字段
- 加入一个现有的有效日期
- 记录的键不受影响
- 不需要增加新的维度表记录
- 现有的查询可以无缝转换到现有的值
- 所有使用到旧的值的查询需要做相应的修改
- 只对一次只做一个临时修改更为适用
- 如果还有后续的修改,则需要使用更复杂的技术
对所有的维度属性,选择并文档化适当地缓慢变化的响应方式,如果难以确定,选择变化类型2是最安全的。
应该认识到对缓慢变化的处理对ETL开发人员来说充满艰辛这一事实,无论是复杂性是从处理时间考虑,缓慢变化的需求对加载过程的每个部分都会造成影响,ETL开发人员可能需要面对确定是否所有变化都完全发生的挑战。
时间戳维度
当需要支持对维度值特定时间分析,与事实无关的时采用时间戳维度
时间戳维度允许三种形式的特定时间分析:
- 方便地按照时间顺序对变化的历史情况进行排序
- 快速选择影响特定日期的维度行
- 容易确定当前收到影响的维度行
- 类型2缓慢变化维度保留了属性值的历史,并允许每个事实与正确版本关联,尽管它保存了事实的历史,但却不足以提供对特定时间的分析。
- 通过事实表追踪历史的变化
- 时间戳维度用于追踪维度表自身变化的历史,而不是通过另外的事实表,维度配置额外的列用于为一行获取有效日期和截止日期。额外的列可以追踪变化的原因。
- 如果需要跟踪更细粒度的变化,则可以通过添加列来捕获记录变为生效和截止日期来完成
- 时间戳维度的构建将会给负责加载和维护维度表的开发人员增加额外的负担,当发生类型2变化时,需要识别先前行,并更新时间戳列。
- 对那些表示密切关注的实体的维度表来说,时间戳用来补充类型2变化的追踪,这将获得高效地ETL处理,当未来需要增加额外的事实表时,时间戳会极大地简化加载过程。
- 为每个维度表都构建时间戳没有必要,如果不需要开展时间点分析,就无须增加额外的工作。
- 与其他维度表一样,时间戳维度表能够链接一个事实表用来分析。
混合技术
当需求冲突,需要采用多种响应方式时,采用混合技术。
采用混合技术的原因:
- 类型1和类型2混合
- 不能应用类型3,记得属性的每个版本都不能用来区分变化前后的事实,每个值都能用来研究所有事实,但是没办法区分在单个事务繁盛时那个版本是有效的
通过提供两个不同的维度列,类型1和类型2混合设计可以处理相同来源的属性,一个被指定为类型1属性,用于按照新值对所有的事实进行分组,另一个被指定为类型2属性,用于按照历史值对所有事实进行分组。
只有在存在真实分析需求时才能实施混合变化,操作型报表可以留给操作型系统来做。
凝固属性
分析型需求偶尔需要保护其原始状态,对修改的属性,什么事情也不做。
相关文章:
数据仓库——维度表更新
维度表的更新 维度表修改规律: 绝大部分维度表都是不变的很多维度虽然会变化,但是变化的很缓慢源记录产品键不会改变产品描述及其他属性的改变都很缓慢在源OLTP 系统中,新的值会覆盖旧的值在数据仓库中,覆盖维度表的属性并不总是适当的做法…...
Web3创作整理 - 2024-02-23 ~ 2024-03-25
Web3 创作整理 - 2024-02-23 ~ 2024-03-25 整理下3月份的文章,方便大家阅读 分类文章地址🫑ETH什么是Dapp🎼ETH什么是以太坊🎵ETH如何才能拥有ETH🎶ETHBTC网络 vs ETH网络🎙️ETHETH网络中的区块链…...
CSS(一)---【CSS简介、导入方式、八种选择器、优先级】
零.前言 本系列适用于零基础小白,亦或是初级前端工程师提升使用。 知识点较为详细,如果追求非常详细,请移步官方网站或搬运网站。 1.CSS简介 CSS全称:“Cascading Style Sheets”,中文名:“层叠样式表”…...
智慧公厕解决方案打造更加智能的卫生空间
一、智慧公厕方案概述 智慧公厕方案旨在解决现有公厕存在的诸多问题,包括民众用厕困难、环境卫生状况不佳、管理效率低下等方面。针对民众的需求和管理方面的挑战,智慧公厕提供了一套综合解决方案,包括智能导航、环境监测、资源管理等功能&a…...
美团0316春招笔试题
下面是美团2024-03-16笔试真题,进行了VP,由于未参与评测,故不保证正确性,仅供参考。 第一题 小美点外卖 求和然后减去满减和红包即可。 #include <bits/stdc.h> using namespace std; using LL long long ; int n, t, x,…...
typescript 实现RabbitMQ死信队列和延迟队列 订单10分钟未付归还库存
Manjaro安装RabbitMQ 安装 sudo pacman -S rabbitmq rabbitmqadmin启动管理模块 sudo rabbitmq-plugins enable rabbitmq_managementsudo rabbitmq-server管理界面 http://127.0.0.1:15672/ 默认用户名和密码都是guest。 要使用 rabbitmqctl 命令添加用户并分配权限…...
怎样才能把重建大师的空三导进去CC?
导出空三文件xml两者都是通用的,cc和photoscan都可以兼容。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型,可一键…...
命令模式(请求与具体实现解耦)
目录 前言 UML plantuml 类图 实战代码 模板 Command Invoker Receiver Client 前言 命令模式解耦了命令请求者(Invoker)和命令执行者(receiver),使得 Invoker 不再直接引用 receiver,而是依赖于…...
开发一款MMOARPG难度到底有多大
开发一款MMOARPG难度到底有多大 MMORPG游戏开发到底有多难,我们按照过去开发的标准,就比如开发一款传奇,那时候哪会用什么别人的引擎,都是自研,从基础图形API开始。我们不考虑美术和策划,就单指程序&#x…...
RTSP应用:实现视频流的实时推送
在实现实时视频流推送的项目中,RTSP(Real Time Streaming Protocol)协议扮演着核心角色。本文将指导你通过安装FFmpeg软件,下载并编译live555,以及配置ffmpeg进行视频流推送,来实现一个基本的RTSP流媒体服务…...
Java八股文(数据结构)
Java八股文の数据结构 数据结构 数据结构 请解释以下数据结构的概念:链表、栈、队列和树。 链表是一种线性数据结构,由节点组成,每个节点包含了指向下一个节点的指针; 栈是一种后进先出(LIFO)的数据结构&a…...
ActiveMQ Artemis 系列| High Availability 主备模式(消息复制) 版本2.19.1
一、ActiveMQ Artemis 介绍 Apache ActiveMQ Artemis 是一个高性能的开源消息代理,它完全符合 Java Message Service (JMS) 2.0 规范,并支持多种通信协议,包括 AMQP、MQTT、STOMP 和 OpenWire 等。ActiveMQ Artemis 由 Apache Software Foun…...
QGIS插件系列--WhiteBox Tools
WhiteBox Tools(官网机翻): WhiteboxTools是由圭尔夫大学地貌测量和水文地理信息学研究小组(GHRG)开发的高级地理空间软件包和数据分析平台。该项目始于2017年<>月,并在分析能力方面迅速发展。WhiteboxTools的一…...
SpringMVC设置全局异常处理器
文章目录 背景分析使用ControllerAdvice(RestControllerAdvice)ExceptionHandler实现全局异常全局异常处理-多个处理器匹配顺序存在一个类中存在不同的类中 对于过滤器和拦截器中的异常,有两种思路可以考虑 背景 在项目中我们有需求做一个全…...
Acwing_795前缀和 【一维前缀和】+【模板】二维前缀和
Acwing_795前缀和 【一维前缀和】 题目: 代码: #include <bits/stdc.h> #define int long long #define INF 0X3f3f3f3f #define endl \n using namespace std; const int N 100010; int arr[N];int n,m; int l,r; signed main(){std::ios::s…...
docker 部署 gitlab-ce 16.9.1
文章目录 [toc]拉取 gitlab-ce 镜像创建 gitlab-ce 持久化目录启停脚本配置配置 gitlab-ce编辑 gitlab-ce 配置文件重启 gitlab-ce配置 root 密码 设置中文 gitlab/gitlab-ce(需要科学上网) 拉取 gitlab-ce 镜像 docker pull gitlab/gitlab-ce:16.9.1-ce.0查看镜像是不是有 Vo…...
29.Python从入门到精通—Python3 面向对象继承 多继承 方法重写 类属性与方法
29.从入门到精通:Python3 面向对象继承 多继承 方法重写 类属性与方法 继承多继承方法重写类属性与方法 继承 在面向对象编程中,继承是指通过继承现有类的属性和方法来创建新类的过程。新类称为子类(或派生类),现有类…...
jQuery如何获取元素宽高?
在jQuery中,获取元素的宽和高有多种方法,取决于你是否需要包括边框、内边距或其他额外空间。以下是几种常用的方式: 获取元素内容区域的宽和高(不包括边框和内边距): var width $(#yourElement).width(); …...
springdata框架对es集成
什么是spring data框架 Spring Data是一个用于简化数据库、非关系型数据库、索引库访问,并支持云服务的开源框架。其主要目标是使得对数据的访问变得方便快捷,并支持 map-reduce框架和云计算数据服务。Spring Data可以极大的简化JPA(Elasticsearch…)的…...
jvm(虚拟机)运行时数据区域介绍
Java虚拟机(JVM)运行时数据区域是Java程序在运行过程中使用的内存区域,它主要包括以下几个部分: 程序计数器(Program Counter Register): 程序计数器是一块较小的内存区域,是线程私有…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...
大学生职业发展与就业创业指导教学评价
这里是引用 作为软工2203/2204班的学生,我们非常感谢您在《大学生职业发展与就业创业指导》课程中的悉心教导。这门课程对我们即将面临实习和就业的工科学生来说至关重要,而您认真负责的教学态度,让课程的每一部分都充满了实用价值。 尤其让我…...
零基础在实践中学习网络安全-皮卡丘靶场(第九期-Unsafe Fileupload模块)(yakit方式)
本期内容并不是很难,相信大家会学的很愉快,当然对于有后端基础的朋友来说,本期内容更加容易了解,当然没有基础的也别担心,本期内容会详细解释有关内容 本期用到的软件:yakit(因为经过之前好多期…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
Android第十三次面试总结(四大 组件基础)
Activity生命周期和四大启动模式详解 一、Activity 生命周期 Activity 的生命周期由一系列回调方法组成,用于管理其创建、可见性、焦点和销毁过程。以下是核心方法及其调用时机: onCreate() 调用时机:Activity 首次创建时调用。…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
【 java 虚拟机知识 第一篇 】
目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...
为什么要创建 Vue 实例
核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...
