分享好友 最新动态首页 最新动态分类 切换频道
历史时点数据统计如何设计表结构_好家伙,数仓表对于数据人,还不是小菜一碟?...
2024-12-20 23:52

作为一个数据菜鸟,我们总是会听到一些别人“习以为常”的黑话。例如,在数据仓库中,必不可少地要和表、数据打交道。但是一堆不知所云的“表”,总会让我们头大。

01 全量表增量表快照表

我们先从几个物理概念入手理解什么是流量、存量、增量
(1)存量:系统在某一时点时的所保有的数量
(2)流量:是指在某一段时间内流入/流出系统的数量
(3)增量:则是指在某一段时间内系统中保有数量的变化情况,但是常规意义上就是增加的量,增量=流入量–流出量

全量表

全量表无分区,每天凌晨流程执行完后,表中数据是截止到前一天的数据。以上图为例,20161121查询全量表数据,就是20161120的数据:ABC,以此类推。

增量表

增量表按天分区,分区字段为dt=YYYYMMDD, 每一天的分区会存放在那一天所产生的增量数据(insert, update的数据),注意目前增量表的同步方式不会包含历史数据,即只存放增量数据。以上图为例,我们最早可以在20161122查询20161121的增量表数据,为DE,即20161121比20161120多出来的数据。

快照表

快照表按天分区,分区字段为dt=YYYYMMDD, 每一天的数据都是截止到那一天的全量数据。以上图为例,我们最早可以在20161121查询20161120的快照数据,为ABC。

02 拉链表流水表中间表

拉链表

维护历史状态以及最新状态数据的一种表,拉链表根据拉链粒度的不同,可以方便的还原出拉链时点的操作记录。拉链表也是分区表,分区字段一般为start_date、end_date。如果我们想获取某一天全量的数据,可以通过表中的start_date和end_date来做筛选,选出固定某一天的数据。例如我想取截止到20201111的全量数据,其where过滤条件就是where start_date<='20201111' and="" end_date="">='20201111'。

拉链表和增量表的表结构基本一样。适用于表的数据量很大,表中的部分字段会被update更新操作,而我们需要查看某一个时间点或者时间段的历史快照信息,如统计账户及客户的情况。如果每天保留一份全量数据,就浪费了存储空间,有时可能业务统计也有点麻烦;如果保留一份最新的全量数据,就看不到数据的变化,所以拉链表是个很好的选择。

流水表

流水表:记录表的每一个修改,反映实际记录的变更。

流水表也为分区表流水表有多方面的作用,如记录与结算相关的金额信息,与结算侧的数据核对;流水有不同的状态:未就绪、已就绪、已发送,通过不同的状态,流水可以做不同的动作以流转到下一状态,达成最终通知结算的目的。

中间表

简单来说,中间表是数据库中专门存放中间计算结果的数据表。

第一种情况,计算sql计算无法一步到位,需要经过复杂的设计,要经过几个过度才能得到想要的结果。

第二种情况,实时计算所需要时间过长。或者因为数据量大或者因为计算太复杂,比如某一时间点前一段时间计算好结果,当到达改时间点使用中间表顶上。

第三种情况,当数据源比较多(通常情况),需要多表混合计算整合,这时导入数据库形成中间表是必要的。

03 宽表vs窄表

宽表

从字面意义上讲就是字段比较多的数据库表。

通常是指业务主题相关的指标、维度、属性关联在一起的一张数据库表。由于把不同的内容都放在同一张表存储,宽表已经不符合三范式的模型设计规范,坏处就是数据冗余,好处是查询性能的提高与便捷。这种宽表的设计广泛应用于数据挖掘模型训练前的数据准备阶段,通过把相关字段放在同一张表中,可以大大提高数据挖掘模型训练过程中迭代计算时的效率问题。(一句话,空间换时间,便于训练迭代、减少表关联数量,修改少量数据时不需要该多张表。)

窄表

严格按照数据库设计三范式。尽量减少数据冗余,但是缺点是修改一个数据可能需要修改多张表。

04 维度表vs事实表

事实表

每个数据仓库都包含一个或者多个事实数据表。事实表每行对应一个业务过程事件度量。包括数字度量和与维度表相关联的外键。

事实表分类

·事务事实表:对应现实中空间或时间上某点度量事件。仅当存在度量事件时才会插入行。一般是原子维度。(典型的销售表)日期,产品,地区,客户,数量

·周期快照事实表:每行汇总了发生在某一标准周期的多个度量事件,或者记录了快照时间点业务活动度量值,快照表能展现出更多重要的过程,与事务事实表互相补充。粒度是周期性的,密度是均匀的,即使周期内未发生活动,也会在表中每个事实插入0或空值或未发生变化的值的行。(典型的库存表)日期,产品,仓库,期初数量,期末数量。

·累计快照事实表:每行汇总了业务过程开始和结束之间已知步骤的度量事件,通常包含一个状态维度的外键,用于更新状态维度以反映当前行整个流程的最新状态。当业务过程开始时,会插入一行,当业务过程步骤发生状态变化时,会修改该行。(典型的送货表)产品,客户,下单时间,出库时间,签收时间。

·无事实的事实表:无具体度量值,事件仅记录一系列某时刻发生的多维事实。如某天学生参加课程的事件,其中没有数值,但事件包含日期、学生、教师、地点等属性信息。或者通过每个周期记录每个促销产品形成促销事实表,再用该表跟销售事实表做差集,找到在促销但未发生销售事实的产品。用来关注什么未发生。一般是周期性的表。

·聚集事实表:是对原子粒度事实表数据进行简单的数字化上卷操作,目的是为提高查询性能。

·合并事实表:通常将来自多个业务过程的,以相同粒度表示的事实合并为一个单一的合并事实表。适合经常需要共同分析的多个业务过程度量。

维度表

维度表包含单一的主键列。例如,包含产品信息的维度表通常包含将产品分为食品、饮料、非消费品等若干类的层次结构。维度表包含了事实表中指定属性的相关详细信息,比如,详细的产品,客户属性,存储信息等。

维度表分类

支架表

当维度表中存在以其他维度条件过滤、分组查询时,可以使用支架表实现。比如产品维度中的产品引进日期,如果需要通过非标准日历属性(如财务周期,假日周期等)过滤和分组查询时,就需要支架表来实现。如果没有这类查询,则只需要将引进日期字段使用普通的日期类型保存即可。

桥接表(多值维度)

在多值情况下,可以使用桥接表。

·事实与维度的多值关系:比如报销账单事实表粒度为一次体检,其对应的检查项维度会有多个。

·维度与维度的多值关系:例如用户帐户维度与消费自然人客户维度有多对多关系。因此在帐户维度表与自然人维度表中加入一个“帐户与客户关系”桥接表。

·可变层次展示:例如职员与职员间隶属关系,可以使用桥接表记录每个职员与其所有下属之间的隶属关系和其下属的直接上司,就可以层次化的表示出职员之间关系。

审计维度

数据仓库内部的维度表。包含了事实表变更的元数据,事实数据的加载时间,数据质量指标。审计维度可以提供如下的信息

·审计信息:数据源、加载时间、加载过程、加载时所用的规则

·提供数据质量的指标和统计:读取了多少行记录,插入了多少行,拒绝了多少行。事实数据是否完整,事实表的值是否在有效区域内。

大表小表千千万,千言万语尽在不言中。

数据道路上道阻且长,数据人会一直在你身边哦

我们下期见!下周六将与你分享《数据仓库模型设计那些事》。

最新文章
分析大型门户网站截取热门流量的SEO策略
一说到热门流量这个词,我想大家都会很快的想到利用热门话题或者热门事件来获取短期的高流量,在SEO里这种方式一般被称为截取流量,也就是利用SEO的方式来在短期内获得热门关键词的较好排名,从而获取短期的热门流量。比如网络上经常会出现
115网盘提取码怎么用 115网盘提取码下载的方式应用攻略
通过115提取码下载的方式有很多,首先115网盘自身就提供了专门的下载器优蛋。安装优蛋以后,点击文件页面的优蛋下载选框,就会直接弹出优蛋下载器,直接进行下载。或者在优蛋新建下载,直接输入提取码或文件页面网址,也可进行下载。步骤 1
佛山SEO排名应该怎么做?(SEO排名的10个有效方法)
佛山SEO排名应该怎么做?(SEO排名的10个有效方法)排名佛山SEO排名应该怎么做?(SEO排名的10个有效方法) 一、SEO排名应该怎么做?SEO排名的10个有效方法1、在进行SEO排名优化时,关键词研究是至关重要的第一步。通过使用关键词研究工具
PHP在线客服系统平台源码(完全开源的网页在线客服系统)
大家好,又见面了,我是你们的朋友全栈君。  在线客服系统是一个使用PHP、JavaScript和CSS开发的即时网页聊天咨询系统。该项目包含管理员和用户端。管理员端管理所有的管理,如编辑站点内容、管理提供者和预订,管理员在这个系统的管理中
刷360网站快速排名,策略与实践,360seo刷网站关键字排名优化官网
在当今的互联网时代,网站的可见度直接影响着其流量和商业价值,而在众多的搜索引擎中,360搜索作为国内主流的搜索引擎之一,其排名机制自然成为了许多网站管理员关注的焦点,本文将深入探讨如何通过刷360网站快速排名来提升网站的曝光度和
友点 CMS V9.1 后台登录绕过 GetShell
友点CMS9.1是一款国内常用的开源CMS系统,近日被指出存在一个getshell漏洞,该漏洞可允许攻击者通过构造特殊的请求参数向网站注入任意代码,并获取服务器的控制权。经分析,该漏洞影响范围较广,可影响友点CMS9.1及其以下版本。攻击者通过
关键词优化攻略,全方位策略助力企业业绩飙升
本指南深入解析了选择和优化推广关键词的策略,通过精准定位目标受众,提升广告效果。涵盖关键词研究、分析、筛选与持续优化,助力企业实现业绩显著增长。随着互联网的飞速发展,线上推广已经成为企业拓展市场、提升品牌知名度的重要手段,
如何让你的品牌在搜索引擎上闪耀?
如何让你的品牌在搜索引擎上闪耀?在数字化时代,品牌的在线存在感越来越重要,而搜索引擎优化(SEO)是提升品牌在搜索引擎上曝光度的关键。无论是增加网站流量、提高转化率,还是提升品牌声誉,SEO的作用都不可忽视。本文将从关键词优化、
CentOS 7 使用 docker 安装 typecho 博客系统
我的博客 https://savokiss.com 用的是 typecho,一直使用的是 阿里云ECS 直接安装的 MySQL 和 PHP,由于买的时间比较早,当时用的是 CentOS 6.5。后来想玩 docker,发现 docker 只支持 CentOS 7+,加
【魅影T800百度网盘下载】MOPS 魅影T800百度网盘12.18.3免费下载
百度网盘是一款省心、好用的超级云存储产品,已为超过7亿用户提供云服务,空间超大,支持多类型文件的备份、分享、查看和处理,自建多个数据存储中心,更有两项国际安全认证ISO27001&ISO27018为用户数据安全提供护航,如果您想备份文件数
相关文章
推荐文章
发表评论
0评