SQL面试题更新 2026-08-03

在 Spark SQL 中,如何借助内置函数来实现复杂的 SQL 查询?请具体说明常用内置函数类别及使用要点。

考察说明

考查对 Spark SQL 内置函数的掌握程度及在复杂查询中的实际运用能力。

回答思路

  1. 【回答框架 1】Spark SQL 内置函数覆盖数学、字符串、日期时间、聚合、窗口、集合、条件与 JSON 等类别,可直接在 SQL 语句中调用,无需自定义 UDF。
  2. 【回答框架 2】字符串函数如 concat、substring、split、regexp_replace 等用于文本清洗与字段拆分;日期函数如 current_date、date_add、datediff、date_format 等用于时间维度计算。
  3. 【回答框架 3】聚合函数如 sum、avg、count、collect_list、collect_set 等配合 group by 完成汇总;窗口函数 row_number、rank、dense_rank、lag、lead 用于分组 TopN、同比环比与累计计算。
  4. 【回答框架 4】条件函数 if、case when、coalesce、nullif 实现逻辑分支与空值处理;集合函数 array_contains、array_distinct、explode、posexplode 用于数组与 Map 的解析和展开。
  5. 【回答框架 5】针对复杂查询,可组合上述函数编写子查询或 CTE,配合适当的分区与谓词下推优化性能;对于频繁使用的逻辑,可封装为临时视图或注册自定义函数以提升复用性。
  6. 【关键点 1】内置函数类别包括字符串、数学、日期、聚合、窗口、集合、条件与 JSON 函数。
  7. 【关键点 2】窗口函数适用于分组排序、TopN 与移动计算。
  8. 【关键点 3】explode 可将复杂结构展开为多行以便关联分析。
  9. 【关键点 4】使用 explain 查看执行计划,注意谓词下推与裁剪。
  10. 【关键点 5】复杂逻辑可拆分为多个 CTE 或临时视图,提高可读性与维护性。
  11. 【易错点 1】滥用 explode 可能造成数据膨胀,需预估结果集大小。
  12. 【易错点 2】窗口函数使用不当可能引发内存溢出,宜合理设置分区与并行度。
  13. 【易错点 3】日期与字符串格式不匹配常导致转换错误,应使用明确的格式字符串。