仔仔细细的给您讲,如何建立数据仓库

news2024/11/17 1:32:06

数据仓库的定位

在整个数据价值生产链路中,数据仓库的主要作用就是中心化分发,将原始数据与数据价值挖掘活动隔离。所有的原始数据都会进入数据仓库,再由数据仓库统一分发给下游的数据使用者。这样的结构实现了原始数据与数据分析工作的解耦,让业务活动可以专注于生产,也让数据价值挖掘可以专注于分析。

且不谈数据仓库对数据做了怎样的处理,光是把数据集中到一起再分发,本身就已经提升了整个数据价值生产链路的运转效率了。反过来说,只要做到了数据的中心化分发,隔离业务与数据生产,就实现了一个最简单的数据仓库,它满足了数据仓库定义中的第一条:集成。

数据平台系统

在最原始的时候,数据生产工作是很简单地直接使用一些数据表来做计算,甚至可能连数据库都没有,就是一些表格而已,分析师可能就是每天手动汇总然后出一些报表来辅助领导做出决策。 如果分析师觉得这样每天重复工作的效率太低,他们就会朝着「自动化」的方向前进,构建起一个个数据系统。

给每日定时定量的任务加上任务调度系统,实现每日工作的自动化;建立数据管道,让原始数据通过管道自动变成数据分析所需要的报表形式;建立质量管控系统,自动处理脏乱数据并监测错误率等指标,确保数据质量。

如果分析师们希望让数据更容易使用,他们就会朝着「易使用」的方向前进,构建起一个个数据产品。所谓的「易使用」,也可以说成是「产品化」。最直接的方法莫过于建立一个数据仓库了。正如上面所说,光是实现数据的中心化分发,隔离业务生产与数据生产,就已经能让数据好用不少。

除了数据仓库之外,为了能让整个团队更好地使用和理解数据,我们也需要进行元数据管理工作。数据产品最后的形态就是各种报表了,汇总了各项重要信息,能够快速了解业务系统的整体现状以便做出下一步决策。 「自动化」和「易使用」两个方向的发展,汇聚在一起就成了数据平台系统。这个系统既依赖于「自动化」的程度来保证稳定高效的运转,也依赖于「产品化」的程度来保证用户能够方便快捷地挖掘数据价值,指导业务决策。

尽管在实际实践中,数据仓库的建设往往都伴随着一定的自动化工作,但这只是为了让数据仓库更为高效。从最本质的角度来说,「让数据更好用」,才是数据仓库建设的核心目标,下面就对这一点来展开说明。

数据使用的痛点

在现实的实践中,往往是先开始发展业务,然后有了数据团队来直接对原始的业务数据做处理分析,辅助业务决策。随着业务规模的增长和复杂度的增加,原始的方法渐渐扛不住了。比如,数据源很多,需要分别提取。业务数据存在一些错乱的情况,取数后还需要做检查和清洗。整体的工作效率受到了很大影响。这时候数据团队就会说,这个数据系统不好用,有许多痛点,需要做出改变。于是大家就想起了数据仓库,希望它能够解决问题。

就让我们来梳理一下,细化之后都有哪些痛点。

P0 基础

在这个层级上的痛点,会极大地影响整个数据价值链条的运转,要么严重降低效率,要么破坏分析的准确性。因此,只要是打算挖掘数据价值,无论是否建立狭义上的数据仓库,都必须要解决这个层级上的痛点。

数据异构:数据存储在不同的数据库或文件系统上,在使用前必须先进行汇总,当表很多很零散的时候,处理起来非常不方便。这个痛点对效率带来的影响,会随着表数量的增长而呈指数上升。如果不管不顾,最后很可能让分析处理工作陷入汇总泥潭。

脏数据:错值、空值、意义不明的业务代码、同一实体多个别名等等,这些都会对分析产生巨大的干扰。正所谓「垃圾进,垃圾出」,为了保证分析结果的正确性,脏数据是必须处理干净。

所有的数据团队,只要在正常输出数据价值,都会解决这些痛点。将数据汇总到统一的数据库中供分析使用,在进行分析前对数据进行清洗,这就已经是数据仓库的雏形了。

P1 进阶

在这个层级上的痛点,主要体现为数据的使用难度大,学习成本高。往往正是因为这个层级的痛点无法通过简单的修补方式解决,需要一套完整系统的方案,数据团队才会想要建立一个传统意义上的数据仓库。

强耦合:同一实体的数据混杂分散在不同的源数据表里,难以直接使用。比如,希望按品牌分析商品的品类占比。但商品的品类和品牌信息都不在商品表中,而是在订单表里。每次使用都需要从订单表中提取相应的数据,极其费事。这种情况在实践中非常常见,原因有很多,比如来自爬虫的数据会受到可爬取接口的限制。

复杂结构:存在多重联结或者树形结构等较复杂的设计,SQL难写,查询效率也不高。树形结构常用于业务生产,对单点读写来说是一种高效的结构,但对于分析场景来说就非常不方便。

实体关系模糊:数据表无法直接体现要分析的业务过程,需要提炼加工。比如希望分析对比不同流量入口的业务表现,但实际存储的数据可能会很零散,第一个大问题就是确定都有哪些流量入口,哪些指标可以体现业务水平。接着的问题就是,怎么把业务表现与流量入口关联起来。像强耦合、复杂结构这样的问题还能通过技术解决。实体关系模糊的问题就需要深入理解业务了。错误的理解可能会导致错误的关联,这一点会极大加重新人的工作负担。

难以上手:数据表繁杂,新人难以理解使用。杂乱无章的数据表带来的一大问题就是交接困难,新人面对一大堆表,尤其是缺乏良好命名的表,根本就一头雾水不知道如何下手。如果再缺失相应的文档,那简直就是灾难。

粒度混乱:同一个数据表里,数据的粒度不同。举例:地理位置信息,可能会把市级数据和省级数据放在同一个表里。粒度混乱会给分析带来非常大的麻烦。对于那些包含业务指标的数据,如果无法确定这个指标的统计口径是按天还是按周,就不知道该如何进行分析。对于像省市信息这样的数据,缺乏统一的数据粒度,也会让使用者在关联这张表时不得不增加一些筛选操作,比如希望获取省一级的信息,就需要过滤掉市一级的信息以免混淆。粒度混乱虽然不复杂,但却是很容易被忽略的一个问题,往往会因为统计口径的不统一造成严重的分析错误。

P2 优化

在这个层级上的痛点,就属于有点痛,但凑合凑合也能用的水准。处理他们的急迫性没那么大,不过要是有时间做了,还是能带来一些回报的。

查询缓慢:查询缓慢可以说是最常见的优化类痛点了。引起缓慢的问题有很多,比如索引或分区设置不合理,SQL没优化好,表结构不适合分析场景,或者存储的数据库本身的大规模查询能力就比较薄弱等等。提升查询效率也是个需要不断迭代优化的工作,它不是那么紧迫但也同样重要。

关联过深:在实体-关系模型中,如果严格遵守3NF范式构建,很容易出现关联过深的问题。也就是想要使用一个实体的数据必须要联结3张以上的表才能触达,而这些中间关联表的数据完全不会用上。这个问题不那么重要,分析师凑合一下也能用,不过肯定还是希望能通过一层关联来获取,更为方便。

P3 拓展

这个层级上的痛点往往是特异化的,它不会影响一般的通用业务,但对于特定需求,是必须解决的。

缺少历史:当前的数据不能代表历史情况,这样的数据无法做出有效分析,只能得到错误结论。为此就需要做一些特殊设计来实现。只是,有时候做分析并不需要所有维度的历史信息,这样的需求是比较特异化的,可以按需开发。

特殊需求:像大宽表、轻聚合表等,它们并不是数据仓库的核心构件,但对于下游使用有很大帮助,比如节约计算资源,方便接入报表工具等等。

免责声明:本公众号所发布的文章为本公众号原创,或者是在网络搜索到的优秀文章进行的编辑整理,文章版权归原作者所有,仅供读者朋友们学习、参考。对于分享的非原创文章,有些因为无法找到真正来源,如果标错来源或者对于文章中所使用的图片、链接等所包含但不限于软件、资料等,如有侵权,请直接联系后台,说明具体的文章,后台会尽快删除。给您带来的不便,深表歉意。

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

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

相关文章

Linux 企业级夜莺监控分析工具远程访问

目录 前言 1. Linux 部署Nightingale 2. 本地访问测试 3. Linux 安装cpolar 4. 配置Nightingale公网访问地址 5. 公网远程访问Nightingale管理界面 6. 固定Nightingale公网地址 前言 夜莺监控是一款开源云原生观测分析工具,采用 All-in-One 的设计理念&…

xml配置文件密码特殊字符处理

错误姿势: 正确姿势:采取转义符的方式 常用转义符:

位图和布隆过滤器的实现

前言 位图和布隆过滤器是基于哈希思想实现的数据结构,他们在很多的方面都有应用,比如:操作系统中的磁盘标记,快速查找某个数据是否在集合中。布隆过滤器可以高效的进行插入和查询,可以告诉你“某样东西一定不存在或者可…

Sui Gaming AMA精彩内容集锦

9月8日,Sui基金会在Twitter Space举办了一场「游戏」主题的AMA,会议由基金会市场团队的Rainier主持,邀请了Coert Voorhees、Anthony Palma和Bill Allred三位嘉宾分享观点。Coert Voorhees是Arden的联合创始人兼首席执行官,其产品为…

微信小程序——使用 Vant 组件实现 Popup 弹出层(各位置弹出详细代码分享)

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 💞当前专栏…

【视觉SLAM入门】7.3.后端优化 基于KF/EKF和基于BA图优化的后端,推导及举例分析

"时间倾诉我的故事" 1. 理论推导2. 主流解法3. 用EKF估计状态3.1. 基于EKF代表解法的感悟 4. 用BA法估计状态4.1 构建最小二乘问题4.2 求解BA推导4.3 H的稀疏结构4.4 根据H稀疏性求解4.5 鲁棒核函数4.6 编程注意 5.总结 引入: 前端里程计能给出一个短时间…

Rn视图生成图片并保存到相册

该功能依赖两个组件 完整代码 yarn add react-native-view-shot // 视图生成图片 yarn add expo-media-library // 保存图片import { useState, useRef } from react import ViewShot from "react-native-view-shot" import { View, Text, Button, Image, StyleSh…

【程序猿包邮送书:第五期】考研408书籍数学书籍大放送,多本书籍任君挑选

🌹欢迎来到爱书不爱输的程序猿的博客, 本博客致力于知识分享,与更多的人进行学习交流 爱书不爱输的程序猿:送书第五期 🚩🚩🚩点击直达福利前言01 《数据结构与算法分析》书籍介绍作者简介目录 02 《计算机网…

【docker-compose 跨节点部署 kafka-kraft SASL用户加密集群】全网最新!

一、概述 文本主要讲解使用Docker-compose在三个节点上部署Kafka3.5.1(现阶段最新版本)-kraft模式,加密使用了用户名密码加密的SASL_PLAINTEXTPLAIN方式。SSL加密在我的docker-compose.yml文件基础上微调一下就好。所有的配置都通过环境变量注入,仅将加…

超详细springcloud sentinel教程~

基础 介绍 Sentinel 是面向分布式、多语言异构化服务架构的流量治理组件,主要以流量为切入点,从流量路由、流量控制、流量整形、熔断降级、系统自适应过载保护、热点流量防护等多个维度来帮助开发者保障微服务的稳定性。 基本概念 资源 资源是 Sent…

灰度变换原理//test later

灰度变换原理 图像灰度变换变换原理:通过变换函数T将原图像像素灰度值r映射为灰度值s: 2、灰度反转 2.1原理 灰度反转:将图像亮暗对调,可以增强图像中暗色区域细节 ��(�)�−1−…

无版权素材集合

一、无版权视频素材 1.pixabay 网址: https://pixabay.com/zh/videos/ 特点:没错,还是这个网站,除了图片,还有大量免费正版高清无水印视频素材,无需注册即可直接下载,支文搜索。你可以在任何地方使用 pixabay 的免费…

深度干货:制造进销存国内现状如何?2023年五大制造进销存最新盘点!

制造进销存是什么?制造进销存的发展如何?制造进销存的优势在哪里?制造进销存都能为企业提供什么?本文将带大家深入浅出的聊聊制造进销存,全面剖析制造进销存的前世今生,并且为大家提供2023年十大制造进销存…

WebGL 视图矩阵、模型视图矩阵

目录 立方体由三角形构成 视点和视线 视点、观察目标点和上方向 视点: 观察目标点: 上方向: 在WebGL中,观察者的默认状态应该是这样的: 视图矩阵程序(LookAtTriangles.js) 实际上&…

红巨星粒子插件 Red Giant Trapcode Suite for mac 2024

Red Giant Trapcode Suite是一款用于在After Effects中模拟和建模3D粒子和效果的软件,由Red Giant Software公司开发。 该软件包包含11种不同的工具,可以帮助用户模拟火、水、烟、雪等粒子效果,以及创建有机视觉效果和3D元素。它还支持在AE与…

机器学习(15)---代价函数、损失函数和目标函数详解

文章目录 一、各自定义二、各自详解三、代价函数和损失函数区别四、例题理解 一、各自定义 1. 代价函数:代价函数(Cost Function)是定义在整个训练集上的,是所有样本误差的平均,也就是损失函数的平均。它用于衡量模型在…

langchain主要模块(五):Agent以及Wandb

langchain2之Agent以及Wandb langchain1.概念2.主要模块模型输入/输出 (Model I/O)数据连接 (Data connection)链式组装 (Chains)代理 (Agents)内存 (Memory)回调 (Callbacks) 3.AgentAction Agent:Plan-and-Execute-Agent:搜索工具 4.wandb1.注册2.安装…

第七版教材下的PMP考试有多难?

难度没有上升多少的,毕竟新考纲已经考过几轮考试了,如果报了培训班,那是没多大难度,如果自学,也只是难在理解第七版教材,会比第六版难以理解很多,而且第六版的知识也仍然有用,只是相…

Python基础学习笔记1(AI Studio)

地址:飞桨AI Studio星河社区-人工智能学习与实训社区 课程地址:飞桨AI Studio星河社区-人工智能学习与实训社区 课程地址:飞桨AI Studio星河社区-人工智能学习与实训社区 课程地址:飞桨AI Studio星河社区-人工智能学习与实训…

FE_Vue学习笔记 - 数据代理

Vue中的数据代理是一种机制,通过它,Vue实例(vm)可以代理其数据对象(data)中的属性操作。这种代理的原理主要是通过Object.defineProperty()方法,将data对象的每个属性都添加到vm对象上&#xff…