数仓建模:数仓设计中的10个陷阱

news2024/12/24 21:53:12

目录

0 引言

1 主要内容

1.1 过于迷恋技术,而没有将重点放在业务需求和目标上

1.2 没有或无法找到一个有影响的、平易近人的、明白事理的高级管理人员作为数仓建设的发起人

1.3 将项目处理为一个巨大的持续多年的项目,而不是追求更容易管理的、虽然仍然具有挑战性的迭代开发工作

1.4 分配大量的精力去构建规范化数据结构, 在最终呈现数据之前,用尽所有的预算

1.5 将主要精力投入到后端操作型性能和易开发性,而没有重点考虑前端查询的性能和易用性

1.6 使存在于应用层的可查询数据设计的过于复杂,应该通过简化解决方案开发出更适合需要的产品

1.7.烟囱式开发,不考虑使用可共享的、一致性维度将数据模型联系在一起

1.8只将汇总数据加载到数据仓库中

1.9.臆想业务、业务需求及分析,其涉及的数据及支持技术都是静态的

1.10 忽略数据仓库的成功直接来源于业务的认可。如果用户未将数据仓库系统当成他们制定决策的基础,那么所有的工作都是徒劳

2小结


0 引言

在Ralph Kimball和Margy Ross的《数据仓库工具箱》一书中,提到了数据仓库设计中的10个常见陷阱,本文针对每个陷阱添加了一条与数据仓库设计经验有关的附加解释。在着手进行数据仓库项目之前,可以了解一下数这10个常见陷阱。这样才可以不被数据仓库设计的陷阱所困扰,避免这10个常见的陷阱可以在构建数仓的过程少走些弯路。

1 主要内容

1.1 过于迷恋技术,而没有将重点放在业务需求和目标上

数仓归根结底是要解决业务问题的,狂拽酷炫的数据架构和层出不穷的新技术通常会比去了解用户需求更具有吸引力。其实,也没有完美的技术架构,只要是能够满足当下及未来可见的业务需求即可,合适就好。应当把时间投入在理解和梳理业务上,这样才能够构建出相对合理的数据模型,从而提高模型的复用性,及时响应业务需求。另外建数仓的目的是什么,或者说数仓有哪些价值呢,其实最终还是要凸显数据的价值,做了一堆表、设计一堆模型,如果只是停留在这个层面,那数仓将毫无意义。通过数据产品透出数据并能够指导业务,才是我们做数仓多应该思考的一个问题。

1.2 没有或无法找到一个有影响的、平易近人的、明白事理的高级管理人员作为数仓建设的发起人

数仓建设是多部门合作的结果,只有这样才能够真正的实现数据赋能业务。所以没有高层的支持和重视,数仓的建设将会很难推进。这种情况在传统的企业尤其重要,一般互联网公司,数据是内置在基因里面的,对数据重视程度是非常高的,所以利用数据指导业务是顺其自然的事情。对传统的中小企业而言,前期没有数据沉淀,基本上靠手工报表解决一些简单统计,这个时候要去推进一些数仓项目,能有个影响力的领导者是非常重要的,否则将很难推进。

1.3 将项目处理为一个巨大的持续多年的项目,而不是追求更容易管理的、虽然仍然具有挑战性的迭代开发工作

这是一个经常出现的陷阱,试图建设一个庞大的,无所不包的系统,通常是不可取的。似乎只要建设一个“巨型无比”的系统就可以完成任何工作,解决任何问题一样,其实结果往往会适得其反。更糟的是,管理这些项目的人往往没有与业务进行足够详细的协商,从而开发有用的产品。一言以蔽之,银样镴枪头,中看不中用。小步快跑、快速迭代是个非常好的选择,尤其是对于还没有数仓沉淀的情况,可以先run起来,支撑起业务,后面在慢慢迭代即可。这样通过不断产出价值,才能够得到更多部门的支持和配合。

1.4 分配大量的精力去构建规范化数据结构, 在最终呈现数据之前,用尽所有的预算

这个陷阱不像其他陷阱一样重要,在Kimball的方法论中,对维度模型进行更改所带来的业务风险要比更改源事务数据库小。所以应该留出足够的资源来构建它们,但是很少有中小型企业在资源上进行投资以创建完全一致的事实和维度表,更不用说OLAP数据立方体了,所以再多的理论也解决不了实际的问题,先跑起来才重要,不管姿势是否完美。模型真的重要吗,毫无疑问是重要的,但是也是有轻重缓急的时候,为了设计完美的模型而不支持需求就大错特错了,实际的操作过程中有很大的弹性空间,不可被理论禁锢,停滞不前。

1.5 将主要精力投入到后端操作型性能和易开发性,而没有重点考虑前端查询的性能和易用性

为用户提供易于阅读的数据展示形式并具有良好的查询性能会很重要。

1.6 使存在于应用层的可查询数据设计的过于复杂,应该通过简化解决方案开发出更适合需要的产品

通常,大多数业务用户都希望简化数据表示方式。此外,对这些数据的访问应限于尽可能少入口。提高获取数据的易用性,会大大提升数仓的价值。

1.7.烟囱式开发,不考虑使用可共享的、一致性维度将数据模型联系在一起

当维度在整个数据仓库中不一致时,就是典型的烟囱式开发。其实,我们使用的维度在本质上是相同的,但是由于数据来自于不同的业务源,并会被随意更新。典型的例子是“时间”维度,在维模型不一致的情况下,最终用户通常完全不知道为什么一个报表中的数据可能与其他地方生成的报表有显着差异。一种好的做法是将数据模型与主数据管理(MDM)解决方案联系在一起,该解决方案包含可以在整个数据仓库中普遍使用的参考数据

1.8只将汇总数据加载到数据仓库中

在事务数据库和数据仓库之间创建的每个ETL(提取,转换和加载)过程中,不能只将汇总的数据装载到数仓中,要确保有一份原子数据存储在数仓中,即将数据同步一份放在准备区(ODS层)。

1.9.臆想业务、业务需求及分析,其涉及的数据及支持技术都是静态的

尽量不要开发仅限于某个特定业务需求和分析的数据模型,因为业务在不断地发生变化。一个差劲的模型设计通常是开发重复的数据模型及不一致的命名约定。在设计一个“完美”的事实表、维表与规范化程度之间取得平衡并不是一件容易的事情,但是开发出可伸缩的以适应业务发展的数据模型是非常重要的

1.10 忽略数据仓库的成功直接来源于业务的认可。如果用户未将数据仓库系统当成他们制定决策的基础,那么所有的工作都是徒劳

这个是很致命的陷阱,如果从一开始都没有得到业务和高层的重视和认可,那么数仓项目多半是会夭折。从用户的角度出发,如果用户对建立的数仓不买账,根本就不会去使用它,结局只会game over。

2小结

本文对《数据仓库工具箱》一书中,提到的数据仓库设计中的10个常见陷阱进行了总结和分析,针对这10个问题,特别是刚开始建设数仓或进行数字化建设的公司来说,这10条经验尤非常值得借鉴。数仓的建设是需要统筹规划的,而不是随便一个取数的Ad-Hoc,与业务系统有着本质的区别,数仓的建设最怕的就是业务分析人员或业务开发人员直接拿来当业务系统使用,最后做成与传统的数据库没什么区别。数仓的建设涉及了多部门的参与与合作,再加上原有的数据不规范性、脏数据、异常数据比较多的情况下,多部门的配合就显得尤为重要,这时候就需有权威的领导出面牵头数仓的建设。

阅读了本文后,您觉得哪一条对你目前公司更重要呢?评论区留下你的意见

 

数字化建设通关指南
专栏原价99,现在活动价29.9,按照阶梯式增长,直到恢复原价

主要内容:
(1)SQL进阶实战技巧
可以参考如下教程,具体链接如下

SQL很简单,可你却写不好?也许这才是SQL最好的教程_sql语句写的很烂怎么办-CSDN博客

上面链接中的文章及技巧会不定期更新。

(2)数仓建模实战技巧和个人心得
       1)新人入职新公司后应如何快速了解业务?

       2)以业务视角看宽表化建设?

       3)  维度建模 or 关系型建模?

       4)业务模型与数据模型有什么区别?业务阶段的模型该如何建设?

       5)业务指标体系该如何建设?指标体系该如何维护?指标平台应如何建设?指标体系                           该由谁来搭建?

       6)如何优雅设计DWS层?DWS层模型好坏该如何评价?

       7)指标发生异常,该如何排查?应从哪些方面入手寻找问题点?

       8) 数据架构的选择,mpp or hadoop?

       9)数仓团队应如何体现自己的业务价值,讲好数据故事?

       10)BI与大数据有什么关系?BI与信息化、数字化之间有什么关系?BI与报表之间的关                          系?

       11)数据部门如何与业务部门沟通,并规划指引业务需求?

文章不限于以上内容,有新的想法也会及时更新到该专栏。

具体专栏链接如下:

数字化建设通关指南_莫叫石榴姐的博客-CSDN博客

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

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

相关文章

日光辐射系统室内太阳光模拟器

太阳光模拟器能够为实验室环境提供稳定可靠的光照环境,其作用相当于将自然太阳光“搬进”室内实验室。这对于研究太阳能电池、光伏材料及其他与太阳能相关的设备和材料性能至关重要。 1.氙灯灯泡功率:≥450W; 2.输出光束尺寸:≥22…

秃姐学AI系列之:实战Kaggle比赛:图像分类(CIFAR-10)

目录 准备工作 整理数据集 将验证集从原始的训练集中拆分出来 整理测试集 使用函数 图像增广 读取数据集 定义模型 定义训练函数 训练和验证数据集 对测试集进行分类并提交结果 准备工作 首先导入竞赛需要的包和模块 import collections import math import os i…

智能优化算法-樽海鞘优化算法(SSA)(附源码)

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1.内容介绍 樽海鞘优化算法 (Salp Swarm Algorithm, SSA) 虽然名称中提到的是“樽海鞘”,但实际上这个算法是基于群体智能的一种元启发式优化算法,它模拟了樽海鞘(Salps)在海…

第67期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

Leetcode sql high frequency questions 50 (based)

high frequency SQL 50 (basic version) 高頻sql題目(Leetcode) 查詢 1757. 可回收且低脂的产品 Question 表:Products ---------------------- | Column Name | Type | ---------------------- | product_id | int | | low_fats | enum | | rec…

评测AI写毕业论文软件排行榜前十名的网站

在当今信息爆炸的时代,AI智能写作工具已经成为我们写作过程中的得力助手。特别是对于学术论文的撰写,这些工具不仅能够提高写作效率,还能帮助用户生成高质量的文稿。以下是五款值得推荐的AI智能写论文软件,其中特别推荐千笔-AIPas…

Mysql基础练习题 1729.求关注者的数量 (力扣)

编写解决方案,对于每一个用户,返回该用户的关注者数量。 #按 user_id 的顺序返回结果表 题目链接: https://leetcode.cn/problems/find-followers-count/description/ 建表插入语句: Create table If Not Exists Followers(us…

VMware Workstation Pro 17 下载教程(Window环境)

自从24年中旬,博通公司以 610 亿美元收购的 VMware 宣布对其虚拟化软件套件进行一些重大调整。Windows 和 Linux 版 VMware Workstation Pro 和 Mac 版 VMware Fusion 不再需要个人使用许可证,也就是对个人用户免费。 1. 下载方式 Windows 和 Linux 版…

IDEA 编译运行gradle项目

IDEA 编译运行gradle项目 本文介绍Gradle 的三种安装方式 1.IDEA 编译自动安装gradle【推荐】 2.mac brew 安装 gradle 3.手动 安装 gradle IDEA 编译gradle项目,之前的项目都是maven管理,今天遇到一个sping boot 的项目是用gradle管理的,下面…

[Linux]:文件(下)

✨✨ 欢迎大家来到贝蒂大讲堂✨✨ 🎈🎈养成好习惯,先赞后看哦~🎈🎈 所属专栏:Linux学习 贝蒂的主页:Betty’s blog 1. 重定向原理 在明确了文件描述符的概念及其分配规则后,我们就可…

C程序设计(7.0安徽专升本函数)

在之前我很多代码执行都是放在函数里的,这样方便我管理和演示,现在能和大家更好的去了解函数了 考纲教材关于这个的理论知识太多了,且废话占大多数,甚至有些对于小白很晦涩难懂或容易搞混!所以在这我就尽量缩减理论知…

C语言——希尔排序

希尔排序是对于插入排序的一种优化 代码&#xff1a; #include <stdio.h> #include <stdlib.h> void shell_sort(int* p, int len) { int i; int j; int step; int tmp; for (step len / 2; step > 0; step step / 2) { fo…

手把手教你实现微信小程序定位

实现小程序的定位 框架&#xff1a;uniappvue 1&#xff0c;用户授权配置 在pages.json文件中配置 "pages": [{"path": "pages/home/index","style": {"navigationBarTitleText": "首页","navigationBarBac…

监控-zabbix

1运维监控 是指对计算机系统、网络、服务器等关键IT基础设施进行实时监控&#xff0c;以确保系统的稳定运行和及时发现潜在问题 2老监控框架&#xff08;不会用但需要知道&#xff09; Cacti&#xff1a; Cacti是一款基于PHP、MySQL开发的网络流量监测图形分析工具。主要监…

CSP-J算法基础 计数排序

文章目录 前言计数排序计数排序的过程总结 代码实现计数排序总结 前言 计数排序 计数排序&#xff08;Counting Sort&#xff09;是一种线性时间复杂度的排序算法&#xff0c;适用于范围有限的整数排序。它通过计数每个值出现的次数&#xff0c;依次排列这些值。该算法不通过比…

LVGL 控件之线条(lv_line)

目录 一、概述二、线条1、设置连接点2、自适应大小3、翻转 y 轴4、样式4.1 设置宽度4.2 末端形态 4.3 虚线5、API 函数 一、概述 线条部件只有一个组成部分&#xff1a;主体 LV_PART_MAIN。 通过一组点绘制出相连的直线&#xff0c;通过 lv_line_create 创建相应的对象。 二…

利用深度学习实现验证码识别-4-ResNet18+imagecaptcha

在当今的数字化世界中&#xff0c;验证码&#xff08;CAPTCHA&#xff09;是保护网站免受自动化攻击的重要工具。然而&#xff0c;对于用户来说&#xff0c;验证码有时可能会成为一种烦恼。为了解决这个问题&#xff0c;我们可以利用深度学习技术来自动识别验证码&#xff0c;从…

5.第二阶段x86游戏实战2-认识内存

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 本次游戏没法给 内容参考于&#xff1a;微尘网络安全 工具下载&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1rEEJnt85npn7N38Ai0_F2Q?pwd6tw3 提…

Cesium 展示——Cesium 初始化视角在中国并加载数据(china.json)

文章目录 需求一:初始化视角在中国分析需求二:加载中国数据(china.json)需求一:初始化视角在中国 在初始化 Cesium 的 Viewer 后,视角是在美国,如何让其视角指向中国 分析 viewer.value = new Cesium.Viewer(cesiumContainer.value, {homeButton

redis基本数据结构-string

文章目录 1. redis的string数据结构2. 常见的业务场景2.1 缓存功能案例讲解背景优势解决方案代码实现 2.2 计数器案例讲解背景优势解决方案代码实现 2.3 分布式锁案例讲解背景优势解决方案代码实现 2.4 限流案例讲解背景优势解决方案代码实现 2.5 共享session案例讲解背景优势解…