数仓ods层到ads层数据抽取常用sql

一. 数仓分层

数据仓库在构建过程中通常都需要进行分层处理

业务不同,分层的技术处理手段也不同数仓分层原因

1.把复杂问题简单化,每一层只处理简单的任务,方便定位问题;

2.减少重复开发,规范数据分层,通过中间层数据能够减少重复计算,且增加计算结果的复用性;

3.隔离原始数据,不论是数据的异常还是数据的敏感性,使真实数据与统计数据解耦开。

数仓一般分为ODS,DW,ADS

ODS层

1.ods层概念

数据运营层:Operation Data Store 数据准备区,也称为贴源层。数据源中的数据,经过抽取、洗净、传输,也就是ETL过程之后进入本层。

该层的主要功能

  1. ODS是后面数据仓库层的准备区
  2. 为DWD层提供原始数据
  3. 减少对业务系统的影响

为了考虑后续可能需要追溯数据问题,因此对于这一层就不建议做过多的数据清洗工作,原封不动地接入原始数据即可

2.数据抽取方式

添加数据源通过同步任务在ods层建表业务系统的数据抽取到ods

同步任务分为整库同步和数据同步单表同步

.DW

1.dwd层概念

数据细节层:data warehouse details,DWD

该层是业务层和数据仓库的隔离层,保持和ODS层一样的数据颗粒度;主要是对ODS数据层做一些数据的清洗和规范化的操作,比如去除空数据、脏数据、离群值等。

为了提高数据明细层的易用性,该层通常会才采用一些维度退化方法,将维度退化至事实表中,减少事实表和维表的关联。

2.数据抽取方式

通过SQL语句将ods层表数据经过清洗后导入到dwd层

数据脱敏姓名手机号邮箱身份证号

### 数据仓库次结构与设计 数据仓库次结构通常分为多个级,每一都有其特定的功能和作用。以下是常见的数据仓库架构及其功能: #### 1. **操作数据存储 (ODS)** 操作数据存储 (ODS) 是数据仓库的第一,主要用于存储来自业务系统的原始数据[^4]。这一的特点是数据粒度非常细,几乎不进行任何加工或清洗。它保留了业务系统中的原始记录,便于后续分析和追溯。 ```sql -- 示例:将业务系统中的订单数据同步到 ODS INSERT INTO ods_orders (order_id, customer_id, order_date, total_amount) SELECT order_id, customer_id, order_date, total_amount FROM source_system.orders; ``` #### 2. **数据仓库明细 (DWD)** 数据仓库明细 (DWD) 存储的是经过初步清洗和加工后的明细数据。相比 ODS ,DWD 的数据质量更高,字段更适合作为统计分析的基础。此外,在 DWD 中可以通过维度退化等方式优化查询性能。 ```sql -- 示例:从 ODS 提取并清洗数据到 DWD INSERT INTO dwd_orders_cleaned (order_id, customer_name, order_date_formatted, total_price_in_usd) SELECT order_id, c.customer_name, DATE_FORMAT(o.order_date, '%Y-%m-%d') AS order_date_formatted, ROUND(o.total_amount * exchange_rate.usd_exchange_rate, 2) AS total_price_in_usd FROM ods_orders o JOIN customers c ON o.customer_id = c.id JOIN exchange_rates exchange_rate ON o.currency_code = exchange_rate.code; ``` #### 3. **数据仓库汇总 (DWM)** 数据仓库汇总 (DWM) 主要用于存储聚合后的数据,这些数据通常是基于业务需求生成的各种指标和报表所需的结果集[^4]。通过预先计算好常用的汇总数据,可以显著提升查询效率。 ```sql -- 示例:生成每日销售额汇总表 INSERT INTO dwm_daily_sales_summary (date, total_sales) SELECT DATE(order_date_formatted) AS date, SUM(total_price_in_usd) AS total_sales FROM dwd_orders_cleaned GROUP BY DATE(order_date_formatted); ``` #### 4. **数据应用 (ADS)** 数据应用 (ADS) 提供最终面向用户的视图,支持各种 BI 工具或其他应用程序访问。此可以根据具体的应用场景进一步定制化处理。 --- ### ETL 过程在数据仓库中的角色 ETL(Extract Transform Load)作为数据仓库的核心技术之一,承担着连接源系统与目标数据仓库的重要职责[^1]。它的主要流程如下: - **抽取 (Extract)**:从不同的数据源中获取原始数据。 - **转换 (Transform)**:对数据进行清洗、去重、格式转换等操作。 - **加载 (Load)**:将处理好的数据写入到目标数据仓库的不同次中。 实时 ETL 技术近年来也逐渐成为主流,特别是在需要快速响应业务变化的情况下[^2]。例如,某些行业可能要求数据仓库每天甚至每小时更新一次,以满足实时决策的需求。 --- ### 数据仓库模型设计 数据仓库模型主要包括以下几种类型: - **星型模型**:由一个事实表和若干维表组成,适合简单的查询场景。 - **雪花模型**:在星型模型的基础上进一步规范化维表,适用于复杂的关系建模。 - **多维立方体模型**:通过对数据进行预计算形成多维立方体,提供高效的在线分析能力。 ```python # 使用 Pandas 构造一个多维数据分析示例 import pandas as pd data = { 'Date': ['2023-01-01', '2023-01-02'], 'Region': ['North', 'South'], 'Sales': [1000, 1500], } df = pd.DataFrame(data) pivot_table = pd.pivot_table(df, values='Sales', index=['Region'], columns=['Date']) print(pivot_table) ``` ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值