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

数仓分层——ODS、DW、ADS

一、什么是数仓分层

数据仓库分层是一种组织和管理数据仓库的结构化方法,它将数据仓库划分为不同的层次或级别,每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问,并提供一种清晰的结构来支持数据管理和分析需求。下面详细解释一下数仓分层的几个关键方面:

  1. 数据来源与采集: 在数据仓库分层中,首先要考虑的是数据来源和采集。数据可以来自多种不同的来源,包括业务应用系统、外部数据提供商、日志文件、传感器等。数据采集过程涉及到从这些来源中提取数据并将其加载到数据仓库中,以供后续处理和分析使用。

  2. 数据存储与管理: 分层架构中的另一个关键方面是数据的存储和管理。这包括选择合适的存储介质、设计适当的数据模型、定义数据结构和约束、实施数据安全措施等。数据存储和管理的目标是确保数据的可靠性、完整性、可用性和安全性。

  3. 数据处理与转换: 数据仓库分层中的另一个重要方面是数据的处理和转换。这包括数据清洗、数据整合、数据转换、数据标准化等操作,以确保数据质量和一致性。数据处理和转换的目标是使数据适合用于后续的分析和应用。

  4. 数据访问与分析: 最终,数据仓库分层的目标是提供给用户一个便于访问和分析数据的接口。这包括设计和实施适当的查询接口、报表工具、分析工具、可视化工具等,以支持用户对数据的探索、查询、分析和决策。数据访问和分析的目标是使用户能够从数据中提取有价值的信息并做出明智的决策。

        数据仓库分层是一种组织和管理数据仓库的方法,它将数据仓库划分为不同的层次或级别,每个层次具有特定的功能和目的,包括数据来源与采集、数据存储与管理、数据处理与转换以及数据访问与分析。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问,并提供一种清晰的结构来支持数据管理和分析需求。

二、数仓分为哪几层

        数据仓库至少要分三层,分别为ODS、DW、ADS,但是这种分层对于小项目来说还好,但是对于多表多数据的项目来讲无疑是一种挑战,倘若只有这三层,那么我们需要在DW层完成所有的数据操作以及需求计算,这将会产生上千甚至上万行冗余代码,一旦出现问题,将会带来很沉重的工作量。所以为了优化开发,我们可以把DW层进一步划分为:DWD、DWM、DWS层。

三、数仓分层介绍

3.1、ODS层

ODS(Operational Data Store,运营数据存储)是数据仓库体系结构中的一个重要组成部分,通常作为数据仓库架构中的第一个层次或者与原始数据层紧密相关。ODS 层主要用于存储和处理来自业务应用系统的实时、操作性数据,提供给业务用户和决策者进行日常的操作性查询和分析。以下是关于ODS层的详细介绍:

  1. 数据来源: ODS 层的数据主要来自于组织内部的业务应用系统,如企业资源计划(ERP)、客户关系管理(CRM)、销售、采购、库存管理系统等。这些系统产生的数据通常是实时、操作性的,包含了组织的日常业务活动的详细信息。

  2. 数据存储: ODS 层通常采用关系型数据库(如Oracle、SQL Server、MySQL等)或者 NoSQL 数据库(如MongoDB、Cassandra等)来存储数据。存储数据的结构通常较为灵活,旨在满足业务需求的变化和数据模型的动态调整。

  3. 数据处理: 在ODS层,数据通常不经过大规模的清洗和转换,而是以尽可能原始的形式存储。然而,ODS层也可能涉及一些简单的数据清洗、去重和错误校验等处理,以确保数据的质量和准确性。

  4. 数据集成: ODS 层通常会集成来自多个业务应用系统的数据,以提供一个全面的、整合的数据视图。这有助于消除数据孤岛,确保业务数据的一致性和完整性。

  5. 支持实时查询和分析: 由于ODS层存储的是实时、操作性的数据,因此它通常被用于支持实时查询和分析需求。业务用户和决策者可以直接访问ODS层中的数据,进行即时的操作性查询和分析,以支持日常的业务活动和决策过程。

  6. 与其他层的关系: ODS 层通常是数据仓库架构中的第一个层次,与原始数据层紧密相关。它为后续的数据仓库层次提供了一个基础,如数据清洗与转换层、维度建模层等。ODS 层还可以与数据湖(Data Lake)等现代数据架构中的其他组件集成,以实现更广泛的数据管理和分析需求。

3.2、DW层

3.2.1、DWD层

        数据仓库的 DWD(Data Warehouse Detail)层是数据仓库架构中的一个重要组成部分,通常位于维度建模层之后,用于存储已经经过清洗、转换和集成的详细数据。以下是关于 DWD 层的详细介绍:

  1. 数据来源: DWD 层的数据来源于数据仓库中的上一层,通常是维度建模层(DM)或者集成层(Integration Layer)。这些数据经过了清洗、转换和整合处理,以满足特定的业务需求和分析目的。

  2. 数据存储: DWD 层通常采用关系型数据库(如Oracle、SQL Server、MySQL等)或者大数据存储系统(如Hadoop、Spark等)来存储数据。与ODS层相比,DWD 层的数据存储结构更为规范和固定,通常采用规范化的数据模型来支持复杂的查询和分析。

  3. 数据处理: 在DWD层,数据经过了更加深入的清洗、转换和加工处理,以满足业务需求和分析目的。这包括数据清洗、数据整合、数据转换、数据计算、数据标准化等操作,以确保数据的质量、一致性和可用性。

  4. 数据集成: DWD 层通常集成了来自多个来源的数据,以提供一个全面、一致的数据视图。这包括不同业务部门、不同数据系统和不同数据源的数据,以支持跨部门和跨系统的分析和决策需求。

  5. 支持复杂分析: 由于DWD层存储的是已经经过深入处理和加工的详细数据,因此它通常用于支持复杂的分析需求,如数据挖掘、预测分析、机器学习等。数据科学家和分析师可以利用DWD层中的数据进行深入的数据分析和建模,以发现隐藏在数据背后的模式和关联。

  6. 与其他层的关系: DWD 层通常位于数据仓库架构中的核心位置,它与其他层次(如维度建模层、汇总与聚合层、报表与分析层等)密切相关。DWD 层提供了一个可靠、一致的数据源,为后续的分析和报表提供了基础。

3.2.2、DWM层

        在数据仓库架构中,DWM(Data Warehouse Mart)层是数据仓库中的一个关键组成部分,它通常位于维度建模层(DWD)和汇总与聚合层之间。DWM层旨在提供一种介于详细数据层和汇总数据层之间的数据结构,以支持更灵活和高效的数据分析和查询。DWS层产生我们常讲的“小宽表”

  1. 数据来源: DWM层的数据通常来源于DWD层或其他详细数据源,这些数据已经经过清洗、转换和整合处理,以满足特定的业务需求和分析目的。

  2. 数据存储: DWM层通常采用关系型数据库(如Oracle、SQL Server、MySQL等)或者大数据存储系统(如Hadoop、Spark等)来存储数据。与DWD层相比,DWM层的数据存储结构更加灵活和半规范化,以支持更灵活和高效的数据分析和查询。

  3. 数据处理: 在DWM层,数据通常经过进一步的加工、转换和计算处理,以满足更复杂和更具体的分析需求。这包括数据清洗、数据整合、数据转换、数据计算、数据聚合等操作,以支持各种类型的数据分析和查询。

  4. 数据集成: DWM层通常集成了来自多个来源的数据,以提供一个全面、一致的数据视图。这包括不同业务部门、不同数据系统和不同数据源的数据,以支持跨部门和跨系统的数据分析和决策需求。

  5. 支持灵活查询: 由于DWM层存储的数据具有更灵活和半规范化的结构,因此它通常用于支持更灵活和高效的数据查询和分析。数据分析师和业务用户可以利用DWM层中的数据进行各种类型的数据查询和分析,以发现业务中的关键趋势和模式。

  6. 与其他层的关系: DWM层通常位于数据仓库架构中的核心位置,它与其他层次(如DWD层、汇总与聚合层、报表与分析层等)密切相关。DWM层提供了一个灵活、高效的数据源,为数据仓库中的各种分析和报表提供了基础。

3.23、DWS层

        在数据仓库中,DWS(Data Warehouse Store)层通常是指数据仓库的存储层,它是整个数据仓库系统的核心组成部分。DWS 层存储了经过清洗、转换和整合的数据,以支持各种数据分析、报表和决策需求。DWS层产生我们常讲的“大宽表”

  1. 数据来源: DWS 层的数据来源于各种数据源,包括原始数据源、业务应用系统、数据湖、数据仓库的其他层等。这些数据经过了清洗、转换和整合处理,以满足特定的业务需求和分析目的。

  2. 数据存储: DWS 层通常采用专门的数据存储系统或者数据库管理系统(DBMS)来存储数据,例如关系型数据库(如Oracle、SQL Server、MySQL等)、大数据存储系统(如Hadoop、Spark等)、云数据仓库(如AWS Redshift、Google BigQuery、Azure Synapse Analytics等)等。存储在 DWS 层的数据结构通常是规范化或者半规范化的,以支持复杂的数据分析和查询。

  3. 数据处理: 在 DWS 层,数据可能会经过进一步的处理和加工,以满足特定的业务需求和分析目的。这包括数据清洗、数据转换、数据整合、数据计算、数据聚合等操作,以确保数据的质量、一致性和准确性。

  4. 数据管理: DWS 层也涉及到数据管理方面的工作,包括数据备份与恢复、数据安全、数据版本管理、数据治理、数据质量管理等。这些工作有助于确保数据仓库系统的稳定性、安全性和可靠性。

  5. 数据访问与分析: 存储在 DWS 层的数据可以被数据仓库中的其他层次(如汇总与聚合层、报表与分析层等)访问和分析。DWS 层提供了一个统一的数据存储和管理平台,为数据仓库中的各种数据分析和决策需求提供了支持。

3.3、ADS层

        在数据仓库架构中,ADS(Analytical Data Store)层是用于支持高级数据分析、数据挖掘和机器学习等高级分析任务的一个重要组成部分。ADS 层通常位于数据仓库架构的顶层,它包含了经过进一步加工和转换的数据,以支持更复杂和更深入的数据分析和洞察。

  1. 数据来源: ADS 层的数据来源于数据仓库中的其他层次,包括详细数据层(如DWD层、DWM层)、汇总与聚合层等。这些数据经过了进一步的加工、转换和聚合处理,以满足高级分析任务的需求。

  2. 数据存储: ADS 层通常采用专门的数据存储系统或者数据库管理系统(DBMS)来存储数据,例如关系型数据库(如Oracle、SQL Server、MySQL等)、大数据存储系统(如Hadoop、Spark等)、云数据仓库(如AWS Redshift、Google BigQuery、Azure Synapse Analytics等)等。存储在 ADS 层的数据通常是高度规范化或者半规范化的,以支持复杂的数据分析和挖掘任务。

  3. 数据加工与转换: 在 ADS 层,数据可能会经过更深入和更复杂的加工、转换和计算处理,以满足高级分析任务的需求。这包括数据清洗、数据整合、数据转换、数据计算、数据挖掘、机器学习模型训练等操作,以发现数据中的模式、趋势和关联。

  4. 高级分析: ADS 层主要用于支持高级数据分析、数据挖掘、机器学习和预测分析等任务。数据科学家、分析师和业务用户可以利用 ADS 层中的数据进行深入的数据分析和建模,以发现隐藏在数据背后的价值和见解,并支持业务决策和战略规划。

  5. 数据可视化与报告: 存储在 ADS 层的数据通常会被用于生成各种类型的数据可视化和报告,以帮助用户直观地理解和解释数据分析的结果。这包括仪表板、报表、图表、图形等,为用户提供一个直观、易于理解的数据展示平台。

相关文章:

数仓分层——ODS、DW、ADS

一、什么是数仓分层 数据仓库分层是一种组织和管理数据仓库的结构化方法,它将数据仓库划分为不同的层次或级别,每个层次具有特定的功能和目的。这种分层方法有助于管理数据仓库中的数据流程、数据处理和数据访问,并提供一种清晰的结构来支持…...

计算机视觉——OpenCV Otsu阈值法原理及实现

算法简介 Otsu阈值法,也被称为大津算法,是一种在图像处理中广泛使用的自动阈值分割技术。这种方法由日本学者大津展之于1979年提出,旨在根据图像的灰度直方图来自动选择最佳全局阈值。Otsu阈值法的核心思想是最小化类内方差或最大化类间方差…...

个人IP打造孵化运营产业链商业计划书

【干货资料持续更新,以防走丢】 个人IP打造孵化运营产业链商业计划书 部分资料预览 资料部分是网络整理,仅供学习参考。 PPT共90页(完整资料包含以下内容) 目录 个人IP运营方案: 1. 个人IP定位与构建 1.1 人格画像构…...

R语言:卡方检验

χ2检验(Chi-Square Test)是一种用于检验分类变量之间是否存在相关性的统计方法。χ2检验的原理基于观察到的频数与期望频数之间的偏差来判断分类变量之间是否存在显著的关联。 χ2检验的原理可以概括为以下几个步骤: 建立假…...

基于51单片机的电子钟秒表LCD1602仿真设计( proteus仿真+程序+设计报告+原理图+讲解视频)

基于51单片机的电子钟秒表LCD1602仿真设计( proteus仿真程序设计报告原理图讲解视频) 这里写目录标题 1. 主要功能:2. 讲解视频:3. 仿真4. 程序代码5. 设计报告6. 原理图7. 设计资料内容清单&&下载链接 仿真图proteus7.8及以上 程序…...

latex参考文献引用网址,不显示网址问题

以引用UCI数据集为例 1、加入宏包 \usepackage{url} 2、在参考文献bib文件中加入网址文献 misc{UCI, author {{D. Dua, E. Karra Taniskidou}}, year {2024}, title {UCI Machine Learning Repository}, howpublished {\url{http://archive.ics.uci.edu/ml}} } 完成&#x…...

详细分析Mybatis与MybatisPlus中分页查询的差异(附Demo)

目录 前言1. Mybatis2. MybatisPlus3. 实战 前言 更多的知识点推荐阅读: 【Java项目】实战CRUD的功能整理(持续更新)java框架 零基础从入门到精通的学习路线 附开源项目面经等(超全) 本章节主要以Demo为例&#xff…...

nginx--tcp负载均衡

mysql负载均衡 安装mysql yum install -y mariadb-server systemctl start mariadb systemctl enable mariadb ss -ntl创建数据库并授权 MariaDB [(none)]> create database wordpress; Query OK, 1 row affected (0.00 sec)MariaDB [(none)]> grant all privileges o…...

20240506 深度学习高级技术点

1.基于BN层剪枝 基于Batch Normalization (BN)层进行剪枝是一种常用的模型压缩方法,特别是在卷积神经网络(CNNs)中。BN层在训练期间用于加速收敛和提高模型的泛化能力,而在剪枝过程中,BN层提供的统计信息(特别是均值(mean)和方差…...

标准汽车试验铁地板的技术要求

在现代科技化发展的工作中,试验平台被广泛使用。铸铁试验平台(试验铁地板)又叫试验工作平台,听名字大家也不难想象出来这是一款带有箱式体的台面,这是一种有长方形或者圆形又或者正方形的试验工作台。 铸铁试验平台&a…...

【翻译】REST API

自动伸缩 API 创建或更新自动伸缩策略 API 此特性设计用于 Elasticsearch Service、Elastic Cloud Enterprise 和 Kubernetes 上的 Elastic Cloud 的间接使用。不支持直接用户使用。 创建或更新一个自动伸缩策略。 请求 PUT /_autoscaling/policy/<name> {"rol…...

TypeScript学习日志-第十九天(namespace命名空间)

namespace命名空间 一、基本用法 namespace 所有的变量以及方法必须要导出才能访问&#xff0c;如图&#xff1a; 二、 嵌套 namespace 可以进行嵌套使用&#xff0c;如图&#xff1a; 它也必须需要导出才能访问 三、合并 当我们出现两个同名的 namespace 它就会合并这两…...

Mac远程桌面windows11

文章目录 一、Mac安装Microsoft Remote Desktop二、Window11打开远程登录权限三、常见问题 一、Mac安装Microsoft Remote Desktop 下载地址&#xff1a;点击这里官方下载 基本不用看&#xff0c;凭感觉用就行。搞不定详情见&#xff1a;官方说明 二、Window11打开远程登录权…...

GPU术语

SP(Streaming Processor)流处理器 流处理器是GPU最基本的处理单元&#xff0c;在fermi架构开始被叫做CUDA core。 SM(Streaming MultiProcessor) 一个SM由多个CUDA core组成。SM还包括特殊运算单元(SFU)&#xff0c;共享内存(shared memory)&#xff0c;寄存器文件(Register …...

上海个人购房提取公积金经历和注意事项(收藏不踩坑)

在前一篇文章中&#xff0c;我介绍了 2024 年 4 月 24 日上海个人购房个税退税经历&#xff0c;我于 4 月 27 日周六&#xff0c;顺利办理租房公积金提取业务&#xff0c;资金在业务办理完成后 10 分钟左右到账。通过本文分享办理过程的材料和注意事项&#xff0c;避免大家踩坑…...

阿里云API网关 产品的使用笔记

阿里云的产品虽多&#xff0c;还是一如既往的一用一个看不懂&#xff0c;该模块的文档依旧保持“稳定”发挥&#xff0c;磕了半天才全部跑通。 用阿里云API网关的原因是&#xff0c;在Agent中写插件调用API的时候&#xff0c;需要使用Https协议&#xff0c;又嫌搞备案、证书等事…...

基于H.264的RTP打包中的组合封包以及分片封包结构图简介及抓包分析;FU-A FU-B STAP-A STAP-B简介;

H.264视频流的RTP封装类型分析&#xff1a; 前言&#xff1a; 1.RTP打包原则&#xff1a; RTP的包长度必须要小于MTU(最大传输单元)&#xff0c;IP协议中MTU的最大长度为1500字节。除去IP报头&#xff08;20字节&#xff09;、UDP报头&#xff08;8字节&#xff09;、RTP头&a…...

OPENAI中Semantic Kernel实现原理以及示例代码用PYTHON来实现

OPENAI中Semantic Kernel实现原理以及示例代码用PYTHON来实现 前言 在人工智能领域&#xff0c;自然语言处理是一个非常重要的研究方向。而在自然语言处理中&#xff0c;语义理解是一个非常关键的问题。在这个领域中&#xff0c;OPENAI的Semantic Kernel是一个非常有名的工具…...

关于路由懒加载的实现

在Vue2中&#xff0c;实现路由懒加载可以使用import的动态引入方式。通常&#xff0c;我们可以将组件作为被引入的模块&#xff0c;并在routes配置中使用component: () > import(/components/Example.vue)来实现懒加载。 在Vue3中&#xff0c;懒加载的实现方式稍有不同。Vu…...

如何去官网下载windows10操作系统iso镜像

文章目录 一、先从微软中国官网https://www.microsoft.com/zh-cn/进去二、然后按图示一步步点进去三、点击下载工具这个工具会帮你生成windows操作系统iso文件四、下载好后一步步按图示要求成功操作 一、先从微软中国官网https://www.microsoft.com/zh-cn/进去 二、然后按图示一…...

未来机器人的大脑:如何用神经网络模拟器实现更智能的决策?

编辑&#xff1a;陈萍萍的公主一点人工一点智能 未来机器人的大脑&#xff1a;如何用神经网络模拟器实现更智能的决策&#xff1f;RWM通过双自回归机制有效解决了复合误差、部分可观测性和随机动力学等关键挑战&#xff0c;在不依赖领域特定归纳偏见的条件下实现了卓越的预测准…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

相机Camera日志分析之三十一:高通Camx HAL十种流程基础分析关键字汇总(后续持续更新中)

【关注我,后续持续新增专题博文,谢谢!!!】 上一篇我们讲了:有对最普通的场景进行各个日志注释讲解,但相机场景太多,日志差异也巨大。后面将展示各种场景下的日志。 通过notepad++打开场景下的日志,通过下列分类关键字搜索,即可清晰的分析不同场景的相机运行流程差异…...

Java多线程实现之Thread类深度解析

Java多线程实现之Thread类深度解析 一、多线程基础概念1.1 什么是线程1.2 多线程的优势1.3 Java多线程模型 二、Thread类的基本结构与构造函数2.1 Thread类的继承关系2.2 构造函数 三、创建和启动线程3.1 继承Thread类创建线程3.2 实现Runnable接口创建线程 四、Thread类的核心…...

RabbitMQ入门4.1.0版本(基于java、SpringBoot操作)

RabbitMQ 一、RabbitMQ概述 RabbitMQ RabbitMQ最初由LShift和CohesiveFT于2007年开发&#xff0c;后来由Pivotal Software Inc.&#xff08;现为VMware子公司&#xff09;接管。RabbitMQ 是一个开源的消息代理和队列服务器&#xff0c;用 Erlang 语言编写。广泛应用于各种分布…...

Web中间件--tomcat学习

Web中间件–tomcat Java虚拟机详解 什么是JAVA虚拟机 Java虚拟机是一个抽象的计算机&#xff0c;它可以执行Java字节码。Java虚拟机是Java平台的一部分&#xff0c;Java平台由Java语言、Java API和Java虚拟机组成。Java虚拟机的主要作用是将Java字节码转换为机器代码&#x…...

【Ftrace 专栏】Ftrace 参考博文

ftrace、perf、bcc、bpftrace、ply、simple_perf的使用Ftrace 基本用法Linux 利用 ftrace 分析内核调用如何利用ftrace精确跟踪特定进程调度信息使用 ftrace 进行追踪延迟Linux-培训笔记-ftracehttps://www.kernel.org/doc/html/v4.18/trace/events.htmlhttps://blog.csdn.net/…...

李沐--动手学深度学习--GRU

1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...

虚幻基础:角色旋转

能帮到你的话&#xff0c;就给个赞吧 &#x1f618; 文章目录 移动组件使用控制器所需旋转&#xff1a;组件 使用 控制器旋转将旋转朝向运动&#xff1a;组件 使用 移动方向旋转 控制器旋转和移动旋转 缺点移动旋转&#xff1a;必须移动才能旋转&#xff0c;不移动不旋转控制器…...

Python第七周作业

Python第七周作业 文章目录 Python第七周作业 1.使用open以只读模式打开文件data.txt&#xff0c;并逐行打印内容 2.使用pathlib模块获取当前脚本的绝对路径&#xff0c;并创建logs目录&#xff08;若不存在&#xff09; 3.递归遍历目录data&#xff0c;输出所有.csv文件的路径…...