简单介绍一下缓慢渐变维

news/2024/12/22 8:25:57/

一,什么是渐变维

维度可以根据变化剧烈程度主要分为无变化维度、缓慢变化维度和剧烈变化维度。例如一个人的相

关信息,身份证号、姓名和性别等信息数据属于不变的部分,政治面貌和婚姻状态属于缓慢变化部分, 而工作经历、工作单位和培训经历等在某种程度上属于急剧变化字段。 大多数维度表随时间的迁移是缓慢变化的。比如增加了新的产品,或者产品的ID号码修改了,或者 产品增加了一个新的属性,此时,维度表就会被修改或者增加新的记录行。这样,在设计维度和使用维度的过程中,就要考虑到缓慢变化维度的处理。

缓慢渐变维,即维度中的属性可能会随着时间发生改变,比如包含用户住址Address的 DimCustomer维度,用户的住址可能会发生改变,进而影响业务统计精度,DimCustomer维度就是缓慢渐变维(SCD)。

SCD有三种分类,我们这里以顾客表为例来进行说明:

假设在第一次从业务数据库中加载了一批数据到数据仓库中,当时业务数据库有这样的一条顾客的

信息。

顾客 BIWORK ,居住在北京,目前是一名 BI 的开发工程师。假设 BIWORK 因为北京空气质量 PM2.5 等原因从北京搬到了三亚。那么这条信息在业务数据库中应该被更新了。

那么当下次从业务数据库中抽取这类信息的时候,数据仓库又应该如何处理呢?我们假设在数据仓库中实现了与业务数据库之间的同步,数据仓库中也直接将词条数据修改更新。后来我们创建报表做一些简单的数据统计分析,这时在数据仓库中所有对顾客 BIWORK 的销售都指向了 BIWORK 新的所在地 - 城市三亚,但是实际上 BIWORK 在之前所有的购买都发生在 BIWORK 居 住在北京的时候。通过这个简单的例子,描述了因一些基本信息的更改可能会引起数据归纳和分析出现的问题。

二,SCD1(缓慢渐变类型1)

通过更新维度记录直接覆盖已存在的值。不维护记录的历史。一般用于修改错误的数据在数据仓库中,我们可以保持业务数据和数据仓库中的数据始终处于一致。可以在 Customer 维 度中使用来自业务数据库中的 Business Key - CustomerID 来追踪业务数据的变化,一旦发生变化那么就将旧的业务数据覆盖重写。DW 中的记录根据业务数据库中的 CustomerID 获取了最新的 City 信息,直接更新到 DW 中。

三,SCD2(缓慢渐变类型2)

在源数据发生变化时,给维度记录建立一个新的“版本”记录,从而维护维度历史。SCD2不删除、不

修改已存在的数据。SCD2也叫拉链表。

当然在数据仓库中更多是对相对静态的历史数据进行数据的汇总和分析,因此会尽可能的维护来自

业务系统中的历史数据,使系统能够真正捕获到这种历史数据的变化。以上面的例子来说,可能需要分

析的结果是 BIWORK 在 2012年的时候购买额度整体平稳,但是从2013年开始购买额度减少了,出现

的原因可能与所在的城市有关系,在北京的门店可能比在三亚的门店相对要多一些。

像这种情况,就不能很简单在数据仓库中将 BIWORK 当前所在城市直接更新,通过起始时间来标

识,Valid To(封链时间)为 NULL 的标识当前数据,也可以用2999,3000,9999等等比较大的年份。

四,SCD3(缓慢渐变类型3)

实际上SCD1 and 2 可以满足大多数需求了,但是仍然有其它的解决方案,比如说 SCD3。 SCD3

希望只维护更少的历史记录。

比如说把要维护的历史字段新增一列,然后每次只更新 Current Column 和 Previous Column。

这样,只保存了最近两次的历史记录。但是如果要维护的字段比较多,就比较麻烦,因为要更多的

Current 和 Previous 字段。所以 SCD3 用的还是没有 SCD1 和 SCD2 那么普遍。它只适用于数据的 存储空间不足并且用户接受有限维度历史的情况


http://www.ppmy.cn/news/1557150.html

相关文章

Debian 10上使用UFW设置防火墙

介绍 UFW或Uncomplicated Firewall是iptables一个接口,旨在简化配置防火墙的过程。 虽然iptables是一个可靠而灵活的工具,但初学者很难学会如何使用它来正确配置防火墙。 如果您希望开始保护网络并且不确定使用哪种工具,UFW可能是您的正确选…

windows openssl编译x64版libssl.lib,编译x64版本libcurl.lib,支持https,vs2015编译器

不要纠结,直接选择用perl编译! 告诫想要用弄成vs编译版的,暂时先别给自己增加麻烦 告诫,以下执行的每一步,都不要纠结 先安装环境 nasm 64位版本 https://www.nasm.us/pub/nasm/releasebuilds/2.16.01/win64/nasm-…

28、论文阅读:基于像素分布重映射和多先验Retinex变分模型的水下图像增强

A Pixel Distribution Remapping and Multi-Prior Retinex Variational Model for Underwater Image Enhancement 摘要介绍相关工作基于模型的水下图像增强方法:无模型水下图像增强方法:基于深度学习的水下图像增强方法: 论文方法概述像素分布…

Redis基础(1)--基本全局指令与架构

1. 基本全局命令 Redis有5种数据结构,但它们都是键值对中的值,对于键来说有⼀些通用的命令。 1.1KEYS 返回所有满足样式(pattern)的key。支持如下统配样式。 h?llo 匹配 hello , hallo 和hxlloh*llo 匹配 hllo 和 heeeelloh[…

Python解释器和PyCharm详解

目录 1.什么是Python解释器? Python解释器的类型和特性 Python解释器的优势 2.什么工具可以写Python文件? 3.为什么Python解释器和PyCharm不在同一个网站? 1.什么是Python解释器? Python解释器‌是Python程序运行的核心,它的主要作用是将Python代码转换为…

【Linux开发工具】版本控制器git

🔥个人主页🔥:孤寂大仙V 🌈收录专栏🌈:Linux 🌹往期回顾🌹:【Linux开发工具】自动化构建-make/Makefile 🔖流水不争,争的是滔滔不 一、git简介二、…

简单工厂模式和策略模式的异同

文章目录 简单工厂模式和策略模式的异同相同点:不同点:目的:结构: C 代码示例简单工厂模式示例(以创建图形对象为例)策略模式示例(以计算价格折扣策略为例)UML区别 简单工厂模式和策…

stm32进硬件错误怎么回事

STM32进入硬件错误状态,通常是由一些特定的编程或硬件问题引起的。以下是一些可能的原因及相应的解决方法: 可能的原因 数组越界操作:在编程过程中,如果数组访问超出了其定义的边界,可能会导致内存访问错误&#xff0…