简单搞定数仓搭建:数仓模型(DWD)

数据仓库之DWD层 DWD(Data WareHouse Detail)数据明细层,主要是将从业务数据库中同步过来的ODS层数据进行清洗和整合成相应的事实表。事实表作为数据仓库维度建模的核心,需要紧紧围绕着业务过程来设计。在拿到业务系统的表结构后,进行大概的梳理,再与业务方沟通整个业务过程的流转过程,对业务的整个生命周期进行分析,明确关键的业务步骤,在能满足业务需求的前提下,尽可能设计出更通用的模型。 业务方有时只仅仅只是考虑了当下的情况。例如业务想要一个审核通过人员的明细数据,我们设计了一个全量的审核明细表,过了几天,业务 阅读详情

明细粒度事实层(DWD)

明细粒度事实层以业务过程驱动建模,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。您可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。

公共汇总粒度事实层(DWS)和明细粒度事实层(DWD)的事实表作为数据仓库维度建模的核心,需紧绕业务过程来设计。通过获取描述业务过程的度量来描述业务过程,包括引用的维度和与业务过程有关的度量。度量通常为数值型数据,作为事实逻辑表的依据。事实逻辑表的描述信息是事实属性,事实属性中的外键字段通过对应维度进行关联。

事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述:一种是维度属性组合所表示的细节程度,一种是所表示的具体业务含义。

作为度量业务过程的事实,通常为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型:

  • 可加性事实是指可以按照与事实表关联的任意维度进行汇总。
  • 半可加性事实只能按照特定维度汇总,不能对所有维度汇总。例如库存可以按照地点和商品进行汇总,而按时间维度把一年中每个月的库存累加则毫无意义。
  • 完全不可加性,例如比率型事实。对于不可加性的事实,可分解为可加的组件来实现聚集。

事实表相对维表通常更加细长,行增加速度也更快。维度属性可以存储到事实表中,这种存储到事实表中的维度列称为维度退化,可加快查询速度。与其他存储在维表中的维度一样,维度退化可以用来进行事实表的过滤查询、实现聚合操作等。

明细粒度事实层(DWD)通常分为三种:事务事实表、周期快照事实表和累积快照事实表 

  • 事务事实表用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为原子事实表。
  • 周期快照事实表以具有规律性的、可预见的时间间隔记录事实。
  • 累积快照事实表用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点。当累积快照事实表随着生命周期不断变化时,记录也会随着过程的变化而被修改。

明细粒度事实表设计原则

明细粒度事实表设计原则如下所示:

  • 通常,一个明细粒度事实表仅和一个维度关联。
  • 尽可能包含所有与业务过程相关的事实 。
  • 只选择与业务过程相关的事实。
  • 分解不可加性事实为可加的组件。
  • 在选择维度和事实之前必须先声明粒度。
  • 在同一个事实表中不能有多种不同粒度的事实。
  • 事实的单位要保持一致。
  • 谨慎处理Null值。
  • 使用退化维度提高事实表的易用性。

明细粒度事实表整体设计流程如下图所示。

在一致性度量中已定义好了交易业务过程及其度量。明细事实表注意针对业务过程进行模型设计。明细事实表的设计可以分为四个步骤:选择业务过程、确定粒度、选择维度、确定事实(度量)。粒度主要是在维度未展开的情况下记录业务活动的语义描述。在您建设明细事实表时,需要选择基于现有的表进行明细层数据的开发,清楚所建表记录存储的是什么粒度的数据。

明细粒度事实层(DWD)规范

通常您需要遵照的命名规范为:dwd_{业务板块/pub}_{数据域缩写}_{业务过程缩写}[_{自定义表命名标签缩写}] _{单分区增量全量标识},pub表示数据包括多个业务板块的数据。单分区增量全量标识通常为:i表示增量,f表示全量。例如: dwd_asale_trd_ordcrt_trip_di(A电商公司航旅机票订单下单事实表,日刷新增量)及dwd_asale_itm_item_df(A电商商品快照事实表,日刷新全量)。

本教程中,DWD层主要由三个表构成:

  • 交易商品信息事实表:dwd_asale_trd_itm_di。
  • 交易会员信息事实表:dwd_asale_trd_mbr_di。
  • 交易订单信息事实表:dwd_asale_trd_ord_di。

建表示例

CREATE TABLE IF NOT EXISTS dwd_asale_trd_itm_di
(
    item_id              BIGINT COMMENT '商品ID',
    item_title           STRING COMMENT '商品名称',
    item_price           DOUBLE COMMENT '商品价格',
    item_stuff_status    BIGINT COMMENT '商品新旧程度_0全新1闲置2二手',
    item_prov            STRING COMMENT '商品省份',
    item_city            STRING COMMENT '商品城市',
    cate_id              BIGINT COMMENT '商品类目ID',
    cate_name            STRING COMMENT '商品类目名称',
    commodity_id         BIGINT COMMENT '品类ID',
    commodity_name       STRING COMMENT '品类名称',
    buyer_id             BIGINT COMMENT '买家ID'
)
COMMENT '交易商品信息事实表'
PARTITIONED BY (ds     STRING COMMENT '日期')
LIFECYCLE 400;

CREATE TABLE IF NOT EXISTS dwd_asale_trd_mbr_di
(
    order_id         BIGINT COMMENT '订单ID',
    bc_type          STRING COMMENT '业务分类',
    buyer_id         BIGINT COMMENT '买家ID',
    buyer_nick       STRING COMMENT '买家昵称',
    buyer_star_id    BIGINT COMMENT '买家星级ID',
    seller_id        BIGINT COMMENT '卖家ID',
    seller_nick      STRING COMMENT '卖家昵称',
    seller_star_id   BIGINT COMMENT '卖家星级ID',
    shop_id          BIGINT COMMENT '店铺ID',
    shop_name        STRING COMMENT '店铺名称'
)
COMMENT '交易会员信息事实表'
PARTITIONED BY (ds     STRING COMMENT '日期')
LIFECYCLE 400;

CREATE TABLE IF NOT EXISTS dwd_asale_trd_ord_di
(
    order_id              BIGINT COMMENT '订单ID',
    pay_order_id          BIGINT COMMENT '支付订单ID',
    pay_status            BIGINT COMMENT '支付状态_1未付款2已付款3已退款',
    succ_time             STRING COMMENT '订单交易结束时间',
    item_id               BIGINT COMMENT '商品ID',
    item_quantity         BIGINT COMMENT '购买数量',
    confirm_paid_amt      DOUBLE COMMENT '订单已经确认收货的金额',
    logistics_id          BIGINT COMMENT '物流订单ID',
    mord_prov             STRING COMMENT '收货人省份',
    mord_city             STRING COMMENT '收货人城市',
    mord_lgt_shipping     BIGINT COMMENT '发货方式_1平邮2快递3EMS',
    mord_address          STRING COMMENT '收货人地址',
    mord_mobile_phone     STRING COMMENT '收货人手机号',
    mord_fullname         STRING COMMENT '收货人姓名',
    buyer_nick            STRING COMMENT '买家昵称',
    buyer_id              BIGINT COMMENT '买家ID'
)
COMMENT '交易订单信息事实表'
PARTITIONED BY (ds       STRING COMMENT '日期')
LIFECYCLE 400;
离线数仓(八)【DWD 层开发】 DWD层开发 阅读详情

相关推荐

数仓分层ODS、DWD、DWM、DWS、DIM、DM、ADS

数仓分层,数据源层:ODS(Operational Data Store),数据仓库层:DW(Data Warehouse)、数据明细层:DWD(Data Warehouse Detail)、数据中间层:DWM(Data WareHouse Midddle)、数据服务层:DWS(Data WareHouse Service)、 数据应用层:ADS(Application Data Service)、 维表层:DIM(Dimension)

qq_73181349的博客 4840

Pandas第三次作业20200907

练习1 • 读取北向.csv 指定第一列为行索引 • 查看数据的基本信息 有无缺失值 对其缺失值进行处理 • 删除缺失值所在行 • 查看数据的基本信息 查看数据是否清洗完毕 • index列没啥用 将index列删除 • 观察数据是否有重复行 • 将重复行进行删除 • 将行索引 进行升序 • 将处理好的数据 保存至 北向(副).csv #!/user/bin/env python #-*-coding: utf-8-*- #@Time : 2020/9/719:53 #@Author

Narutolxy的博客 1879

数仓的极致分层

一些基础的层级: (92条消息) 数据仓库--数据分层(ETL、ODS、DW、APP、DIM)_lcl_bigdata的博客-优快云博客_dim层 针对不同业务场景的分层: 最全面的数仓分层剖析,一文搞定企业数仓分层 | 人人都是产品经理 (woshipm.com) 理解DWT和STG两种比较常见也少见的层级 有实际举例的层级介绍: (92条消息) 数仓分层(ODS、DWD、DWS、DWT、ADS)和数仓建模_billows9297的博客-优快云博客_dws dwt 电商DWT

MISAYAONE的博客 508

[数据仓库]分层概念,ODS,DM,DWD,DWS,DIM的概念

一. 各种名词解释 1.1 ODS是什么? ODS层最好理解,基本上就是数据从源表拉过来,进行etl,比如mysql 映射到hive,那么到了hive里面就是ods层。 ODS 全称是 Operational Data Store,操作数据存储.“面向主题的”,数据运营层,也叫ODS层,是最接近数据源中数据的一层,数据源中的数据,经过抽取、洗净、传输,也就说传说中的 ETL 之后,装入本层。本层的数据,总体上大多是按照源头业务系统的分类方式而分类的。但是,这一层面的数据却不等同于原始数据。在源数据装入这一层

白鸽 1万+

FineDataLink实战:5步搞定ODS到ADS的数仓分层搭建(附避坑指南)

本文详细介绍了如何使用FineDataLink工具,通过5个关键步骤完成从ODS到ADS的数仓分层搭建。内容涵盖环境准备、ODS层建设、DWD层加工、DWS层聚合以及ADS层应用,并提供了实用的避坑指南和优化技巧,帮助读者高效构建企业级数据仓库。

weixin_42537831的博客 265

数仓建模选型:维度模型与第三范式实战解析

数据仓库建模是数据工程领域的核心基础问题,直接决定数据能否高效支撑分析与决策。建模的本质在于平衡存储成本、查询性能与更新灵活性,维度模型与第三范式正是两种典型的技术路线。维度模型以事实表和维度表为核心,通过星型模型减少关联、提升分析易用性,适合面向业务分析的数据集市与报表场景;第三范式则通过消除数据冗余、保证一致性,适用于企业级主数据管理与操作型系统。在实际离线数仓分层中,DWD层通常采用维度模型构建明细事实,DWS层进行预聚合,ODS层负责原样接入,各层建模策略各有侧重。理解两种模型的核心思想与适用边界,

weixin_29051193的博客 340

简单搞定数仓搭建:数仓规范

DMP数仓规范 1. 数据模型架构规范 1.1数据层次的划分 ODS:Operational Data Store,操作数据层,在结构上其与源系统的增量或者全量数据基本保持一致。它相当于DW数据的一个数据准备区,同时又承担着基础数据的记录以及历史变化。其主要作用是把基础数据引入到DMP。 CDM:Common Data Model,公共维度模型层,又细分为DWD和DWS。它的主要作用是完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。 DWD:D

github_36444580的博客 2221

指标治理避坑指南:从订单量统计翻车事件看数仓分层设计

本文通过电商平台订单量统计翻车事件,深入剖析数据仓库分层设计中的常见陷阱,提出指标治理的'三统一'原则。重点强调数仓分层设计中指标一致性的重要性,分享原子指标唯一性、公共逻辑下沉等黄金法则,并给出实用的分层checklist与SQL规范,帮助团队避免数据口径混乱问题。

weixin_30399821的博客 352

企业级大数据项目【3】数仓-流量域DWD-DWS开发篇

1DW层整体设计 建模思想: DWD:放明细数据 DWS:数仓服务层;它的建模思想,就是为最终需求计算来提供支持服务,所以建模相对灵活 常见的建模套路有: 1.建大宽表(对应:维度建模思想中的维度退化) 2.轻度聚合 3.看具体需求(如,用户连续活跃区间记录表) 1.1技术选型概述 存储:HDFS 运算:HIVE/SPARK 1.2输入输出 数仓内部 输入 dwd层事实表及dim层维度表 输出 dws层聚合表 1.3主题模型举例 流量会话聚合天/月表 日新日活维度聚合表 事件会话聚合

涛哥大数据小屋 3670

数据建模实战指南:从数仓分层、事实表到维度建模

数据建模是数据仓库建设的核心环节,通过事实表与维度表的设计,将业务过程转化为可复用、口径一致的数据资产。数仓分层(ODS、DWD、DWS、ADS)是建模思想的具体落地,每层各司其职,能够有效解决烟囱式开发带来的指标混乱、重复计算等问题。在工程实践中,合理使用缓慢变化维、维度退化等技巧,能够保障历史数据的准确性。无论是离线数仓还是实时数仓,建模都能降低查询成本,提升数据治理效率。本文以订单分析场景为例,详细讲解从原始数据落地到汇总层构建的全过程,帮助大数据开发者和学习者掌握一套扎实的建模方法论。

weixin_33483304的博客 235

别再手动建模了!用Simscape Multibody Link一键导入SolidWorks装配体到Simulink

本文介绍了如何利用Simscape Multibody Link插件将SolidWorks装配体一键导入Simulink,实现CAD到仿真的无缝衔接。该技术显著提升机械系统设计与控制效率,特别适用于工业机器人、车辆悬架等复杂机构的动力学分析。文章详细解析了插件安装、模型导出优化及仿真验证的全流程,帮助工程师摆脱手动建模的低效工作模式。

weixin_27256197的博客 457

简单搞定数仓搭建:数仓分层

我们建议将数据仓库分为三层,自下而上为:数据引入层(ODS,Operation Data Store)、数据公共层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。 数据仓库的分层和各层级用途如下图所示。 数据引入层ODS(Operation Data Store):存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。主要完成基础数据引入到MaxCompute的职责,同时记录基础数据的历史变化。

github_36444580的博客 778

Unity3D Pico VR 手势交互实战:基于MRTK3实现抓握与射线控制

本文针对Pico VR原生手势交互功能不足的问题,提供了基于MRTK3实现高级手势交互的实战解决方案。通过将MRTK3成熟的交互框架与Pico的手势追踪能力相结合,详细讲解了从环境配置、SDK导入、核心适配到真机调试的全流程,帮助开发者高效实现抓握与射线控制等复杂交互,有效提升Pico VR应用的开发效率与体验。

weixin_29011667的博客 390

简单搞定数仓搭建:架构与模型设计(二)

上期引用:https://mp.youkuaiyun.com/mp_blog/creation/editor/118491690 数据模型 目录 数据引入层(ODS) 数据引入层表设计 建表示例 数据引入层存储 缓慢变化维度 明细粒度事实层(DWD) 明细粒度事实表设计原则 明细粒度事实层(DWD)规范 建表示例 公共汇总粒度事实层(DWS) 公共汇总事实表设计原则 公共汇总事实表规范 建表示例 公共维度汇总层(DIM) 定义维度 设计维表 公共维度汇总层(DIM)维表规范 建表

github_36444580的博客 874

ShardingSphere-JDBC-若依框架集成(SpringBoot)

ShardingSphere基础知识、ShardingSphere-JDBC如何集成进若依框架中 使用的是若依框架前后端版本、动态数据源,可自行切换,默认数据源为达梦8代理端,

编程小菜鸟的笔记 8168

【Cadence】PSS+PSTB/PAC仿真在开关电源稳定性分析中的关键应用

本文深入探讨了Cadence仿真工具中PSS+PSTB/PAC方法在开关电源稳定性分析中的关键应用。针对开关电源作为时变非线性系统的特性,传统STB仿真方法会失效。文章详细阐述了如何通过PSS分析找到周期稳态,并在此基础上利用PSTB或PAC进行精确的环路增益和小信号频响分析,为电源设计提供可靠的稳定性评估与补偿网络设计依据。

weixin_29276847的博客 523

【数仓建模】如何从0开始搭建数据仓库?维度建模实践笔记

本文基于Kimball维度建模方法,系统阐述从0搭建数据仓库的实践路径:以业务过程为起点,通过“选择业务过程→声明粒度→确定维度→确定事实”四步法,构建ODS贴源层、DWD明细层、DWS汇总层、ADS应用层及DIM维度层。强调分层解耦设计,实现数据可溯源、可复用、易维护。结合电商场景案例,详解各层功能与建表逻辑,并引入总线矩阵保障维度一致性,助力初学者快速掌握数仓建设全流程。

zy123456nn的博客 683

稀疏阵列选型指南:互质阵、嵌套阵、MRA,谁才是你项目里的‘性价比之王’?

本文深入探讨了稀疏阵列技术中的互质阵、嵌套阵和MRA三大架构的工程化选型策略,重点分析了它们在DOA估计、自由度、旁瓣抑制和计算复杂度等核心指标上的表现。通过实际案例和配置示例,为智能天线、声学定位和毫米波雷达等应用场景提供技术选型指南,帮助研发团队在硬件成本与性能之间找到最佳平衡点。

weixin_42525005的博客 488

简单搞定数仓搭建:架构与模型设计(一)

技术架构选型 在数据模型设计之前,您需要首先完成技术架构的选型。本教程中使用阿里云大数据产品MaxCompute配合DataWorks,完成整体的数据建模和研发流程。 完整的技术架构图如下图所示。其中,DataWorks的数据集成负责完成数据的采集和基本的ETL。MaxCompute作为整个大数据开发过程中的离线计算引擎。DataWorks则包括数据开发、数据质量、数据安全、数据管理等在内的一系列功能。 数仓分层 我们建议将数据仓库分为三层,自下而上为:数据引入层(ODS,Operatio.

github_36444580的博客 1019

3D 结构光相机工作原理全解 | 从编码投射到三维重建,原理 + 代码 + 工业实战一站式掌握

本文从3D结构光相机的整体架构出发,层层拆解了编码投射、相位计算、相位解包裹、三维重建的核心原理,补充了工业实战所需的公式推导、代码实现、参数调优、设备选型和案例落地,核心总结如下:相位是3D结构光成像的“灵魂”,其精度、稳定性直接决定3D重建的效果,包裹相位与绝对相位的区分的是工业实战的基础;编码投射的核心是“正弦条纹+格雷码条纹”组合,正弦条纹负责高精度相位提取,格雷码条纹辅助解包裹,适配工业场景的精度与稳定性需求;

getusushu的博客 413

【PCIe硬件】PCIe引脚PRSNT与热插拔

热插拔的基本目的是要让PCIe设备按照规定的顺序、原则,从系统中移除或插入到系统中来,并能正常的工作,且不影响系统的正常运行。事实上,PCIe“热插拔”的关键目的就是为前面面所提到的系统RAS服务的,是提升系统RAS能力的非常重要的手段!注意,这里有两个相关概念,前面我们讲的热插拔,其实是广义的“热插拔”。这里的Hot-Plug,为了方便,我们叫做PCIe热插拔,也就是我们现在及后面将要讨论的内容。

smartvxworks的博客 2801

需求方语录翻译指南:当产品经理说“只要加一个简单字段“时

专业的数据分析师绝不是“按单炒菜的厨子”,而是“企业数据管网的总工程师”。守住数仓建模的标准与节奏,敢于用清晰的逻辑帮助需求方梳理真实的商业目标,你才能把时间从无休止的“缝缝补补”中解脱出来,聚焦在真正有商业穿透力的高价值分析上。

2401_85575345的博客 2063

RK3568平台开发系列讲解:Linux wifi的调试

查询结果中state为ENABLE,表示hostapd程序启用成功。首先查看设备是否存在。

内核笔记 165

数仓分层从原理到实操:ODS、DWD、DWS、ADS全解析

在数据仓库建设中,分层架构是解决数据复用、口径统一与质量追溯的核心手段。其原理是将接入、清洗、汇总、应用拆分为ODS、DWD、DWS、ADS等职责清晰的层级,让数据逐级增值。这一设计既能降低重复开发成本,也能提升指标可信度,广泛应用于离线数仓、实时数仓、湖仓一体等场景。随着业务对时效性要求提高,实时数仓同样沿用分层理念,并以Kappa、Lambda架构补充流式计算能力。无论是初学者梳理概念,还是实践者优化模型,理解这些基础对构建稳定数据体系都至关重要。

weixin_29061997的博客 307

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

大数据医疗数据数仓建模

本人想成为某个领域的数据专家,因为自己喜欢生物,所以想成为医疗方面的专家,医疗他会长久不衰,只要人类还在,那么这个行业就一直存在。但是我意识到一个问题,如果发生战争了互联网不能用了,信号被中断了,停电了。你如果只有孩子的信息,但是做检验的却是它的母亲,所以得做关联。假如一个身高,一个是164cm一个是1600毫米,1.6米,这种就不能分析了。我软件专业的,职业是大数据工程师,投的都是医疗行业,发现这几家处理的都是体检数据。2.ETL的规范,字段规范,数据处理的时候就会规范,避免了重复数据。

前方的路在刚开始 1349

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

ClickHouse + DolphinScheduler:两个组件搞定轻量离线数仓,谁还堆 Hadoop 全家桶?

本文介绍了一种轻量级离线数仓搭建方案,采用ClickHouse+DolphinScheduler组合替代传统的Hadoop全家桶。该方案适用于日增数据量千万级以下的中小团队,具有部署简单(仅需2个组件)、运维成本低等优势。文章详细演示了从数仓分层设计(ODS/DWD/DWS/DIM/ADS)、利用ClickHouse原生MySQL引擎实现数据同步,到通过DolphinScheduler配置增量调度任务的全流程。相比传统方案,该方案在保证数仓核心功能的同时大幅降低了技术复杂度,使中小团队也能快速构建自己的数据

fengquan8866的博客 764

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

上一篇: 简单搞定数仓搭建:数仓模型(ODS)
下一篇: 简单搞定数仓搭建:数仓模型(DWS)
白枭
博客等级 码龄10年 53粉丝 46原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值