数据仓库——维度表更新
维度表的更新
维度表修改规律:
- 绝大部分维度表都是不变的
- 很多维度虽然会变化,但是变化的很缓慢
- 源记录产品键不会改变
- 产品描述及其他属性的改变都很缓慢
- 在源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): 程序计数器是一块较小的内存区域,是线程私有…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
边缘计算医疗风险自查APP开发方案
核心目标:在便携设备(智能手表/家用检测仪)部署轻量化疾病预测模型,实现低延迟、隐私安全的实时健康风险评估。 一、技术架构设计 #mermaid-svg-iuNaeeLK2YoFKfao {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg…...
定时器任务——若依源码分析
分析util包下面的工具类schedule utils: ScheduleUtils 是若依中用于与 Quartz 框架交互的工具类,封装了定时任务的 创建、更新、暂停、删除等核心逻辑。 createScheduleJob createScheduleJob 用于将任务注册到 Quartz,先构建任务的 JobD…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...
破解路内监管盲区:免布线低位视频桩重塑停车管理新标准
城市路内停车管理常因行道树遮挡、高位设备盲区等问题,导致车牌识别率低、逃费率高,传统模式在复杂路段束手无策。免布线低位视频桩凭借超低视角部署与智能算法,正成为破局关键。该设备安装于车位侧方0.5-0.7米高度,直接规避树枝遮…...
认识CMake并使用CMake构建自己的第一个项目
1.CMake的作用和优势 跨平台支持:CMake支持多种操作系统和编译器,使用同一份构建配置可以在不同的环境中使用 简化配置:通过CMakeLists.txt文件,用户可以定义项目结构、依赖项、编译选项等,无需手动编写复杂的构建脚本…...
C++实现分布式网络通信框架RPC(2)——rpc发布端
有了上篇文章的项目的基本知识的了解,现在我们就开始构建项目。 目录 一、构建工程目录 二、本地服务发布成RPC服务 2.1理解RPC发布 2.2实现 三、Mprpc框架的基础类设计 3.1框架的初始化类 MprpcApplication 代码实现 3.2读取配置文件类 MprpcConfig 代码实现…...
多元隐函数 偏导公式
我们来推导隐函数 z z ( x , y ) z z(x, y) zz(x,y) 的偏导公式,给定一个隐函数关系: F ( x , y , z ( x , y ) ) 0 F(x, y, z(x, y)) 0 F(x,y,z(x,y))0 🧠 目标: 求 ∂ z ∂ x \frac{\partial z}{\partial x} ∂x∂z、 …...
