数仓(三):分层设计 ODS-DWD-DWS-ADS

数据仓库数据模型设计是构建数据仓库的核心过程之一。其目的是将多个数据源中的数据整合到一个统一的数据模型中,以支持业务分析和决策。然而,在数仓建设的过程中,由于未能完全按照规范操作, 从而导致数据仓库建设比较混乱,常见以下问题:

  1. 数仓分层不清晰:数仓的分层没有明确的逻辑,导致数据难以管理和维护。
  2. 数据域划分不明确:没有明确的数据域划分,导致数据冗余和不一致。
  3. 模型设计不合理:模型设计没有考虑到业务的实际需求,导致数据质量低下。
  4. 代码不规范:代码不符合规范,导致维护困难。
  5. 命名不统一:命名不统一,导致数据难以理解和使用。
  6. 主题域划分不完整:主题域划分没有涵盖所有业务需求,导致数据缺失。

一、数仓建模的意义,为什么要对数据仓库分层?

        只有数据模型将数据有序的组织和存储起来之后,大数据才能得到高性能、低成本、高效率、高质量的使用。

1、清晰数据结构每一个数据分层都有它的作用域,这样我们在使用表的时候能更方便地定位和理解。

数据关系条理化:源系统间存在复杂的数据关系,比如客户信息同时存在于核心系统、信贷系统、理财系统、资金系统,取数时该如何决策呢?

### 分层架构解释 #### ODS(Operational Data Store) ODS 层作为据引入层,也称为操作据存储层。此层负责将来自不同业务系统的原始据几乎不做任何处理地存入库系统中,其结构尽可能与源系统保持一致[^3]。 ```sql INSERT INTO ods_table SELECT * FROM source_system; ``` #### DWD(Data Warehouse Detail) DWD 层即据明细层,在该层会对从 ODS 获取的据进行清洗、转换以及初步加工,形成统一标准的事实表和维度表,为后续分析提供详尽的基础据支持[^4]。 ```sql WITH cleaned_data AS ( SELECT CASE WHEN field IS NULL THEN 'Unknown' ELSE field END, ... FROM ods_table ) INSERT INTO dwd_fact_table SELECT * FROM cleaned_data; ``` #### DWS(Data Warehouse Summary) DWS 是指据汇总层,基于 DWD 中已经标准化后的细粒度据进一步聚合计算得到更高层次的信息摘要,比如按照时间周期、地理区域等维度来统计销售总额、访问量等指标值,便于快速查询与决策支持[^2]。 ```sql INSERT INTO dws_summary_sales_by_region SELECT region_id, SUM(sales_amount), COUNT(DISTINCT order_date) as days_with_sales FROM dwd_fact_sales GROUP BY region_id; ``` #### ADS(Application Data Service) 最后到达的应用服务层——ADS,则专注于满足特定应用场景下的需求定制化报表展示或是机器学习模型训练所需特征工程等方面的工作。它通常会从业务视角出发构建视图或物化视图以优化性能并简化复杂查询逻辑[^1]。 ```sql CREATE VIEW ads_customer_insights AS SELECT c.customer_name, s.total_spent, r.region_name FROM dim_customers c JOIN fact_sales_aggregates s ON c.customer_id = s.customer_id JOIN dim_regions r ON s.region_id = r.region_id; ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

四月天03

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值