
《新兴数据湖仓设计与实践手册·从分层架构到数据湖仓架构设计(2025 年)》 系列文章将聚焦从数据仓库分层到数据湖仓架构的设计与实践。手册将阐述数据仓库分层的核心价值、常见分层类型,详解分层下的 ETL 架构及数据转换环节,介绍数据仓库分层对应的技术架构,并以贴源层(ODS)、数据仓库层(DW)、数据服务层(DWS)为例,深入剖析数湖仓分层设计,最后探讨数据仓库技术趋势并进行小结。
本文为系列文章末篇,将详细剖析数据仓库分层下的数据服务层和数据应用层设计,并对当下湖仓技术以及未来技术趋势进行系统的总结。
👉上文回顾:《(一)从分层架构到数据湖仓架构:数据仓库分层的概念与设计》
(二)从分层架构到数据湖仓架构:数据仓库分层下的技术架构与举例
(三)从分层架构到数据湖仓架构系列:数据仓库分层之贴源层和数据仓库层设计
数据服务层设计(DWS,Data Warehouse Service)- 汇总层宽表

数据服务层(DWS)是基于数据明细层(DWD)构建的汇总层,面向特定业务主题,以宽表形式组织数据,支持分析和业务查询。该层的数据根据不同的主题和分析需求,通过对明细数据进行轻度聚合而成,减少维度数量,以便进行快速、高效的查询。
设计理念与结构
DWS层通过将DWD层的明细数据按主题域(如订单、用户、商品)进行汇总,为分析场景提供预处理的数据支持。数据粒度由细粒度提升至汇总粒度,以更适合多场景的业务查询需求。例如,按交易来源或类型对交易数据进行汇总,可以快速生成每天各主题的行为统计,如商品复购率、用户活跃度等。
特点和用途
- 面向主题:DWS层按业务主题划分数据,如销售、库存、客户等,生成覆盖多个指标的宽表。每张宽表通常包含较多字段,支持复杂的业务分析与数据分发。
- 少表宽表设计:DWS层表数量相对较少,每张宽表涵盖多个业务内容,减少表关联,提升OLAP分析和查询性能。
- 一致性整合:通过整合多个中间层数据(如DWD层),形成一致的企业级汇总事实表(如用户事实表、渠道事实表、终端事实表等),保证数据口径的一致性。
数据聚合与汇总示例
- 按天轻度汇总:基于DWD数据,对各主题对象(如购买行为)按天进行统计。例如,统计某商品的日复购率或销售额,方便后续的时间序列分析。
- 主题宽表示例:按照业务主题,生成具有较多字段的宽表,用于业务查询、OLAP分析等。例如,dws_sales_summary宽表可包含销售额、复购率、用户地域分布等字段。
- 多层次分析:以不同维度进行汇总,如最近一天特定类目(如厨具)商品在各省的销售总额,或者Top 10商品的销售额,支持灵活的多维分析。
场景应用与效率提升
通过汇总层的预聚合,DWS层可以满足80%的常见业务分析需求,减少直接查询ODS层的计算压力。例如,按7天、30天、90天等时间窗口的用户行为分析在DWS层中可以更加高效。
- 实时分析支持:对DWS层数据进行轻度汇总,有助于实现实时或准实时的用户画像、销售趋势分析等需求。
- 典型分析场景:如用户在不同时间段登录的IP及购买商品数量、各地区的购买力分布等。这些分析支持业务决策和营销策略调整。
命名和分区规范
- 表命名规范:建议DWS层表名以dws_主题_宽表描述命名,如dws_sales_summary或dws_user_activity.
- 分区设计:通常按天或周创建分区,便于时间序列查询;若无时间属性,则根据业务需求自定义分区字段。
通过DWS层的数据汇总与主题划分,企业可以在汇总宽表的基础上,迅速提取核心业务指标,为上层业务查询、报表和OLAP分析提供高效、结构化的数据支持。
数据服务层(DWS)职责与设计原则
DWS层(数据汇总层)基于DWD层的明细数据,按业务主题对数据进行聚合,以宽表形式存储,支持业务查询、OLAP分析和数据分发。DWS层将多个DWD层表中分散的数据进行汇总,按主题整合到单一宽表中,例如用户、订单、商品、物流等。每张宽表涵盖相关主题的多个维度和指标字段,以满足业务方的多维度分析需求。
DWS层的核心任务
- 主题汇总
将DWD层的明细数据按照业务主题进行聚合,创建单独的宽表。例如,在“用户”主题下,用户注册信息、收货地址和征信数据等内容可以整合到一张宽表中,方便后续的数据查询和分析。 - 主题建模
针对特定业务主题,如流量、订单、用户,构建数据模型,将相关数据从DWD层抽取并聚合。DWS层提供的宽表通常按时间分层,如按天、月汇总的流量会话、每日新增用户、每日活跃用户等。 - 维度汇总
提前将查询需求中的常用维度数据进行聚合处理。例如,将营销渠道、用户来源等维度数据提前整合,简化后续的查询逻辑。
设计规范
- 宽表设计
DWS层通常为每个主题提供1至3张宽表,宽表覆盖多个业务指标,能够满足70%以上的业务需求。典型的宽表包括用户行为宽表、商品宽表、物流宽表和售后宽表等。其中,用户行为宽表是字段最丰富的,可能包含60至200个字段,以支持更全面的用户分析。 - 命名和分区规范
- 命名:DWS层表名以dws_开头,后接业务主题和时间周期标识(如_1d代表每日汇总,_1w代表每周汇总)。
- 分区:通常按天或小时创建分区(如_hh表示小时分区),如无时间维度,则根据业务逻辑选择分区字段。
- 示例命名:
- dws_asale_trd_byr_subpay_1d:按买家粒度的交易分阶段付款每日汇总。
- dws_asale_trd_itm_slr_hh:按卖家粒度的商品小时汇总。
- 数据存储
DWS层数据采用Impala内表和Parquet文件格式存储,具备高效的查询性能。一般以覆盖旧表的方式更新数据,定期生成历史快照用于数据存档和溯源分析。
典型的DWS宽表设计示例
- 用户维度宽表示例
| 列名 | 数据类型 | 注释 |
|---|---|---|
| user_id | STRING | 用户ID |
| user_gender | STRING | 用户性别 |
| user_age | STRING | 用户年龄 |
| user_level | STRING | 用户等级 |
| buyer_nick | STRING | 买家昵称 |
| mord_prov | STRING | 地址 |
| login_count | BIGINT | 当日登录次数 |
| cart_count | BIGINT | 加入购物车次数 |
| order_count | BIGINT | 当日下单次数 |
| order_amount | DECIMAL(16, 2) | 当日下单金额 |
| payment_count | BIGINT | 当日支付次数 |
| payment_amount | DECIMAL(16, 2) | 当日支付金额 |
| confirm_paid_amt_sum_1d | DOUBLE | 最近一天订单已确认收货的金额总和 |
| order_detail_stats | ARRAY<STRUCT<sku_id:STRING, sku_num:BIGINT, order_count:BIGINT, order_amount:DECIMAL(20, 2)>> | 下单明细统计 |
表注释:每日购买行为
分区字段:dt(STRING 类型)
存储格式:PARQUET
存储路径:/warehouse/gmall/dws/dws_sale_detail_daycount/
表属性:"parquet.compression" = "lzo"

- 商品维度宽表示例
| 列名 | 数据类型 | 注释 |
|---|---|---|
| item_id | BIGINT | 商品ID |
| item_title | STRING | 商品名称 |
| cate_id | BIGINT | 商品类目ID |
| cate_name | STRING | 商品类目名称 |
| confirm_paid_amt_sum_1d | DOUBLE | 最近一天订单已确认收货的金额总和 |
表注释:商品粒度交易最近一天汇总事实表
分区字段:ds(STRING 类型,注释为“分区字段YYYYMMDD”)
生命周期:36000
DWS层的作用与数据集市的关系
DWS层通常被称为数据集市层,因其按业务主题对数据进行预处理和汇总,形成可供业务直接使用的宽表。如果DWS层提供的数据直接用于业务应用,则其可以被视为数据集市。DWS层中的数据集市宽表适合业务用户查询、生成报表、支持OLAP分析等。
DWS层是数据仓库的重要组成部分,提供了一个结构化、按主题分层的数据视图,通过提前汇总和聚合数据,DWS层有效降低了查询和计算成本,是数据仓库面向业务的核心数据服务层。
数据应用层设计(ADS,Application Data Store)

数据应用层(ADS)用于存储个性化的统计指标和报表数据,为数据产品、业务应用和数据分析提供专门的数据支持。ADS层的数据是高度汇总或定制化的数据集,覆盖流量、订单、用户等主题,以宽表形式存储,支持多维分析、查询、数据分发等。该层的数据粒度通常较粗,涵盖汇总数据和部分重要的明细数据,满足用户对近期数据的分析需求。
ADS层的核心功能
- 应用场景定制
在DWS层基础上,面向应用场景进一步聚合数据,生成高定制化的宽表(如用户行为、订单趋势)。这些数据可以直接供业务系统调用或导入至应用系统(如MySQL、Redis、Druid)中,用于前端展示、实时查询和分析。 - 满足部门需求
ADS层的数据按业务部门需求进行划分,仅包含与部门分析相关的数据子集。例如,流量数据集市提供流量分析指标,用户数据集市提供活跃度、转化率等用户行为数据,为业务方提供更直观的分析数据。 - 数据集市和宽表支持
数据集市在ADS层按主题划分,如流量、订单、用户等,生成字段丰富的宽表。这些宽表汇总了各类业务指标和维度,支持多种分析需求,广泛用于OLAP分析、KPI展示和业务监控。
数据生成和存储方式
- 数据生成
ADS层的数据源于DWD和DWS层,按业务需求从这些基础层数据中抽取并加工。ADS层表的数据更新频率依赖于业务需求,可以是每日或每小时刷新。 - 存储与分区
使用Impala内表和Parquet格式存储ADS数据,按天或业务字段进行分区,以优化查询效率。对于没有时间属性的表,根据具体业务选择适当的分区字段。 - 表命名规范
库名暂定为ads,表名格式建议为ads_主题_业务表名,按业务需求进行定制。
数据应用层示例
- 用户行为宽表
用于存储用户的互动、消费等行为数据,包含各类用户活动信息,如评论、点赞、收藏、分享、GMV等字段。每张宽表大约包含60-200个字段,满足多维度的用户分析需求。
![]()
![]()
![]()
![]()
| 列名 | 数据类型 | 注释 |
|---|---|---|
| user_id | STRING | 用户ID |
| nickname | STRING | 用户昵称 |
| register_date | STRING | 注册日期 |
| register_from | STRING | 注册来源 |
| remark | STRING | 细分渠道 |
| province | STRING | 注册省份 |
| pl_cnt | BIGINT | 评论次数 |
| ds_cnt | BIGINT | 打赏次数 |
| sc_add | BIGINT | 添加收藏 |
| sc_cancel | BIGINT | 取消收藏 |
| gzg_add | BIGINT | 关注商品 |
| gzg_cancel | BIGINT | 取消关注商品 |
| zhi_cnt | BIGINT | 点赞次数 |
| share_cnts | BIGINT | 分享次数 |
| bl_cnt | BIGINT | 爆料数 |
| gmv_amount | BIGINT | 成交金额 |
| gmv_sales | BIGINT | 订单数 |
分区字段:dt(STRING 类型)
存储格式:PARQUET
- 商品销售汇总表
汇总商品的销售数据,按日或更细粒度进行存储,为分析商品的销售趋势、库存管理等提供支持。
| 列名 | 数据类型 | 注释 |
|---|---|---|
| item_id | BIGINT | 商品ID |
| item_title | STRING | 商品名称 |
| cate_id | BIGINT | 商品类目ID |
| confirm_paid_amt_sum_1d | DOUBLE | 订单确认收货的金额总和 |
| 分区字段 | ds (STRING) | 分区字段 YYYYMMDD |
| 生命周期 | 36000 | - |
常用分析指标与应用场景
- 用户活跃度
- 日活、周活、月活:统计用户的活跃频率,通过设备ID计算不同时间范围内的活跃用户。
- 留存率:统计新增用户的留存情况,计算1天、7天等时间范围内的用户留存率。
- 用户增长与回流
- 新增用户:基于每日新增用户的统计。
- 回流用户:分析在一段时间内回归活跃的用户数量。
- 用户转化与行为分析
- 转化率:从商品详情到下单、支付的转化率。
- 复购率:按用户或商品的复购情况统计,支持商品或品类的复购趋势分析。
- 商品分析
- 销售额和GMV:按商品或品类计算销售额和GMV,分析热销产品。
- Top N商品:计算销售排名前N的商品,支持流行度和消费偏好的分析。
- 用户留存与流失分析
- 沉默用户:统计登录时间为7天前且登录频率极低的用户。
- 流失用户:识别近期未登录或活跃度降低的用户,便于后续的用户运营和召回策略。
数据应用层的角色与更新策略
- 应用层角色
ADS层主要面向业务方和数据产品团队,数据经过多层处理和汇总后直接支持报表、KPI、OLAP分析和仪表盘等应用。作为面向最终用户的数据集市,ADS层能够快速响应业务需求。 - 更新方式
旧数据通常采用覆盖更新,按业务需求定期刷新,确保数据时效性。
临时表支持
- TMP层
数据处理过程中常需临时表以支持复杂计算,ADS层提供独立的TMP层(DW TMP)用于存储这些中间计算结果,避免主数据表的反复更新,提高数据处理的效率和稳定性。
通过ADS层的数据集市和宽表设计,企业能够更灵活地支持多种数据产品和分析需求,为业务增长、用户行为分析、市场洞察等提供强有力的数据支撑。
层次调用规范
在数据仓库分层架构中,必须遵循严格的调用规范,以确保数据流动的单向性,避免复杂的依赖关系和反向调用。
- 禁止反向调用:下层数据不可调用上层数据,保持数据流向的单向性和清晰性。
- 调用规范:
- oODS层:仅允许被DWD层调用。
- oDWD层:允许被DWS和ADS层调用。
- oDWS层:仅允许被ADS层调用。
- oADS层:可调用DWD、DWS及其他ADS表,但建议优先使用汇总度更高的数据,以减少数据冗余和性能消耗。
调用路径概述
数据的标准调用路径包括:
- ODS -> DWD -> DWS -> ADS
- ODS -> DWD -> ADS
数据仓库技术趋势与小结
数据仓库分层架构为企业构建了高效、稳定的海量数据管理体系,支持数据治理、业务逻辑隔离、数据追踪和复用。通过ODS、DWD、DWS和ADS的分层设计,数据在逐层传递和加工中实现标准化和清洗,确保了一致性和数据可追溯性。
这一架构不仅提高了数据使用的规范性,还降低了系统耦合,提升了数据共享的便捷性。
- ODS层:作为原始数据接入层,ODS层负责保留细粒度数据,通过ETL或CDC方式捕获源系统的变更数据,确保数据完整性。
- DWD层:标准化数据并进行清洗和脱敏,去除冗余,确保数据一致性,为后续分析和建模提供了基础。
- DWS层:将DWD数据聚合为符合业务主题的宽表,构建面向主题的数据服务,优化计算性能并促进数据复用。
- ADS层:进一步聚合数据,生成高性能、面向应用的宽表,支持数据产品和业务应用场景,如OLAP分析、KPI监控和仪表盘展示。
随着数据规模和数据源的多样化,数据仓库的架构和技术也在不断演进,当前的主要趋势包括:
- 实时数据处理与CDC技术:传统的批量数据处理已经无法满足现代企业的需求,CDC技术成为数据实时同步和更新的主流方法,确保数据仓库中数据的实时性。
- 数据湖与数据仓库的融合:在成为行业的热门趋势,例如Data Lakehouse架构,将数据湖的灵活性与数据仓库的高效分析能力相结合,为企业提供更强的数据管理能力。
- DataOps与自动化数据管理:随着企业对数据管理自动化要求的提高,DataOps逐渐成为数据管理的核心工具。例如,白鲸开源的DataOps工具能够实现从数据采集到数据质量控制的全流程自动化管理。
结合新一代数据湖仓(Hudi、Iceberg、GaussDB、Redshift、Greenplum、Doris、Starrocks、偶数、PieDB、MatrixDB等)配合白鲸开源的WhaleStudio工具,可以快速根据本文的设计实践建立起批流一体的数据湖仓。整体上,无论是湖、仓、实时数仓、都要遵循分层设计架构明确了各层的调用边界,禁止反向调用,确保数据流动顺畅,降低了系统复杂度。
白鲸开源 WhaleStudio 是 ApacheDolphinScheduler 和Apache SeaTunnel 原班人马打造的商业版数据同步与调度工具,提供功能更多、稳定性更强的商业版本解决用户调度,数据开发、数据同步和 ETL 的问题,目前支持 200+ 种数据库(信创、云、开源、ERP 等)的 ETL 与数据开发,全面替换Informatica 与 Talend 等工具相应功能,在中信证券等多个行业头部企业都有成功商业版和实施替换案例。
如有意咨询,发送邮件至 service@whaleops.com,或者扫码二维码咨询:




