如何构建数仓中的维度拉链表

1

什么是拉链表

1)拉链表是针对数据仓库设计中表存储数据的方式而定义的,顾名思义,所谓拉链,就是记录历史。记录一个事物从开始,一直到当前状态的所有变化的信息。

2)使用拉链表既能满足反应数据的历史状态,又可以最大程度的节省存储。

3)拉链表多适用于表中频率和变化比例较低的场景。

2

如何构建维度拉链表

1. 理想情况

1)数仓中需要构建保存历史维度信息的维度表时,一般推荐创建维度拉链表(维度属性的变化频率较低)。

2)维度拉链创建举例(记录员工所属部门发生变化的维度表)如下:

① 新入职时,工号为1和2的员工所属部门均是部门01,构建拉链维度表如下图,注意此时工号1和2的员工所属部门01的生效时间是2024-01,失效时间是9999-12(无穷大)。

② 2024-02月人事调整,工号1和工号2的员工所属部门由部门01变更为部门02,构建拉链维度表如下图,注意此时工号1和2的员工所属部门01的失效时间变更为2024-02,所属部门02属性的失效时间变更为9999-12。采用拉链的方式记录了员工所属部门由部门01变动至部门02的变化。

2. 复杂情况

第2节中描述的是一种非常理想的状态,即每次获取的源端数据中仅包含维度发生变化的数据且只是发生了一次变化,如果源端数据中存在重复数据、发生多次变化的数据如何处理?例如: 员工1和2在2024-03部门(相比于2024-02)未发生变化,2024-04部门变更为部门03,2024-05部门仍然为部门03,2024-06部门变更为部门02,以上所有数据同时读取后如何构建拉链?源端数据如下:

针对上述情况的数据,主要思路为先按工号进行分组,分组后按发生时间进行升序排序,排序后相邻数据中所属部门一致的仅取第一条。示例如下:

源端数据处理后,和已存在拉链表数据做拉链,入库时工号相同的数据按发生时间正序插入,插入时需和拉链表中失效时间为9999-12的记录比较,工号一致的且部门一致的记录丢弃,最终维度表记录如下。

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

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

后端SpringBoot学习项目-项目基础搭建

IDEA创建SpringBoot项目 大佬文章,有基础者可以直接打开参考。我这个记录的是纯纯小白的步骤 创建项目 按钮新建 点击按钮-----新建项目 弹窗配置–生成器 弹窗中选择生成器 ---- Spring Initializr ○ 服务器URL修改为 start.springboot.io start.aliyun.co…

Android CarrierConfig 参数项和正则匹配逻辑

背景 在编写CarrierConfig的时候经常出现配置不生效的情况,比如运营商支持大范围的imsi,或者是测试人员写卡位数的问题等等,因此就需要模式匹配(包含但不限于正则表达式)。 基本概念: 模式匹配涉及定义一个“模式”&a…

《青牛科技 GC6125:驱动芯片中的璀璨之星,点亮 IPcamera 和云台控制(替代 BU24025/ROHM)》

一、GC6125 在 IPcamera 和云台控制中的卓越表现 驱动能力:为监控注入强劲动力 GC6125 作为一款专为 IPcamera 和云台控制而设计的驱动芯片,拥有令人惊叹的驱动能力。在云台电机的驱动方面,它就像一位技艺精湛的驭手,能精准地掌控…

qt QUndoView详解

1、概述 QUndoView 是 Qt 框架中用于显示 QUndoStack(撤销堆栈)内容的视图类。它通常与 QUndoStack 一起使用,为用户提供了一个可视化的界面来查看和操作撤销/重做历史。QUndoView 可以显示堆栈中的每个命令,并允许用户通过界面进…

spring:Spring Security实践过程中的报错总结

文章目录 问题1报错解决 问题2报错解决 问题3报错解决 问题4报错解决 问题5报错解决 问题6报错解决 问题1 报错 You have entered a password with no PasswordEncoder. If that is your intent, it should be prefixed with {noop}. 解决 Spring Security 期望密码使用 Pa…

目前对于后期的打算

在完成了 Python 基本语法的学习后,我犹如推开了编程世界的一扇大门,初窥门径却也深知前方还有广袤无垠的知识天地等待我去探索。Python 作为一门广泛应用于软件开发、数据分析和人工智能等领域的高级编程语言,在当今数字化时代具有举足轻重的…

多种算法解决组合优化问题平台

🏡作者主页:点击! 🤖编程探索专栏:点击! ⏰️创作时间:2024年11月11日7点12分 点击开启你的论文编程之旅https://www.aspiringcode.com/content?id17302099790265&uidef7618fa204346ff9…

C/C++逆向:结构体逆向分析

在C/C程序的逆向分析中,结构体的逆向分析是非常重要的。结构体是C/C中管理和组织数据的一种主要方式。了解它们的布局可以帮助你理解程序是如何存储、处理和传递数据的,结构体常用于组织和管理复杂的数据,理解结构体有助于我们更好地还原程序…

Kettle启动闪退(Couldn‘t read the database cache)

强制关机之后,kettle启动闪退 具体可以用debug模式运行脚本来定位问题 启动之后查看运行日志 DEBUG: Using JAVA_HOME DEBUG: _PENTAHO_JAVA_HOMEC:\Application\JDK DEBUG: _PENTAHO_JAVAC:\Application\JDK\bin\java.exeC:\Application\Kettle\data-integratio…

【机器学习】任务十:从函数分析到机器学习应用与BP神经网络

目录 1.从函数分析到机器学习应用 1.1 3D曲面图可视化报告 1.1.1 目标 1.1.2 代码分析 1.1.3 结果分析 1.1.4 观察与总结 1.1.5 结论 1.2 一元函数梯度计算报告 1.2.1 目标 1.2.2 代码分析 1.2.4 计算结果 1.2.5 优势与意义 1.2.6 结论 1.3 一元函数梯度和二阶导…

写一段python程序,利用时间序列分析的方法,预测股价的趋势

要使用时间序列分析来预测股价趋势,你需要使用统计学方法来分析历史股价数据,并基于这些数据来预测未来的股价走势。以下是一个简单的Python程序,使用ARIMA(自回归积分滑动平均模型)来预测股价趋势。 首先,…

C++初阶——类和对象(中)

目录 1、类的默认成员函数 2、构造函数 3、析构函数 4、拷贝构造函数 5、赋值运算符重载函数 5.1 运算符重载 5.2 赋值运算符重载函数 6、取地址运算符重载函数 6.1 const成员函数 6.2 取地址运算符重载函数 1、类的默认成员函数 默认成员函数就是用户没有显式实现&a…

蓝牙电话-如何做到无人值守(方案探讨)

蓝牙电话-如何做到无人值守(方案探讨) 一、前言 在蓝牙电话出现和在市场上使用的过程中,有好多的客户和友商隐晦或含蓄的咨询,问说蓝牙方案及其构建的体系,能不能做到无人值守?就是那种因业务原因需要把设备…

网络号和网络地址一样吗?真相揭晓

网络号和网络地址是两个在计算机网络领域中经常被提及的概念,尽管它们之间存在一定的关联性,但它们并不等同。为了深入理解这两个概念,我们需要从它们的定义、功能、应用以及相互关系等方面进行详细探讨。 一、网络号的定义与功能 网络号&am…

计算机网络-1.2分层结构

文章目录 三种分层结构OSI 七层模型(Open Systems Interconnection Model)TCP/IP 四层模型混合模型各层之间的关系PDU,SDU,PCIPDU(Protocol Data Unit)SDU(Service Data Unit)PCI(Protocol Cont…

css:还是语法

emmet的使用 emmet是一个插件&#xff0c;Emmet 是 Zen Coding 的升级版&#xff0c;由 Zen Coding 的原作者进行开发&#xff0c;可以快速的编写 HTML、CSS 以及实现其他的功能。很多文本编辑器都支持&#xff0c;我们只是学会使用它&#xff1a; 生成html结构 <!-- emme…

2024年第45周ETF周报

ETF 第45 周 &#xff08; 2024-11-04 至 2024-11-10 &#xff09;周报 核心观点 ETF 业绩表现 股票型ETF周度收益率中位数为4.5831%宽基ETF中&#xff0c;创业板指涨跌幅中位数为6.1644%&#xff0c;跌幅最小。按板块划分&#xff0c;金融涨跌幅中位数为9.1867%&#xff0c…

基于Python的校园爱心帮扶管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

优化时钟网络之时钟抖动

Note&#xff1a;文章内容以Xilinx 7系列FPGA进行讲解 1、什么是时钟抖动 时钟抖动就是时钟周期之间出现的偏差。比如一个时钟周期为10ns的时钟&#xff0c;理想情况下&#xff0c;其上升沿会出现在0ns&#xff0c;10ns&#xff0c;20ns时刻&#xff0c;假设某个上升沿出现的时…

ORB-SLAM2源码学习:MapPoint.cc: MapPoint::PredictScale()预测一个尺度

前言 这部分是根据帧或者关键帧的地图点的深度来预测它对应的二维特征点所在的金字塔层级。 1.函数声明 1.预测地图点对应特征点所在的图像金字塔尺度层数 /*预测地图点对应特征点所在的图像金字塔尺度层数currentDist 相机光心距离地图点距离pKF 关键帧return…