数据仓库-维度设计

维度

在维度建模中,将度量称为"事实",将环境描述为"维度",维度是分析事实所需要的多样环境。

例如,在分析交易过程时,可以通过买家、卖家、商品和时间等维度描述交易发生的环境。

维度的基本设计方法

第一步:选择维度或新建维度。

作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性。

第二步:确定主维表

主维表一般是ODS表,直接与业务系统同步。

第三步:确定相关维表

根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些应用于生成维度属性。

第四步:确定维度属性

本步骤主要包括两个阶段,其中一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。

缓慢变化维

数据仓库的重要特点之一是反映历史变化,所以如何处理维度的变化是维度设计的重要工作之一。缓慢变化维的提出是因为在现实世界中,维度的属性并不是静态的。它会随着时间的流逝发生缓慢的变化。与数据增长较为快速的事实表相比,维度变化相对缓慢。在Kimball的理论中,有三种处理缓慢变化维的方式。

方式一

重写维度值。采用此方式,不保留历史数据,始终取最新数据。

方式二

插入新的维度行。采用此方式,保留历史数据,维度值变化前的事实和过去的维度值关联,维度值变化后的事实和当前的维度值关联。

方式三

添加维度列,通过新列保存变化后的维度值。采用第二种处理方式不能将变化前后记录的事实归一为变化前的维度或归一为变化后的维度。

历史拉链存储就是利用缓慢变化维的第二种处理方式。这种处理方式是通过新增两个时间戳字段(start_dt和end_dt),将所有以天为粒度的变更数据都记录下来。通常分区字段也是时间戳字段。

相关推荐
weixin_307779131 小时前
使用C#实现从Hive的CREATE TABLE语句中提取分区字段名和数据类型
开发语言·数据仓库·hive·c#
墨染丶eye17 小时前
数据仓库项目启动与管理
大数据·数据仓库·spark
weixin_307779131 天前
C#实现HiveQL建表语句中特殊数据类型的包裹
开发语言·数据仓库·hive·c#
一个天蝎座 白勺 程序猿2 天前
大数据(4.3)Hive基础查询完全指南:从SELECT到复杂查询的10大核心技巧
数据仓库·hive·hadoop
weixin_307779132 天前
判断HiveQL语句为建表语句的识别函数
开发语言·数据仓库·hive·c#
zhangjin12222 天前
kettle从入门到精通 第九十四课 ETL之kettle MySQL Bulk Loader大批量高性能数据写入
大数据·数据仓库·mysql·etl·kettle实战·kettlel批量插入·kettle mysql
chat2tomorrow3 天前
数据仓库是什么?数据仓库的前世今生 (数据仓库系列一)
大数据·数据库·数据仓库·低代码·华为·spark·sql2api
shouwangV63 天前
hive执行CTAS报错“Hive Runtime Error while processing row”
数据仓库·hive·hadoop
一个天蝎座 白勺 程序猿3 天前
大数据(4.1)Hive架构设计与企业级实战:从内核原理到性能巅峰优化,打造高效数据仓库
数据仓库·hive·hadoop
fridayCodeFly4 天前
用数组遍历出来的页面,随节点创建的ref存储在数据仓库中,如果数据删除,页面相关节点也会删除,数据仓库中随节点创建的ref会不会也同时删除
数据仓库