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

Databricks中用Scala将最新年月加1并存为变量的实现方法

问题根因

你当前代码中直接将spark.sql()执行结果赋值给yearmonth,但该方法返回的是DataFrame对象,而非查询得到的年月字符串值,因此无法直接作为变量赋值给Spark配置。

修正后的完整代码

%scala
import java.time.YearMonth
import java.time.format.DateTimeFormatter

val sourceID = dbutils.widgets.get("sourceID")
val split_val = sourceID.split(",")
val sourceIDs = split_val(0)
val measure = split_val(1)

// 1. 查询最大月份并取出字符串值
val maxMonthStr = spark.sql(""" SELECT MAX(snapshot_month) as max_month FROM curated_ga.f_clm_segments_raw """)
  .first()
  .getString(0)

// 2. 定义年月格式,加1个月
val ymFormatter = DateTimeFormatter.ofPattern("yyyy-MM")
val maxMonth = YearMonth.parse(maxMonthStr, ymFormatter)
val nextMonth = maxMonth.plusMonths(1)
val yearmonth = nextMonth.format(ymFormatter)

// 3. 赋值给Spark配置
sql(s"set acquisition_channel = $acquisition_channel")
sql(s"set sourceIDs = $sourceIDs")
sql(s"set measure = $measure")
sql(s"set yearmonth = $yearmonth")

注意事项

  • 如果你的表可能为空,建议对first()的结果做非空判断,避免空指针异常
  • 此处用YearMonth类处理年月逻辑,天然支持跨年场景(比如2021-12加1个月会自动得到2022-01)

内容的提问来源于stack exchange,提问作者Roho

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 15:09:03