[离线数仓] 总结三、Hive数仓DIM层开发

5.9 数仓开发之DIM层

DIM层设计要点:

(1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。

(2)DIM层的数据存储格式为orc列式存储+snappy压缩。

(3)DIM层表名的命名规范为dim_表名_全量表或者拉链表标识(full/zip)。

-- 数仓开发之DIM层
-- DIM层设计要点:
-- (1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。
-- (2)DIM层的数据存储格式为orc列式存储+snappy压缩。
-- (3)DIM层表名的命名规范为dim_表名_全量表或者拉链表标识(full/zip)。-- DIM层
-- Dimension:维度
/*所谓维度就是分析数据的角度,维度层保存的表其实就是分析数据的角度表- 性别- 年龄- 品牌- 品类- 地区- 省份
维度层保存维度表,建模理论应该遵循维度建模理论:维度层中的维度表,主要用于统计分析,数据存储方式应该选择列式存储:orc(hive)数据的压缩效率应该越高越好(时间短),选择:snappy维度表的数据源:ODS层的数据为整个数据仓库做准备(MySQL业务数据库的数据,日志服务器的日志文件按照同构的方式存放到ods层),但是ods层的数据比较杂乱无章,遵循的是ER模型,ER模型的表很多,没有中心点,数据表很多,在统计分析的时候就需要关联很多表,需要对杂乱无章的数据进行加工,让其方便用于分析计算。维度层的表有同样的问题,需要将ODS层的数据进行加工处理。维度表命名规范:分层标记(dim_)_维度名称_全量(full)/拉链(zip)全量:维度的全部数据  -- 状态数据为了避免数据出现问题,最好的方法是每年都保存一份全部数据。绝大多数的维度表都是全量表,特殊情况采用拉链表。为什么要保留全量数据?-- 案例:去年双11各个品牌的销量排名前10名selectb.tm,sum(a.amount) amountfrom t_order ajoin t_sku b on a.skuid=b.idwhere dt = '2022-11-11'group by b.tmorder by amount desc limit 10;这里存在一个问题,在t_sku 商品信息表中,不会保存已经下架的商品,t_sku 只会存储当前已有的商品信息,假设刚好去年销量很好的商品今年已经下架了,这个时候在t_sku 表中是查不出来的。因此sku有状态的数据每天存一份。建模理论:- ER模型- 维度模型维度(状态)表事实(行为)表维度表:表:维度(表),一个维度就是一张表。-- 从实践来讲,一般会将有关联性的维度设置为一张表,不同的维度就是这张表的(维度)字段。-- 比如:t_order,t_sex,t_age 三表join才能从性别和年龄维度分析订单,三表join的效率会比较低,所以不能这样设计表。性别和年龄有关联可以在一张表中:t_order,t_user(sex, age) 这样只需要两表关联就可以实现上述需求。t_order,t_sku(tm, category) 订单和商品表关联,可以从品牌和品类去分析订单。-- 维度表的维度字段,关键就看维度之间有没有关联,有关联的放在一张表,没关联的分开建表。-- 如果维度特别简单,特别独立,只在特殊场合使用,比如payment_type(支付方式)只有在支付场景使用,这个表就可以不用创建,可以在事实表中直接使用而不用单独创建维度表(维度退化)字段(维度属性):只要能

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

VUE3 事件的处理

在 Vue.js 中,事件处理是通过 v-on 指令来实现的,允许我们在 DOM 元素上监听用户交互并执行相应的操作。通过事件绑定,Vue.js 可以响应用户的点击、输入、提交等行为。 1. 基本的事件绑定 v-on 指令用于监听事件,并在事件发生时…

Photon最新版本PUN 2.29 PREE,在无网的局域网下,无法连接自己搭建的本地服务器

1.图1为官方解答 2.就是加上这一段段代码:PhotonNetwork.NetworkingClient.SerializationProtocol SerializationProtocol.GpBinaryV16; 完美解决 unity 商店最新PUN 2 插件 不能连接 (环境为:本地局域网 无外网情况 ) …

消息中间件类型介绍

消息中间件是一种在分布式系统中用于实现消息传递的软件架构模式。它能够在不同的系统或应用之间异步地传输数据,实现系统的解耦、提高系统的可扩展性和可靠性。以下是几种常见的消息中间件类型及其介绍: 1.RabbitMQ 特点: • 基于AMQP&#…

Github 2025-01-07Python开源项目日报 Top10

根据Github Trendings的统计,今日(2025-01-07统计)共有10个项目上榜。根据开发语言中项目的数量,汇总情况如下: 开发语言项目数量Python项目10TypeScript项目1C++项目1OpenHands: 人工智能驱动的软件开发代理平台 创建周期:195 天开发语言:Python协议类型:MIT LicenseSta…

走进 JavaScript 世界:掌握核心技能

目录 一、引言 二、JavaScript 基础 (一)历史与特点 脚本语言 与 HTML 和 CSS 紧密结合 事件驱动和异步执行 (二)语法基础 变量与数据类型 运算符与表达式 控制结构 条件语句 循环语句 (三)函…

51单片机(二)中断系统与外部中断实验

中断即单片机因为某些原因E暂定现在的工作P0,转去做其他的工作P1,完了之后继续之前的事P0,其他工作P1就是中断程序,原因E就是中断事件,原因由外部发生,程序不能预测到的是硬中断,可以由程度触发…

python-42-使用selenium-wire爬取微信公众号下的所有文章列表

文章目录 1 seleniumwire1.1 selenium-wire简介1.2 获取请求和响应信息2 操作2.1 自动获取token和cookie和agent2.3 获取所有清单3 异常解决3.1 请求url失败的问题3.2 访问链接不安全的问题4 参考附录1 seleniumwire Selenium WebDriver本身并不直接提供获取HTTP请求头(header…

汽车信息安全 -- S32K1如何更新BOOT_MAC

目录 1.安全启动模式回顾 2.为什么要讨论BOOT_MAC 3.S32K1如何更新? 1.安全启动模式回顾 之前提到过,S32K1系列提供了Crypto Service Engine硬件加密模块(简称CSEc),大家可以通过该芯片系统寄存器SDID.FEATURES(System Device Identification Register)来判断自己的片子…

【Python】Python与C的区别

文章目录 语句结束符代码块表示变量声明函数定义注释格式Python的标识符数据输入input()函数数据输出print()函数 语句结束符 C 语言 C 语言中每条语句必须以分号;结束。例如,int a 10;、printf("Hello, World!");。分号是语句的一部分,用于…

理解Unity脚本编译过程:程序集

https://docs.unity3d.com/Manual/script-compilation.html 关于Unity C#脚本编译的细节,其中一个比较重要的知识点就是如何自定义Assembly。 预定义的assembly 默认情况下,Unity会按照这个规则进行编译。 PhaseAssembly nameScript files1Assembly-…

ubuntu22.04 gcc,g++从10.5切换到低版本9.5

一、安装gcc-9.5 mkdir gcc cd gcc sudo apt-get download $(apt-cache depends --recurse --no-recommends --no-suggests --no-conflicts --no-breaks --no-replaces --no-enhances --no-pre-depends gcc-9 | grep -v i386 | grep "^\w") sudo dpkg -i *.deb sudo…

统计有序矩阵中的负数

统计有序矩阵中的负数 描述 给你一个 m * n 的矩阵 grid,矩阵中的元素无论是按行还是按列,都以非递增顺序排列。 请你统计并返回 grid 中 负数 的数目 示例 1: 输入:grid [[4,3,2,-1],[3,2,1,-1],[1,1,-1,-2],[-1,-1,-2,-3]]…

Linux内核TTY子系统有什么(6)

接前一篇文章:Linux内核TTY子系统有什么(5) 本文内容参考: Linux TTY子系统框架-CSDN博客 一文彻底讲清Linux tty子系统架构及编程实例-CSDN博客 linux TTY子系统(3) - tty driver_sys tty device driver-CSDN博客 Linux TTY …

深入理解 Python 的多进程编程 (Multiprocessing)

在 Python 中,multiprocessing 模块提供了多进程支持,是处理并发任务的一个核心工具。与多线程不同,多进程可以突破 GIL(Global Interpreter Lock,全局解释器锁)的限制,充分利用多核 CPU 进行并…

《代码随想录》Day31打卡!

《代码随想录》贪心算法:合并区间 本题的完整题目如下所示: 本题的完整思路如下所示: 1.本题依然是先对数组的左边界进行排序。将数组的第一个元素赋值给current。 2.遍历数组,判断current中的右边界和当前元素的左边界是否有重叠…

windows及linux 安装 Yarn 4.x 版本

1. 确保系统环境准备 a. 安装 Node.js Yarn 依赖于 Node.js,所以需要先安装 Node.js。前往 Node.js 官网 下载并安装适合你的 Windows 版本的 Node.js(推荐 LTS 版本)。安装完成后,打开命令提示符(CMD)或 PowerShell,验证安装:node -v npm -v如果显示版本号,则表示安…

KL 散度:多维度解读概率分布间的隐秘 “距离”

深入理解KL散度:从多维度全面剖析 损失函数相关文章(置顶) 1. KL 散度:多维度解读概率分布间的隐秘 “距离” 2. 熵与交叉熵:从不确定性角度理解 KL 散度 3. 机器学习、深度学习关于熵你所需要知道的一切 引言 KL散即…

Spring bean的生命周期和扩展

bean生命周期流程 生命周期扩展处理说明实例化:createBeanInstance 构造方法, 如Autowired的构造方法注入依赖bean 如UserService构造方法注入AppDAO: Autowired public UserService(AppDAO appDAO) {System.out.println("Autowired appDAO:"…

node-sass@4.14.1报错的最终解决方案分享

输入npm i全安装文件所需的依赖的时候,博主是使用sass去书写的,使用的是node-sass4.14.1和sass-loader7.3.1的版本的,安装的时候老是出现错误, node-sass4.14.1版本不再被支持的原因 node-sass 是一个基于 LibSass 的 Node.js 绑…

设计模式(观察者模式)

设计模式(观察者模式) 第三章 设计模式之观察者模式 观察者模式介绍 观察者模式(Observer Design Pattern) 也被称为发布订阅模式 。模式定义:在对象之间定义一个一对多的依赖,当一个对象状态改变的时候…