lv_seconds_back = mv_time_horizon.select(col("max(time_horizon)") * 60).show()
mv_now =spark.sql("select from_unixtime(unix_timestamp()) as mv_now")
local_date_time =mv_now.select(date_format('mv_now', 'HH:mm:ss').alias("local_date_time"))
lv_start =local_date_time.select(col("local_date_time") - expr("INTERVAL $lv_seconds_back seconds"))
如何减去lv start
变量中的秒数
我尝试使用expr(interval seconds)
,但它不接受变量,而是接受数字。
另外,如果我需要在查询中添加lv_start
,该如何操作
mt_cache_fauf_r_2= spark.sql("select mt_cache_fauf_r_temp from mt_cache_fauf_r_temp where RM_ZEITPUNKT>= ${lv_start} & RM_ZEITPUNKT <= ${lv_end}")
这个不行
2条答案
按热度按时间w7t8yxp51#
也许您应该删除
.show()
,以便在lv_seconds_back
变量中捕获列。7cwmlq892#
你的第一句话有两个问题。第一个:
col("max(time_horizon)")
无法工作,因为col
函数需要列名。请执行expr("max(time_horizon)")
或max(col("time_horizon"))
。然后,show
函数将显示部分 Dataframe ,但不返回任何内容。因此,将show
的结果赋给变量没有意义。如果删除
show
并使用col
调用,则结果是一个 Dataframe ,其中一行包含一个元素。first
函数可以获取Row
对象,从该对象中可以访问其唯一元素,如下所示:然后,如果要从时间戳中减去该值,请在将其转换为字符串之前执行此操作: