数仓高频面试 | 数仓为什么要分层
大家好,我是大D呀。
关于数仓分层,在面试过程中几乎是必问的。不过,面试官一般也不会直接考你数仓为什么要分层,而是在你介绍项目时,可能会换一种形式来穿插着问,比如数据链路为什么要这样设计,这些指标为什么不能在一张表里开发。
那么,这个时候你就要结合着自己实际项目,聊一下数仓分层的理论了。为了让回答显得更体系化,可以把数仓分层的原因、有哪些好处以及是如何进行划分的都讲一讲。
反正你不讲,他也不知道你会。
1、数仓分层的原因
首先,你要明白数仓存在的意义是什么?数仓产出的分析指标,理论上在业务系统侧也都能产出,那么还要数仓干什么呢。
数仓的作用就是将企业所有业务系统的数据收集起来,然后再对这些数据集进行分析处理,为决策层和运营部提供数据服务。
但是在分析处理中,由于数据规模和数据量比较大,分析维度有很复杂,放在一起处理,对于开发和运维成本都很大。于是,才有了数仓分层的概念。
2、数仓分层的好处
紧接着,对数仓分层都带来哪些好处展开讲讲,这里要注意一定要分点回答,先别管全面不全面,至少让面试官觉得你的回答很有条理,而不是让他从你含糊的回答中梳理出123来。
-
将复杂问题简单化。将一个复杂的业务加工逻辑拆解成多个步骤来分步完成,每一层只聚焦于某一类问题。当数据出现问题时,通过追溯可以很快定位到问题出现在哪一层,并且只需要对这一层逻辑修复即可。
-
用空间换时间。数据存储持久化,减少重复开发,节省计算资源,提高数据的复用性。比如将稳定且通用的加工逻辑下沉到某一层,下游在使用时可以直接引用,而无须重复计算。
-
清晰数据血缘。将复杂的数据关系梳理成条理清晰的数据模型,建设思路与数据血缘比较清晰,方便协调开发以及问题定位。
这块就多自由发挥一下,把上述3点回答上来,基本分是能拿到了。
比如,还可以多扩展一些,比如屏蔽业务系统影响,提高数据稳定性;对数据权限精细化管控,提升数据安全。
3、数仓该如何分层
数据分层的划分方式或者层次名称在不同公司或者业务线可能不太一样,这块考察更多的是你对分层的理解,哪一层聚焦在解决什么问题以及不解决什么问题,一定要把划分的依据和边界讲清楚。
下面讲一下数仓分层在阿里的划分方式,数据模型分三层:ODS层、CDM层、ADS层。其中,CDM层又可细分为DWD层、DIM层、DWS层。
1、ODS层(贴源层)
数据源是业务数据库,每天的抽取方式可以通过Canal监听Mysql的Binlog日志的方式,将业务系统数据几乎无处理地回放同步到数据仓库中,结构上与系统侧保持一致。这一层要解决的问题是屏蔽系统侧影响,为后续数仓建设提供业务过程中最原始最细粒度的基础数据。
2、CDM层(公共维度模型层)
DWD层(明细层)
这一层是对ODS层进行剔除脏数据、统一单位、规范注释等处理,提供干净和标准的数据。同时,为了提高明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,提供明细数据表的易用性。
比如,对于订单这样量级很大的维度,没有必要用一张维度表来存储,就可以将订单ID的订单类型、下单渠道等维度属性冗余到事实表中。但是也要考虑实际业务场景,对于不稳定的维度(比如商品类目)建议不要做退化,否则会带来很大的刷数成本。
DIM层(维度层)
维度是衡量和观察业务的角度,这层基于维度建模理论,建立整个企业或者业务线上的一致性维度建,降低数据计算口径和算法不统一的风险。
DWS层(汇总数据层)
这层一般根据维度数据和明细数据加工生产的,基于一些分析场景、分析实体,对DWD层数据按照各类维度进行粗粒度地汇总聚合,采用更多的宽表化手段物化模型,构建公共指标数据层,提升公共指标的复用性,减少重复加工。
ADS层(应用层)
这层存放数据产品个性化的统计指标(指数型、比值型、排名型)数据,作为产品特有的个性化指标一班不对外提供数据服务。
4、层次调用规范
对数仓分层中模型和数据的流向规范说明一下。
- ODS层只能被DWD层调用;
- DWD层可以被DWS层和ADS层调用;
- DWS层只能被ADS层调用。
数据调用服务优先使用CDM公共层数据,当公共层没有数据时,需要评估是否需要创建公共层数据,当不需要建设时,方可直接使用ODS层数据。
5、思考
面试中一定要突显出自己对建模理论和应用实践过程的思考,回答出以上理论只是及格分,和其他候选人的区别一定是体现在自己的个人思考之上的。
无论是数仓分层原则还是层次调用规范,都要结合具体的业务场景和业务特点进行建设,不要为了分层而分层,也不要束缚于各种规范。
如果你搭建的数仓模型都是按照规范来的,没有反规范的特殊处理,只能说明做的不够深入,换做同阶或低阶的同学也能做出来,就体现不出其复杂度和模糊度了。
所以,在回答该问题时,一定要结合着实际操练的项目,对遇到的困难和挑战点,把如何通过规范或者反规范的方式解决的过程和思考讲出来,才能获得加分项,更能突显自己。
相关文章:
数仓高频面试 | 数仓为什么要分层
大家好,我是大D呀。 关于数仓分层,在面试过程中几乎是必问的。不过,面试官一般也不会直接考你数仓为什么要分层,而是在你介绍项目时,可能会换一种形式来穿插着问,比如数据链路为什么要这样设计,…...
Coconut:探索大语言模型的连续思维链推理能力
目录 简介: 什么是Coconut? 为什么我们需要Coconut? Coconut如何工作? 实验结果怎么样? Coconut的优势: 结论: 简介: 你有没有想过,计算机是如何像人类一样思考问…...
2024年安徽省职业院校技能大赛水利工程BIM建模与应用
2024年安徽省职业院校技能大赛 赛 项 规 程 赛项名称: 水利工程BIM建模与应用 赛项组别: 高职组 承办单位: 安徽水利水电职业技术学院 目录 一、赛项名称… 1 二、竞赛目标… 1 三、竞赛内容… 2 四、竞赛方式… 3 五、竞赛流程… 4 七、技术…...
vue常用命令汇总
nvm 一个nodejs版本管理工具,解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 npm 可以管理 nodejs 的第三方插件。 vue-cli 是Vue提供的一个官方cli,专门为单页面应用快速搭建繁杂的脚手架。 nginx 是一个高性能的HTTP和反向代理we…...
ios上架构建版本没苹果电脑怎么上传
在app store上架的时候,遇到下图的问题: 点击蓝色加号的时候,并没有构建版本可以选择 从图中可以看出,它给我们推荐了很多上传工具,比如xcode、transporter或命令行工具之类的,但是这些工具都是只能在苹果…...
某名校考研自命题C++程序设计——近10年真题汇总(上)
本帖更新一些某校的编程真题,总体来说不难,考察的都是基本功,92高校大一期末的难度,不过有些细节颇为繁琐,各位还是需要一定程度上注意的~ 目录 一.分数求和 二.大小写字母转换 三.判断当年天序 四.交替合并字符串…...
【ChatGPT】解锁AI思维链:如何让机器像人类一样思考?
在人工智能领域,我们一直在追求让机器像人类一样思考。然而,即使是最先进的AI,也常常被诟病缺乏“常识”,难以理解复杂问题,更不用说像人类一样进行逻辑推理和解决问题了。最经常的表现就是遇到不会的地方,…...
️️️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践20241212
🛡️ 避坑指南:如何修复国密gmssl 库填充问题并提炼优秀加密实践 ✨ 引言 在当下的数据安全环境中,SM4作为中国国家密码算法的代表性选择,被广泛应用于金融、通信和政府领域。然而,在实际开发中,即便是开…...
鸿蒙ArkTS如何实现数据可视化:饼状图/柱状图/折线图
鸿蒙数据可视化系列 在我们鸿蒙APP开发中,经常需要使用到一些图表的开发,本文主要介绍使用 McCharts 框架绘制柱状图的方法 配套指导视频地址:鸿蒙数据可视化系列-McCharts使用介绍_哔哩哔哩_bilibili 1. 第三方库介绍 1.1. McCharts Mc…...
Win10环境vscode+latex+中文快速配置
安装vscodelatex workshop 配置: {"liveServer.settings.donotVerifyTags": true,"liveServer.settings.donotShowInfoMsg": true,"explorer.confirmDelete": false,"files.autoSave": "afterDelay","exp…...
Android14 AOSP支持短按关机
修改frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java diff --git a/base/services/core/java/com/android/server/policy/PhoneWindowManager.java b/base/services/core/java/com/android/server/policy/PhoneWindowManager.java in…...
康耐视智能相机(Insight)通过ModbusTCP发送字符串到倍福(BECKHOFF)PLC中
文章目录 1.背景2.分析3.实现3.1.PLC的ModbusTCP_Server3.1.1.安装TF6250-Modbus-TCP3.1.2.PLC设置 3.2.智能相机的ModbusTCP_Client3.2.1.了解ModbusTCP的协议3.2.2.根据协议写代码3.2.2.1.纯函数代码3.2.2.2.脚本代码 3.2.3.非脚本处理时的代码逻辑图3.2.4.关于代码的问题及解…...
OpenCV 图像变换与处理实战
OpenCV快速通关 第一章:OpenCV 简介与环境搭建 第二章:OpenCV 图像基本操作 第三章:OpenCV 图像变换与处理实战 OpenCV 图像变换与处理实战 OpenCV快速通关OpenCV 图像变换与处理实战一、OpenCV 基础与图像处理概览二、图像变换理论精析三、…...
meta llama 大模型一个基础语言模型的集合
LLaMA 是一个基础语言模型的集合,参数范围从 7B 到 65B。我们在数万亿个 Token 上训练我们的模型,并表明可以专门使用公开可用的数据集来训练最先进的模型,而无需诉诸专有的和无法访问的数据集。特别是,LLaMA-13B 在大多数基准测试…...
【MySQL — 数据库基础】深入理解数据库服务与数据库关系、MySQL连接创建、客户端工具及架构解析
目录 1. 数据库服务&数据库&表之间的关系 1.1 复习 my.ini 1.2 MYSQL服务基于mysqld启动而启动 1.3 数据库服务的具体含义 1.4 数据库服务&数据库&表之间的关系 2. 客户端工具 2.1 客户端连接MySQL服务器 2.2 客…...
详解多租户架构下的资源隔离模式
文章目录 0.简介1.多租户概念1.1 基本概念1.2 单租户 vs 多租户 2.实现方案2.1 独立数据库方案2.1.1 优点2.1.2 缺点2.1.3 应用场景 2.2 共享数据库,独立 Schema2.2.1 优点2.2.2 缺点2.2.3 应用场景 2.3 共享数据库、共享Schema、共享表2.3.1 优点2.3.2 缺点2.3.3 应…...
Bananna Pi开源社区联合矽昌通信打造开源的低成本Wifi5路由器
香蕉派 BPI-Wifi5 路由器采用矽昌SF19A2890S2芯片方案设计。它是一款高性能无线路由器,适用于小微企业、家庭和其他网络环境。Banana Pi开源社区提供整体解决方案。所有代码开源,用户可以在上面自由开发自己的应用。 Banana Pi wifi5 路由器github代码: …...
根据契约进行分析--录像店案例研究01
Richard Mitchell 著,zhen_lei 译 本文包括录像店案例研究的一些片段,用来说明根据契约进行分析的原理。本文假定读者已经从其它渠道学习了一些关于根据契约进行分析的方法。 完整的一套模型可以写成一本书。这些选择的片段用来说明开发的某些方面&…...
Linux系统操作03|chmod、vim
上文: Linux系统操作02|基本命令-CSDN博客 目录 六、chmod:给文件设置权限 1、字母法 2、数字法(用的最多) 七、vim:代码编写和文本编辑 1、启动和退出 1️⃣启动 2️⃣退出 2、vim基本操作 六、chmod&#x…...
MyBatis 核心知识与实践
一、MyBatis 概述 1. 框架简介 MyBatis 是一款支持自定义 SQL、存储过程以及高级映射的持久层框架。它避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的操作,使开发人员能够更专注于 SQL 语句的编写和业务逻辑的处理。 2. 核心组件 SqlSessionFactoryB…...
负载均衡oj项目:介绍
目录 项目介绍 项目演示 项目介绍 负载均衡oj是一个基于bs模式的项目。 用户使用浏览器向oj模块提交代码,oj模块会在所有在线的后端主机中选择一个负载情况最低的主机,将用户的代码提交给该主机,该主机进行编译运行,将结果返回…...
Oracle最佳实践-优化硬解析
前段时间参加oracle CAB,oracle高级服务部门做了一个数据库最佳实践的报告,其中就有一项就是解决未使用绑定变量但执行次数很多的SQL; 对于一个数据库来说如果不知道该如何优化,那么最简单最有效的优化就是减少硬解析,…...
Java 实现给pdf文件指定位置盖章功能
Java 实现给pdf文件指定位置盖章功能 开发中遇到一个需求, 需要给用户上传的的pdf文件, 指定位置上盖公章的功能, 经过调研和对比, 最终确定实现思路. 这里是使用pdf文件中的关键字进行章子的定位, 之所以这样考虑是因为如果直接写死坐标的话, 可能会出现因pdf大小, 缩放, 盖章…...
前端通过 jspdf 和 html2canvas 工具将网页生成 pdf
由于 html2canvas 的性能问题,该方案对于页数比较多的场景生成的非常慢,可以试着使用 modern-screenshot 工具看是否性能会得到提升。 import html2canvas from html2canvas import { jsPDF } from jspdfasync function exportPdf(){const pages docume…...
网络安全—部署CA证书服务器
网络拓扑 两台服务器在同一网段即可,即能够互相ping通。 安装步骤 安装证书系统 首先我们对计算机名进行确认,安装了证书系统后我们是不能随意更改计算机名字的,因为以后颁发的证书都是和计算机也就是这一台的服务器名字有关。 修改完成后开…...
用Keytool和OpenSSL生成和签发数字证书
一)keytool生成私钥文件(.key)和签名请求文件(.csr),openssl签发数字证书 J2SDK在目录%JAVA_HOME%/bin提供了密钥库管理工具Keytool,用于管理密钥、证书和证书链。Keytool工具的命令在JavaSE6中已经改变,不过以前的命令仍然支持。Keytool也可以用来管理对称加密算法中…...
《CSS 知识点》大屏卡片布局思路:弹性布局 flex-grow
思路 大屏左右两侧高宽一致,内部卡片可按比例设置! 使用弹性布局和属性 flex-grow 设置比例;间隔使用 margin-bottom 设置,最后一个卡片不设置; 效果如图 代码说明 CSS代码 26 - 30,左右两侧设置弹性布…...
ceph单节点部署方式
准备一台单节点虚拟机,2C4G 三个50G的SCSi类型的磁盘 0. 关闭防火墙/关闭SELinux/下载podman/配置时间同步 systemctl disable --now firewalld setenforce 0 vim /etc/sysconfig/selinux SELINUXenforcing 修改为 SELINUXdisabled yum install podman -y sed -…...
【人工智能】OpenAI O1模型:超越GPT-4的长上下文RAG性能详解与优化指南
在人工智能(AI)领域,长上下文生成与检索(RAG) 已成为提升自然语言处理(NLP)模型性能的关键技术之一。随着数据规模与应用场景的不断扩展,如何高效地处理海量上下文信息,成…...
Qt如何将字串显示成二维码以供扫码识别
在Qt中可以使用QRcode来生成二维码,本质上说,其实是把一串信息生成二维码形式的图片。 首先介绍下QRcode,QRCode原本是一个用于生成二维码的 JavaScript 库,在Qt中大佬们将其改成C语言实现。现直接放出来,使用的时候直…...
【Golang】如何读取并解析SQL文件
一、背景 在数据库开发与维护过程中,我们经常需要执行大量的SQL语句。有时,这些SQL语句会被保存在一个文件中,以便于批量执行。为了方便地在Go语言中处理这些SQL文件,我们可以编写一个函数来读取并解析SQL文件中的语句。 二、实…...
图形学笔记 - 5. 光线追踪 - RayTracing
Whitted-Style Ray tracing 为什么要光线追踪 光栅化不能很好地处理全局效果 软阴影尤其是当光线反射不止一次的时候 栅格化速度很快,但质量相对较低 光线追踪是准确的,但速度很慢 光栅化:实时,光线追踪:离线~10K …...
WHY - 为什么选择 Rsbuild
目录 一、介绍二、工具对比三、性能 https://rsbuild.dev/zh/guide/start/index 一、介绍 Rsbuild 是由 Rspack 驱动的高性能构建工具,它默认包含了一套精心设计的构建配置,提供开箱即用的开发体验,并能够充分发挥出 Rspack 的性能优势。 二…...
前端(模块化)
未使用模块化 定义两个js文件simple1.js和simple2.js let a11; let a11; 两个js文件变量重名 在html测试 传统引入js文件 <script src"./simple1.js"></script> <script src"./simple2.js"></script> 浏览器报错 使用模块…...
Elasticsearch:Mapping-映射
一、创建索引 自动生成索引字段数据类型即自动映射 创建之前,先删除索引防止重复创建 删除索引: DELETE product_mapping创建索引 product_mapping并且赋值 PUT /product_mapping/_doc/1 {"name": "xiaomi phone","desc": "s…...
掘金电影市场的新机遇:开发特惠电影票小程序api文档
随着电影市场的不断扩大,特惠电影票小程序成为创业者和企业争相布局的新蓝海。本文将带你深入了解特惠电影票小程序的开发要点,以及如何通过这个项目实现盈利。 项目背景及市场分析 电影市场规模的不断扩大为特惠电影票小程序提供了广阔的市场空间。 根…...
EFAK kafka可视化管理工具部署使用
简介:EFAK是开源的可视化和管理软件。它允许您查询、可视化、提醒和探索您的指标,无论它们存储在何处。简单来说,它为您提供了将 Kafka 集群数据转换为漂亮的图形和可视化效果的工具。 环境:①操作系统:CentOS7.6&…...
---mysql server: Ubuntu Linux下最最基本的操作
作为开发人员你不需要做复杂的mysql server的各种维护操作, 只是想在本机或虚拟机做个server,然后整测试性数据库. 下面我给出最最简单的基本操作: Ubuntu安装完mysql server, 并且后,可以做如下基本操作,就表示可以了 你可以在这个基…...
Ariba Procurement: Administration_Master data
采购主数据集成Procurement Master Data Integration 注意:并非所有元素都是必需的,数据元素的名称可能根据ERP的不同,有所不同。 Types of Master Data Accounting 在SAP Ariba中的各种会计元素字段中,填充有效值选择列表。建…...
Not using native diff for overlay2, this may cause degraded performance……
问题现象 案例:Anolis 8.9(4.19.91-26.an8.x86_64) Overlay2存储驱动程序) 当我们安装好Docker之后,通过systemctl status docker -l 会发现有一个告警信息:levelwarning msg"Not using native dif…...
【自然语言处理与大模型】使用llama.cpp将HF格式大模型转换为GGUF格式
llama.cpp的主要目标是在本地和云端的各种硬件上以最小的设置和最先进的性能实现LLM推理。是一个专为大型语言模型(LLM)设计的高性能推理框架,完全使用C和C编写,没有外部依赖,这使得它可以很容易地被移植到不同的操作系…...
item2 for macos
安装Item2 brew install iterm2 查看终端类型 cat /etc/shells Mac OS X 10.15 已经将默认的shell从Bash换成了zsh,所以不用安装,10.15以前的可以使用下面的命令进行安装 brew install zsh 安装Oh My ZSH # curl sh -c "$(curl -fsSL https://ra…...
docker命令
目录 docker buildwgetdocker rundocker compose为什么docker compose比docker build 和run快很多? docker build docker build -t mineru:latestdocker build 命令是 Docker 的核心命令之一,用于从 Dockerfile 构建新的 Docker 镜像。 docker build&am…...
OrangePi Zero2 驱动开发
目录 一. 芯片手册 1. 资料下载地址 2. 阅读芯片手册 2.1 GPIO 寄存器的基地址是 (0x0300B000) 2.2 PC_CFG0 寄存器的偏移量(0x0048) 2.3 PC_CFG1 的偏移量(0x004C) 2.4 PC_CFG2 的偏移量(0x0050) 2.5 PC_DAT寄存器的偏移量(0x0058) 二. 驱动代码调试 2.1 …...
C/C++字符数组与字符串操作
C/C字符数组与字符串操作 录入 字符 scanf("%c",&字符变量); 字符变量 getchar(); #include <stdio.h> int main() {char ch;while ((ch getchar()) ! EOF) {putchar(ch);}return 0; }上述程序会在文件结尾后结束循环,在命令行中运行&#…...
动手学深度学习---线性神经网络
一、线性回归 解析解:模型的解可以用一个公式简单的表示,这类解叫做解析解。 超参数:可以调整但不在训练过程中更新的参数称为超参数。调参是选择超参数的过程。超参数通常是我们根据训练迭代结果来调整的。 在无法得到解析解的情况下…...
24计算机考研,东南大学和电子科技大学如何选择?
针对题主的情况,更推荐成电。成电上岸更为简单,就业前景也非常不错,性价比相当高。如果基础很扎实、更注重学校牌子、或是未来想在江浙沪发展的同学,东南大学是个很好的选择。下面就从学校综合实力、招录情况、考试难度来详细对比…...
Redis应用-在用户数据里的应用
1.社区电商的业务闭环 接下来介绍的社区电商是以Redis作为主体技术、以MySQL和RocketMQ作为辅助技术实现的。 (1)社区电商运作模式 社区电商的关键点在于社区,而电商则是辅助性质(次要地位,流量变现)。社区可以分成很多种社区,比如美食社区、美妆社区、影评社区、妈妈社区…...
STL容器-map P3613【深基15.例2】寄包柜 普及-
题目来源:洛谷题库 文章目录 map例题map知识点map使用注意:map的常用用法 map例题 P3613【深基15.例2】寄包柜 普及- 题意 根据数据插入/查询 思路 map键值对可以根据柜子编号查找物品,但是柜子又有很多个,考虑数组或者map数组…...
excel使用笔记
1.工作表1计算工作表2某列的和 假设我们有两个工作表,分别命名为“Sheet1”和“Sheet2”,我们想要求和这两个工作表中A1到A**单元格的数据,可以在任意一个工作表的单元格中输入以下公式: SUM(Sheet1!A1:A10, Sheet2!A1:A10) SUM…...