当前位置: 首页 > news >正文

[离线数仓] 总结三、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(支付方式)只有在支付场景使用,这个表就可以不用创建,可以在事实表中直接使用而不用单独创建维度表(维度退化)字段(维度属性):只要能

相关文章:

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

5.9 数仓开发之DIM层 DIM层设计要点: (1)DIM层的设计依据是维度建模理论,该层存储维度模型的维度表。 (2)DIM层的数据存储格式为orc列式存储+snappy压缩。 (3)DIM层表名的命名规范为dim_表名_全量表或者拉链表标识(full/zip)。 -- 数仓开发之DIM层 -- DIM层设计要点:…...

搭建RK3588开发板Qt交叉编译环境

一、开发环境 在虚拟机里安装Ubuntu20.04Qt5.14.2交叉编译器gcc-linaro-7.5.0 二、相关资料下载 在虚拟机里安装Ubuntu20.04 Ubuntu20.04镜像下载(https://mirrors.tuna.tsinghua.edu.cn/ubuntu-releases/)安装Qt5.14.2 下载安装包和源码 安装包(http…...

【Rust自学】11.3. 自定义错误信息

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.3.1. 添加错误信息 在 11.2. 断言(Assert) 中我们学习了assert!、assert_eq!和assert_ne!这三个宏,而这篇文章讲的就是它…...

ROS核心概念解析:从Node到Master,再到roslaunch的全面指南

Node 在ROS中,最小的进程单元就是节点(node)。一个软件包里可以有多个可执行文件,可执行文件在运行之后就成了一个进程(process),这个进程在ROS中就叫做节点。 从程序角度来说,node就是一个可执行文件&…...

Autodl安装tensorflow2.10.0记录

首先租用新实例(我选的是3080*2卡),由于基础镜像中没有2.10.0版本,选miniconda3的基础环境 创建虚拟环境:conda create --name xxx python3.8(环境名)激活虚拟环境:conda activate x…...

Linux第一课:c语言 学习记录day06

四、数组 冒泡排序 两两比较,第 j 个和 j1 个比较 int a[5] {5, 4, 3, 2, 1}; 第一轮:i 0 n:n个数,比较 n-1-i 次 4 5 3 2 1 // 第一次比较 j 0 4 3 5 2 1 // 第二次比较 j 1 4 3 2 5 1 // 第三次比较 j 2 4 3 2 1 5 // …...

代码随想录day03

203 链表基础操作 class Solution { public:ListNode* removeElements(ListNode* head, int val) {while (head!NULL&&head->valval){ListNode* temphead;headhead->next;delete temp;}ListNode* curhead;while (cur!NULL&&cur->next!NULL){if(cur-…...

python-leetcode-无重复字符的最长子串

3. 无重复字符的最长子串 - 力扣(LeetCode) class Solution:def lengthOfLongestSubstring(self, s: str) -> int:char_set set()left 0max_length 0for right in range(len(s)):while s[right] in char_set:char_set.remove(s[left])left 1char_…...

30天开发操作系统 第 12 天 -- 定时器 v1.0

前言 定时器(Timer)对于操作系统非常重要。它在原理上却很简单,只是每隔一段时间(比如0.01秒)就发送一个中断信号给CPU。幸亏有了定时器,CPU才不用辛苦地去计量时间。……如果没有定时器会怎么样呢?让我们想象一下吧。 假如CPU看不到定时器而仍想计量时…...

RNN之:LSTM 长短期记忆模型-结构-理论详解(Matlab向)

前言 递归!循环神经网络Recurrent Neural Network 循环神经网络(又称递归神经网络,Recurrent Neural Network,RNN)。是一种用于处理序列数据的神经网络结构,具有记忆功能,能够捕捉序列中的时间…...

vue的路由守卫逻辑处理不当导致部署在nginx上无法捕捉后端异步响应消息等问题

近期对前端的路由卫士有了更多的认识。 何为路由守卫?这可能是一种约定俗成的名称。就是VUE中的自定义函数,用来处理路由跳转。 import { createRouter, createWebHashHistory } from "vue-router";const router createRouter({history: cr…...

C++版的飞翔的小鸟

忙了几天,写了个小鸟游戏打发时间。 MINGWOPENGL 作者很懒,具体看readme.txt吧。 好吧,这就是个当网盘用的,没有售后服务的,而且还不怎么会上传文件。。。😂😂 顺便问下,这破玩意上…...

深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用

【自然语言处理】——深入详解自然语言处理(NLP)中的语言模型:BERT、GPT及其他预训练模型的原理与应用 自然语言处理(NLP)是人工智能(AI)领域中的重要分支,旨在通过计算机处理和分析…...

EFCore HasDefaultValueSql (续1 ValueGeneratedOnAdd)

前情:EFCore HasDefaultValueSql 小伙伴在使用 HasDefaultValueSql 时,对相关的 ValueGeneratedOnAdd 也有了疑问: ValueGeneratedOnAdd 和 HasDefaultValueSql 是 Entity Framework Core 中用于管理字段默认值的两种不同配置方式&#xff0…...

React PureComponent使用场景

1. 基本概念 1.1 什么是 PureComponent PureComponent 是 React 提供的一个优化类组件,它通过自动实现 shouldComponentUpdate 生命周期方法,对 props 和 state 进行浅比较来决定是否需要重新渲染组件。 1.2 与 Component 的区别 // 普通 Component …...

初学者如何利用AI辅助编程快速搭建软件原型

在当今这个快速发展的科技时代,AI辅助编程已成为软件开发领域的一大助力,尤其在搭建软件原型阶段,更是能帮助开发者快速探索众多想法,创造出新事物。吴恩达老师最近分享了关于搭建简单Web应用原型的一些最佳实践,其中重…...

六、Angular 发送请求/ HttpClient 模块

一、应用 HttpClient 模块 angular/common/http 中的 HttpClient 类基于浏览器提供的 XMLHttpRequest 接口。要想使用 HtpClient 模块,就要先导入 Anqular 的 HttpClientModule。大多数 Web 应用程序都会在根模块 AppModule 中导入它。 编辑 src/app/app.module.ts…...

11_Redis数据类型-Geo地理位置

1.Geo地理位置介绍 1.1 基本概念 Redis中的GEO(Geographic)是一种专门用于处理地理位置信息的功能模块,自Redis 3.2版本引入。它特别适合用于LBS(基于位置的服务)应用,如查找附近的餐馆、用户或兴趣点等。Redis GEO的实现依赖于有序集合(sorted set),并且利用了Geoh…...

电脑每次开机卡到windows图标界面进不去

我遇到的现象是: 可以正常开机,也可以重装系统,主板电池换过,硬盘,内存也没问题,但每次开机都会卡到这个界面不动,也不崩溃,也进不去系统。最后的解决方法:换CPU&#x…...

如何将 DotNetFramework 项目打包成 NuGet 包并发布

如何将 DotNetFramework 项目打包成 NuGet 包并发布 在软件开发过程中,将项目打包成 NuGet 包并发布到 NuGet 库,可以让其他开发者方便地引用和使用你的项目成果。以下是将 WixWPFWizardBA 项目打包成 NuGet 包并发布的详细步骤: 1. 创建 .n…...

7 分布式定时任务调度框架

先简单介绍下分布式定时任务调度框架的使用场景和功能和架构,然后再介绍世面上常见的产品 我们在大型的复杂的系统下,会有大量的跑批,定时任务的功能,如果在独立的子项目中单独去处理这些任务,随着业务的复杂度的提高…...

鸿蒙UI开发——日历选择器

1、概 述 在项目开发中,我们时常会用到日历选择器,效果如下: ArkUI已经为我们提供了组件,我们可以直接使用,下面针对日历组件做简单介绍。 2、CalendarPickerDialog 接口定义如下: // 定义日历选择器弹…...

【python基础——异常BUG】

什么是异常(BUG) 检测到错误,py编译器无法继续执行,反而出现错误提示 如果遇到错误能继续执行,那么就捕获(try) 1.得到异常:try的执行,try内只可以捕获一个异常 2.预案执行:except后面的语句 3.传入异常:except … as uestcprint(uestc) 4.没有异常:else… 5.鉴定完毕,收尾的语…...

【论文复现】量子海洋捕食者算法用于多级图像分割问题

目录 1.摘要2.海洋捕食者算法MPA原理3.改进策略4.结果展示5.参考文献6.代码获取 1.摘要 本文提出了一种基于量子理论的改进海洋捕食者算法(QMPA),专门用于解决多级图像分割问题。QMPA算法利用薛定谔波函数中的概率函数来确定任何时刻粒子的位…...

【python自写包模块的标准化方法】

目标: 自写一个包,提供关于字符串和文件的模块 要求对异常可以检测 str_tools.py: def str_reverse(s):""":param s: 传入的字符串:return: 反转后的字符串"""# i -1# j 0# s2 ""# while i > (-len(s)):# s2 s[i]# …...

STL——二叉搜索树

目录 二叉搜索树的概念 ⼆叉搜索树的性能分析 ⼆叉搜索树的插⼊ ⼆叉搜索树的查找 ⼆叉搜索树的删除 中序遍历结果为升序序列 二叉搜索树的概念 ⼆叉搜索树⼜称⼆叉排序树,它或者是⼀棵空树,或者是具有以下性质的⼆叉树 • 若它的左⼦树不为空&#…...

2025年XR行业展望:超越虚拟,融合现实

随着科技的飞速发展,扩展现实(XR)技术正逐渐从科幻走进日常生活。2025年,除了备受瞩目的AI百镜大战,XR行业同样充满期待,一系列创新产品和技术进步有望重塑我们对数字世界的体验。 Meta Quest 3S:VR行业的风向标 作为Meta旗下的拳头产品,Quest系列一直是VR市场的领军…...

python异常机制

异常是什么? 软件程序在运行过程中,非常可能遇到刚刚提到的这些问题,我们称之为异常,英文是Exception,意思是例外。遇到这些例外情况,或者交异常,我们怎么让写的程序做出合理的处理&#xff0c…...

JVM与Java体系结构

一、前言: Java语言和JVM简介: Java是目前最为广泛的软件开发平台之一。 JVM:跨语言的平台 随着Java7的正式发布,Java虚拟机的设计者们通过JSR-292规范基本实现在Java虚拟机平台上运行非Java语言编写的程序。 Java虚拟机根本不关心运行在其内部的程序到底是使用何…...

【Python】Python与C的区别

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

怎么抓取ios 移动app的https请求?

怎么抓取IOS应用程序里面的https? 这个涉及到2个问题 1.电脑怎么抓到IOS手机流量? 2.HTTPS怎么解密? 部分app可以使用代理抓包的方式,但是正式点的app用代理抓包是抓不到的,例如pin检测,证书双向校验等…...

中学综合素质笔记3

第一章职业理念 第三节 教师观 考情提示: 单选题材料分析题 学习要求: 理解、 识记、 运用 (一)教师职业角色的转变(单选材料分析) 从教师与学生的关系看——对学生 新课程要求教师应该是学生学习的引…...

U盘加密软件哪个好用?免安装、安全、防复制

U盘作为一种便携式存储设备,因其携带方便、使用灵活而广受欢迎。然而,U盘的易失性也使其成为数据泄露的高风险载体。为了确保U盘中数据的安全性,使用专业的U盘加密软件是必不可少的。 免安装 更方便 《U盘超级加密3000》这款软件下载后直接…...

C++异常

1.C语言的错误处理方式 1.1直接终止程序 利用assert和exit都是直接终止程序。 1.2返回错误码 例如C语言程序的很对接口函数都会将错误信息存储在errno中表示错误。当我们自己设计函数时,函数返回值和返回错误码容易混淆,且如果函数调用栈较深时&…...

银河麒麟v10 arm版 鲲鹏 U盘安装 +解决 安装源 设置基础软件仓库时出错

人人为我,我为人人,分享出来,避免他人踩坑 U盘刻录 出现问题 进入系统安装界面,这里可以看到在“软件”-“安装源”选项上报错了,提示“设置基础软件仓库时出错” 2种解决办法 1. 有网的情况(注意自己查地址…...

[network]回顾:集线器(Hub)

集线器(Hub)的发明是计算机网络发展史上的一个重要里程碑。它最初的设计目的是为了解决局域网(LAN)中多台计算机共享网络资源的需求。 #mermaid-svg-OAmOmKYGAXoglS5z {font-family:"trebuchet ms",verdana,arial,sans-…...

【Vue.js 组件化】高效组件管理与自动化实践指南

文章目录 摘要引言组件命名规范与组织结构命名规范目录组织 依赖管理工具自动化组件文档生成构建自动引入和文档生成的组件化体系代码结构自动引入组件配置使用 Storybook 展示组件文档自动生成 代码详解QA 环节总结参考资料 摘要 在现代前端开发中,组件化管理是 V…...

打桩机:灾害救援中的 “应急尖兵”,稳固支撑的保障|鼎跃安全

在自然灾害或突发事故中,如地震、泥石流、洪涝灾害、山体滑坡等,地质条件的不稳定可能导致建筑物倒塌、道路损毁、堤坝决口等情况,严重威胁人员和财产安全。 打桩机是一种用于将桩打入地基的重型机械设备,其主要功能是提供支撑力&…...

java1-相对路径与绝对路径

注意注意~开始新部分啦! 开始正式分享java前,先为大家分享一下一个常用的概念---文件的相对路径与绝对路径. 开篇明义: 相对路径是指一个文件或目录相对于当前工作目录的路径。相对路径不包含根目录,而是从当前目录开始计算。 绝对路径是指一个文件或目录从根目录…...

工厂管理中 BOM(物料清单)

工厂管理中 BOM(物料清单)的一些优点: 1. 提高生产计划准确性 - 准确反映产品所需的物料及数量,为生产计划提供可靠依据,减少因物料估算错误导致的生产延误。 2. 优化成本控制 - 有助于精确计算产品成本&…...

allure报告修改默认语言为中文

1、项目根目录创建.py文件,把代码复制进去 import os from pathlib import Pathdef create_settings_js_file(directory"../pytest_mytt/reports/allures/", filenamesettings.js):# 创建或确认目录存在Path(directory).mkdir(parentsTrue, exist_okTrue…...

浅谈弱电系统RVVP和RVSP电缆的区别(

1、RVVP 1.1RVVP电缆定义? RVVP电缆抗干扰软电缆、屏蔽电缆、信号电缆、控制电缆(名字很多),学名:铜芯-聚氯乙烯绝缘-屏蔽聚氯乙烯护套-软电缆。 1.2RVVP执行标准 主要执行标准为JB/T8734.5-2016,部…...

MySQL 入门大全:常用函数

🧑 博主简介:CSDN博客专家,历代文学网(PC端可以访问:https://literature.sinhy.com/#/literature?__c1000,移动端可微信小程序搜索“历代文学”)总架构师,15年工作经验,…...

RV1126+FFMPEG推流项目(1)总体框架讲解

音视频推流项目的讲解 项目介绍 本项目通过 RV1126 采集摄像头和麦克风数据,采用 H.264/H.265 视频编码技术和 AAC 音频编码技术进行压缩和合成复合流,然后推送到流媒体服务器。 项目框图 下图展示了整个项目的总体流程图,核心部分包括&a…...

量子计算遇上人工智能:突破算力瓶颈的关键?

引言:量子计算遇上人工智能——突破算力瓶颈的关键? 在数字化时代的浪潮中,人工智能(AI)正以前所未有的速度改变着我们的生活,从语音助手到自动驾驶,从医学诊断到金融分析,无不彰显其…...

Kafka消费者如何优雅下线

一、背景 我们在Kafka消费程序中,可能会调用dubbo接口,也可能会使用线程池,连接池等,但是在服务下线的时候,kafka的消费总是会报错。比如dubbo接口就会抛出异常RpcException: The channel is closed. 这说明kafka还在…...

Go语言的网络编程

Go语言的网络编程 Go语言(又称Golang)是一种由Google开发的开源编程语言,以简洁、高效和并发为主要特点。网络编程是Go语言的一个重要应用领域,其优秀的并发模型和丰富的标准库使得Go成为开发高性能网络应用的理想选择。本篇文章…...

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法

网络安全 | 网络安全法规:GDPR、CCPA与中国网络安全法 一、前言二、欧盟《通用数据保护条例》(GDPR)2.1 背景2.2 主要内容2.3 特点2.4 实施效果与影响 三、美国《加利福尼亚州消费者隐私法案》(CCPA)3.1 背景3.2 主要内…...

外部获取nVisual所在层级方法

Iframe嵌入nVisual,在iframe渲染完成之后,以后通过增加window.addEventListener()方法监听message事件,来获取nvisual当前的所在层级以及所选中的节点列表以及线缆列表。 nVisualPatrolDiagramIdList 变量是获取nVisual当前所在的层级的ID值…...

ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现

ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现 目录 ARIMA模型 (AutoRegressive Integrated Moving Average) 算法详解与PyTorch实现1. ARIMA模型概述1.1 时间序列预测1.2 ARIMA的优势2. ARIMA的核心技术2.1 自回归 (AR)2.2 差分 (I)2.3 移动平…...