【发布时间】:2021-05-04 16:55:13
【问题描述】:
我正在为 Spark DF 编写一个函数,该函数对列执行操作并给它们一个后缀,这样我就可以在两个不同的后缀上运行该函数两次,然后再加入它们。
我正在时间找出在这段特定的代码中引用它们的最佳方式,并且想知道我错过了什么?
def calc_date(sdf, suffix):
final_sdf = (
sdf.withColumn(
f"lowest_days{suffix}",
f"sdf.list_of_days_{suffix}"[0],
)
.withColumn(
f"earliest_date_{suffix}",
f"sdf.list_of_dates_{suffix}"[0],
)
.withColumn(
f"actual_date_{suffix}",
spark_fns.expr(
f"date_sub(earliest_date_{suffix}, lowest_days{suffix})"
),
)
)
这里我试图从两个列表(list_of_days 和 list_of_dates)中提取第一个值并执行日期计算以创建一个新变量(actual_date)。
我想在一个函数中执行此操作,这样我就不必根据我拥有的后缀数量执行两次(或更多)相同的一组操作?
但是 f 字符串给出了错误col should be Column。
对此的任何帮助将不胜感激!
【问题讨论】:
标签: pyspark apache-spark-sql f-string