数仓分层与维度建模

共 18 题
#

1. 数仓分层的经典四层(ODS/DWD/DWS/ADS)各自职责、数据粒度与命名规范是什么?为什么数仓必须分层而不能直接使用业务库表?

A DWD 层负责维度建模、明确最小粒度,DWS 层负责按维度汇总,ADS 层面向应用 ✓ 正确答案
B DWD 层保留与业务库完全一致的原始数据,禁止任何加工
C ODS 层直接做汇总宽表,命名以前缀 dws_ 开头
D ADS 层数据粒度最细,是所有其他层的上游
#

2. Kimball 维度建模与 Inmon 范式建模的核心差异是什么?互联网行业为什么普遍采用 Kimball 总线架构?

A Kimball 总线架构依靠一致性维度保证各数据集市口径统一 ✓ 正确答案
B Inmon 采用自下而上的星型模型,Kimball 采用自上而下的 3NF 模型
C Kimball 模型会带来大量冗余,因此不适合互联网大数据场景
D Inmon 模型建模周期短、响应业务变化快,更适合互联网
#

3. 事实表的三种类型——事务事实表、周期快照事实表、累积快照事实表——分别适用什么业务场景?更新语义与存储开销有何差异?

A 事务事实表记录状态快照,适合分析库存余额
B 累积快照事实表只增不改,每笔事务追加一行
C 累积快照事实表存储开销随周期数线性增长
D 周期快照事实表按固定周期覆盖写快照,适合账户余额、库存等状态分析 ✓ 正确答案
#

4. 拉链表(SCD Type 2)的原理与实现,如何用生效/失效时间与当前标记记录历史?与每日全量快照在存储与查询上的取舍?

A 拉链表用 start_date/end_date/is_current 三段记录历史,存储量通常小于每日全量快照 ✓ 正确答案
B 拉链表每次属性变化都覆盖旧记录,不保留历史
C 拉链表查询当前状态必须扫描全部历史,性能必然低于快照表
D 拉链表只适合频繁变化的维度,不适合数据量大的场景
#

5. 维度建模的核心步骤,如何从业务过程出发确定粒度、维度与事实?粒度(Grain)错误会带来哪些口径问题?

A 粒度应在建模完成后再根据查询结果确定
B 粒度越细越好,不需要考虑存储与性能
C 粒度决定事实表的行数级与分析明细度,粒度错误会导致重复计数等口径问题 ✓ 正确答案
D 粒度只影响维度数量,不影响事实可加性
#

6. 退化维度(Degenerate Dimension)是什么?订单号、交易流水号等业务键为何直接放在事实表中?

A 订单号、交易流水号往往没有可分析的描述属性,直接作为事实字段放在事实表更高效 ✓ 正确答案
B 退化维度是必须单独建维度表的维度,才能保证一致性
C 退化维度必须做 SCD 历史管理,否则会丢失历史
D 退化维度只能用于事实表统计,不能用于关联其他明细
#

7. 一致性维度(Conformed Dimension)与总线矩阵的作用,为什么跨主题域共享维度是数仓可分析性的前提?

A 一致性维度允许各数据集市对同一对象采用不同主键定义
B 一致性维度保证跨主题域共享的维度属性、主键一致,是跨域可分析的前提 ✓ 正确答案
C 总线矩阵以行为维度、列为业务过程,用于规划每张事实表
D 一致性维度只在单主题域内有效,不涉及跨域
#

8. 原子指标与派生指标的定义,如何用“业务过程 + 度量 + 聚合方式 + 统计维度”定义指标口径,避免同名不同义?

A 原子指标可以叠加任意统计维度与过滤条件,是派生指标的基础
B 派生指标由"业务过程+度量+聚合方式"决定,不再需要维度
C 指标名称相同但口径不同属于正常现象,无需治理
D 原子指标由"业务过程+度量+聚合方式"确定,派生指标在此基础上叠加统计维度、时间周期与过滤条件 ✓ 正确答案
#

9. 数仓维度表的历史保留,SCD 拉链、全量快照与增量分区三种方案在存储成本、回填难度与查询易用性上的对比?

A 全量快照存储成本最低,但查询必须回放历史
B 增量分区回填难度最大,查询当前态需合并历史基线 ✓ 正确答案
C SCD 拉链查询易用性最好,任意天直接查分区即可
D 全量快照回填难度最大,但存储成本最低
#

10. 数仓建模的规范化程度,为什么 ODS 层尽量贴源、DWD 层适度冗余、DWS 层宽表汇总?各层模型如何演进?

A ODS 层应做深度清洗与规范化,剔除所有冗余字段
B ODS 尽量贴源保真,DWD 适度冗余,DWS 宽表汇总,是兼顾口径与性能的通用设计 ✓ 正确答案
C DWD 层应严格保持 3NF,禁止任何冗余
D DWS 层应保留最细粒度明细,不做任何聚合
#

11. 离线与实时两套数仓如何共用 ODS/DWD 模型与指标口径,避免两套烟囱式建设?

A 共用 DWD 明细底座与统一指标字典,是避免两套烟囱式建设、保证口径一致的关键 ✓ 正确答案
B 实时数仓与离线数仓口径可以不同,各自独立即可
C 只需要在 ADS 层统一命名,就能解决口径不一致问题
D 实时数仓必须独立建一套 ODS,不能与离线共用
#

12. 事实表加宽与维度表加宽的差异,何时把常用维度属性冗余到事实表,何时保持星型规范?

A 事实表加宽会减少冗余,但增加维度表连接
B 事实表加宽后维度属性变化无需任何处理
C 维度表加宽会破坏星型结构,应始终避免
D 高频使用且变化少的维度属性冗余到事实表可提升性能,变化频繁的属性应保留在维度表 ✓ 正确答案
#

13. 数仓数据域划分,如何按业务板块(交易、营销、风控)划分数据域并定义数据主题?

A 数据域只能按用户维度划分,不能按业务板块划分
B 数据主题与数据域是同一层级的概念
C 数据域是业务板块的纵向划分,数据主题是数据域内更细的分析对象组织 ✓ 正确答案
D 数据域划分只影响命名,不影响数据治理与权限
#

14. 数仓与数据湖、湖仓一体的分层差异,Iceberg/Delta 如何承载 ODS/DWD 层并统一批流?

A 数据湖天然提供 ACID 事务与强 schema,适合直接承载数仓
B Iceberg/Delta 通过元数据层实现 ACID、时间旅行与 schema 演进,可统一承载 ODS/DWD 并统一批流 ✓ 正确答案
C 湖仓一体只支持批处理,不支持实时流
D 数仓支持非结构化数据且扩展性优于数据湖
#

15. 数仓常见反模式,过度宽表、无粒度定义、快照表滥用、口径漂移的识别与治理?

A 过度宽表字段越多越好,便于一次查询
B 快照表可以无限增长,无需考虑存储成本
C 口径漂移是正常现象,无需版本管理
D 无粒度定义会导致口径不明确与重复计数,治理需在建模前声明粒度并写入元数据 ✓ 正确答案
#

16. 数仓建模工具与流程,维度建模规范如何落地为 DDL?DataWorks/数仓建模平台的核心能力?

A 建模规范只需人工口头约定,无需平台强制
B 建模平台通过可视化管理模型、自动生成 DDL、元数据与血缘管理,把规范落到代码与资产 ✓ 正确答案
C 平台生成的 DDL 无需任何校验,直接发布即可
D 血缘追踪与指标字典不属于建模平台能力
#

17. 指标一致性治理,OneData 方法论(主题域、数据域、指标域)与北极星指标体系的实践?

A OneData 只关注指标命名,不涉及数据域划分
B 北极星指标是底层原子指标,无需拆解
C OneData 通过数据域、主题域、指标域划分与统一指标字典,保证指标口径全局唯一 ✓ 正确答案
D 北极星指标体系与 OneData 相互矛盾,不能结合
#

18. 大促/活动场景的数仓性能设计,分区裁剪、分桶、物化视图与预聚合在 DWS/ADS 层的应用?

A 分区裁剪会强制扫描全表,无法减少数据量
B 物化视图与预聚合都会增加查询时的计算量,不利于大促
C 分桶按常用键使同桶数据同文件,可提升 Join 与聚合效率 ✓ 正确答案
D 大促场景无需分区,全表扫描即可保证性能