Loading......

文章背景图

🎯 数仓开发流程场景题

2025-12-08
8
-
- 分钟

数仓面试中,场景题是区分 “背流程” 和 “真干活” 的核心,重点考察优先级判断、业务落地、资源协调能力。本文整理 4 道高频场景题,拆解 “问题矛盾→核心思路→分步方案→面试金句”,附跨行业融入、0 到 1 搭建等实战技巧。

📝 场景题 1:紧急报表开发 ——2 天完成 5 天工作量(无数据基础)

问题描述

业务要求2 天内交付 ADS 层报表(含数据验证),但当前状态:ODS 层未接入数据、无任何基础模型,正常开发需 5 天。如何在保证数仓分层的前提下完成交付?

核心矛盾

“紧急需求” 与 “数据基础缺失” 的冲突 → 核心思路:优先级前置,先保交付再补规范

分步解决方案(总耗时 2 天)

1. 0.5 天:极速吃透核心业务(不可省略)

业务是开发的根基,跳过会导致指标口径错误,反而返工。

  • 🔍 核心动作:

    ① 直接对接后端,拉取业务库表结构,用show create table看字段含义,重点标红关联键(如user_id)和枚举值(如order_status=1代表待支付);

    ② 找数分要 “报表指标清单”,圈出核心指标(如销售额、支付人数),暂时忽略次要维度(如用户画像标签);

    ③ 用 10 分钟跟业务方确认 “核心业务流程”(如 “下单→支付→发货”),避免理解偏差。

2. 1 天:跨层开发 + 并行协作(关键提速点)

打破 “ODS→DWD→DWS→ADS” 的常规顺序,优先满足报表需求,后续补全分层。

  • 🚀 具体步骤:

    ① 模型设计(0.2 天):拉 leader 快速评审,确定极简模型(仅含核心字段),生成空表结构(如ads_sales_report);

    ② 并行协作:把空表结构同步给 BI,让其提前搭建看板布局(折线图 / 柱状图),数据后续填充,节省等待时间;

    ③ 跨层开发(0.6 天):从 ODS 直接同步核心业务表(如订单表、支付表),跳过中间层,在 ADS 层写 SQL 完成关联、转换、指标计算(如sum(pay_amount));

    ④ 顺手配置基础 DQC(0.2 天):针对 ADS 表配置 “主键非空”“数据量波动 ±50% 告警”,避免数据异常。

3. 0.5 天:联调验证 + 交付

  • ✅ 核心动作:

    ① 把计算好的 ADS 数据同步给 BI,共同校验 “指标数值是否符合业务常识”(如 “双 11 销售额远高于日常”);

    ② 对数分提出的 “指标口径疑问”(如 “是否包含退款”),现场联动后端确认,快速修正;

    ③ 交付报表后,同步告知业务方:“当前为应急方案,3 天后会补全 DWD/DWS 层,后续迭代更灵活”。

4. 后续优化(第 3 天起)

基于已验证的 ADS 指标,反向推导 DWS(汇总层,如 “日维度销售额”)和 DWD(明细层,如 “订单明细”),确保分层规范。用 ADS 指标与 DWS 结果比对,保证数据一致性。

面试金句

“我会先抓核心矛盾 —— 业务要的是能用的报表,不是完美的分层。所以先通过跨层开发保交付,同时用空表并行支撑 BI 工作,后续基于验证过的指标反向补全规范,既满足紧急需求,又不埋技术债。”

⚖️ 场景题 2:多需求冲突 —— 风控 & BI 同时要紧急支持

问题描述

周三接到两个紧急需求:风控要加字段(2 天内),BI 要做新数据模型(2 天内),均声明 “核心紧急”,如何处理?

核心矛盾

“资源有限” 与 “多方紧急需求” 的冲突 → 核心思路:不独自决策,向上同步 + 拉齐共识

分步解决方案

1. 第一步:1 小时内完成需求拆解(明确工作量)

  • 📊 快速评估:

    ① 风控需求:加 1 个字段(risk_level),需从 DWD 层修改,关联 1 张风控表,工作量 0.5 天;

    ② BI 需求:新模型(用户消费偏好),需接入 3 张表,设计 DWS 层汇总,工作量 1.5 天。

    (核心:用数据说明 “无法同时完成”,而非主观判断)

2. 第二步:立即拉会(关键动作)

  • 📞 参与人:你 + 风控 leader+BI leader + 你的 leader;

  • 核心话术:

    “两位的需求都很紧急,我拆解后发现:风控加字段需 0.5 天,BI 模型需 1.5 天。如果硬做,要么牺牲质量,要么某一方延期。想跟您二位确认:是否可以先做‘核心部分’?比如风控字段先上线,BI 模型先出基础版本,后续补全细节。”

3. 第三步:按共识执行(两种常见结果)

  • 结果 1:某一方让步(如 BI 同意延期 1 天)→ 优先完成风控,再全力做 BI,同步写好 “需求优先级确认邮件” 留痕;

  • 结果 2:均不让步 → 申请临时支持(如借调同组同学做风控字段开发),你专注 BI 模型,你的 leader 协调资源。

避坑点

❌ 不要自己加班硬扛:可能导致两个需求都出问题,反而暴露 “优先级判断能力不足”;

✅ 核心是 “把决策交给 leader”:体现你懂协作、有风险意识,而非独自承担。

面试金句

“面对多紧急需求,我不会自己拍板,而是先量化工作量,然后拉双方 leader 对齐优先级 —— 因为他们更清楚需求对业务的影响权重,我的角色是提供专业评估和执行方案,确保资源用在最核心的地方。”

🔄 场景题 3:跨行业融入 —— 从金融数仓转打车数仓,如何快速上手?

问题描述

你之前做金融数仓,新入职做打车业务,无相关经验,如何快速融入并承担开发任务?

核心矛盾

“业务知识空白” 与 “工作交付压力” 的冲突 → 核心思路:从 “数据” 和 “核心表” 切入,而非纯听业务

分步解决方案(1 个月内落地)

1. 第一周:打基础(文档 + 核心表)

  • 📚 核心动作:

    ① 先看内部文档:重点看《数仓开发规范》《打车业务核心流程》《数据源说明》,掌握 “订单状态流转”(如 “发单→接单→行程中→结束”);

    ② 啃核心数据表:找到 DWD 层核心表(如dwd_trip_order_detail,打车订单明细),看表结构(字段含义、关联键)、读 SQL 代码(字段转换逻辑,如trip_distance计算方式);

    ③ 工具辅助:用数据探查工具看表中 “真实数据”(如 “早高峰订单集中在 7-9 点”),比纯听业务更直观。

2. 第二周:找抓手(跟需求 + 问上下游)

  • 🤝 核心动作:

    ① 跟 1 个简单需求:比如 “新增‘司机接单时长’指标”,主动对接数分和后端,在需求调研中问清 “接单时长 = 接单时间 - 发单时间” 的口径;

    ② 找上游后端:问清 “订单表与司机表的关联逻辑”“driver_status枚举值含义”,记录成自己的 “业务笔记”;

    ③ 亲身体验:用公司打车 APP 发单、接单(测试账号),感受完整流程,对应到数据中的 “状态变化”。

3. 第三周:练实战(做模型 + 提疑问)

  • ✍️ 核心动作:

    ① 模仿开发:参考同业务线老员工的模型设计(如dws_driver_daily,司机日汇总表),尝试开发类似的简单模型;

    ② 主动晒成果:把自己设计的模型和 SQL 发给 leader,标注 “不确定的点”(如 “是否包含预约单”),请其指导;

    ③ 参加业务会:哪怕不发言,听 “运营同学讨论的核心问题”(如 “司机空驶率过高”),对应到数据指标。

4. 第四周:独立交付(小需求验证)

  • 🎯 目标:独立完成 1 个完整需求(如 “开发司机周收入报表”),从需求调研到上线全流程跟进,验证学习成果。

避坑点

❌ 不要只听 leader 讲:纯口头讲解容易记混,必须结合 “数据 + 代码”;

✅ 核心是 “用数据反推业务”:数仓工程师的优势是通过数据理解业务,而非死记硬背。

面试金句

“我会用‘数据驱动’的方式融入新业务:先通过核心 DWD 表和 SQL 代码建立初步认知,再跟着小需求深入细节,最后用亲身体验和上下游沟通补全盲区 —— 这样比纯听业务讲解更高效,也能快速落地工作。”

🏗️ 场景题 4:0 到 1 搭建离线数仓(从 Leader 视角)

问题描述

你作为数据 Leader,新入职一家公司,需从 0 到 1 搭建支撑核心业务的离线数仓,如何规划并落地?

核心矛盾

“无基础、无规范” 与 “支撑业务” 的冲突 → 核心思路:先搭骨架(架构 + 规范),再填血肉(核心数据 + 模型)

分步解决方案(初始期:1-2 个月)

1. 第 1-2 周:梳理业务与评估资源(定方向)

  • 🔍 核心动作:

    ① 业务梳理:与产品、运营对齐 “核心业务模块”(如打车业务的 “发单→接单→支付→评价”),划分主题域(如 “用户域、订单域、司机域”);

    ② 数据评估:统计数据源类型(MySQL/ Kafka/ API)、数据量(日增量 100 万条还是 1 亿条)、实时 / 离线需求占比(决定技术栈);

    ③ 资源确认:确认部门经费(买云平台还是自建 Hadoop)、团队配置(开发 / 运维人数),避免 “画饼不落地”。

2. 第 3-4 周:定架构与画版图(统一认知)

  • 📐 核心输出:

    ① 技术栈架构:离线用 “Hadoop+Spark+Hive”,数据同步用 “Sqoop/ DataX”,调度用 “Azkaban”,明确各组件职责;

    ② 数仓版图:画一张 “数据流转图”,标注:

    • 数据源(MySQL 订单库、Kafka 日志)→

    • 数仓分层(ODS→DWD→DWS→ADS)→

    • 下游服务(BI 报表、风控系统);

      ③ 向上汇报:用版图向 CTO / 业务 leader “画饼”,说明 “3 个月内支撑核心看板,6 个月覆盖全业务”,争取资源支持。

3. 第 5-6 周:定规范与搭环境(立规矩)

  • 📏 核心规范:

    ① 命名规范:表名ods_trip_order_2025、字段名order_id(小写 + 下划线)、分区字段dt

    ② 开发规范:SQL 必须加注释、DQC 必配 “主键非空 + 数据量波动”、代码提交需 leader 审核;

    ③ 环境搭建:搭建开发 / 测试 / 生产环境,配置数据同步通道(如 Sqoop 同步 MySQL 数据到 ODS)。

4. 第 7-8 周:同步核心数据 + 建模型(出成果)

  • 🚀 核心动作:

    ① 同步核心数据:只同步 “支撑核心指标” 的数据(如订单表、支付表),非核心数据(如用户日志)暂不接入;

    ② 建核心模型:

    • DWD 层:整合订单 + 支付数据,做清洗(去重、补空值)、维度退化(如把driver_name从司机表退化到订单表);

    • DWS 层:按 “日 + 司机” 颗粒度汇总(如dws_driver_daily,含日接单量、日收入);

    • ADS 层:开发核心报表(如 “司机收入看板”“订单量趋势表”),交付 BI 使用;

      ③ 基础保障:给核心表配置 DQC 监控,写《数据字典》(指标口径、表结构说明),方便下游使用。

5. 后续阶段(扩张期 + 治理期)

  • 扩张期(3-6 个月):接入非核心数据,完善维度表(如地区表、时间维表),建设指标中心;

  • 治理期(6 个月后):治理 “烟囱模型”(合并重复表)、优化计算资源(减少数据倾斜)、做数据安全管控。

面试金句

“0 到 1 搭建数仓,我不会一上来就建全量模型,而是先抓‘核心业务 + 核心数据’:用 2 个月支撑起核心看板,让业务看到价值;同时把架构和规范立好,为后续扩张打基础 —— 毕竟数仓是‘支撑业务的工具’,不是‘炫技的产物’。”

📌 面试补充技巧

1. 项目介绍用 STAR 法则(避免逻辑混乱)

  • S(背景):“我负责打车数仓的订单域,当时业务缺司机收入分析数据,导致运营无法制定激励政策”;

  • T(目标):“2 周内开发司机日收入报表,支撑运营激励方案落地”;

  • A(行动):“我先同步 ODS 订单数据,设计 DWS 汇总层,跨层开发 ADS 报表,并行支撑 BI 搭看板”;

  • R(结果):“报表按时交付,运营基于数据制定激励政策,司机日接单量提升 15%”。

2. 代码上线前的 “自查三部曲”(体现责任心)

① 跑通代码:检查是否有语法错误、数据倾斜(如join条件是否合理);

② 数据校验:用count(distinct)查主键唯一性,用min/max查字段合理性(如 “收入不能为负”);

③ 依赖检查:确认上游表的调度依赖已配置,避免次日表空。

→ 自查完再提工单给 leader 审核,附 “校验截图”,体现专业度。

✨ 总结

数仓场景题的核心不是 “背标准答案”,而是体现 “解决问题的思维”:

  1. 紧急需求:先保核心交付,再补规范

  2. 多需求冲突:不独自决策,拉齐共识

  3. 跨行业融入:从数据切入,结合实战

  4. 0 到 1 搭建:先出成果,再扩边界

记住:面试官要的不是 “完美的方案”,而是 “符合实际、有落地能力” 的思考 —— 用 “量化工作量 + 具体动作 + 业务价值” 的逻辑表达,就能脱颖而出。

评论交流