You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Databricks数据工程师助理模拟题31:为何选项C是Bronze到Silver跳步?

Databricks数据工程师助理模拟考试第31题解答

问题背景

用户疑问:为什么选项C是实现从Bronze表到Silver表的Structured Streaming查询?用户认为avgPrice = sales/units属于聚合操作,而聚合应该是Silver到Gold表的步骤,因此对C为正确答案存在疑问。

原题回顾

Question 31:以下哪个Structured Streaming查询实现了从Bronze表到Silver表的转换?

各选项代码

  • 选项A:
(spark.table("sales")
.groupBy("store")
.agg(sum("sales"))
.writeStream
.option("checkpointLocation", checkpointPath)
.outputMode("complete")
.table("aggregatedSales")
)
  • 选项B:
(spark.table("sales")
.agg(sum("sales"),
sum("units"))
.writeStream
.option("checkpointLocation", checkpointPath)
.outputMode("complete")
.table("aggregatedSales")
)
  • 选项C:
(spark.table("sales")
.withColumn("avgPrice", col("sales") / col("units"))
.writeStream
.option("checkpointLocation", checkpointPath)
.outputMode("append")
.table("cleanedSales")
)
  • 选项D:
(spark.readStream.load(rawSalesLocation)
.writeStream
.option("checkpointLocation", checkpointPath)
.outputMode("append")
.table("uncleanedSales")
)
  • 选项E:
(spark.read.load(rawSalesLocation)
.writeStream
.option("checkpointLocation", checkpointPath)
.outputMode("append")
.table("uncleanedSales")
)

核心概念澄清

先明确湖仓分层的核心定位:

  • Bronze层:存储原始、未处理(或极少量处理)的明细数据,仅做落地存储
  • Silver层:对Bronze层数据做清洗、行级转换、字段衍生等操作,保留明细粒度,数据质量更高
  • Gold层:基于Silver层做多记录聚合、分组汇总,生成面向分析的汇总数据

选项逐一分析

  • 选项A:按store分组对sales求和,属于分组聚合操作,生成的是汇总数据,对应Silver到Gold的转换,排除。
  • 选项B:全局对sales和units求和,同样是全局聚合,属于Gold层数据,排除。
  • 选项C:这里的avgPrice计算是单条记录内的字段运算——用当前记录的sales除以同一条记录的units,并非对多条记录做统计平均(那才是聚合)。这个操作是对Bronze表的行级衍生处理,保留了原始明细,符合Silver层的定位,是正确选项。
  • 选项D:直接读取原始数据写入表,无任何处理,属于原始数据到Bronze层的落地,排除。
  • 选项E:用批处理方式读取原始数据再以流写入,本质还是原始数据落地,属于Bronze层,排除。

对用户疑问的解答

你混淆了行级字段运算和聚合操作:

  • 聚合操作是针对多条记录的统计(比如avg()函数是对一组记录的字段求平均)
  • 选项C中的sales/units是单条记录内两个字段的计算,属于行级转换,不属于聚合,因此是Bronze到Silver的合理步骤。

内容的提问来源于stack exchange,提问作者Jerry Jose James

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 08:15:43