首页 > 解决方案 > 传递列以转换为时区值

问题描述

to_utc_timestamp用来将时间戳转换为 UTC 时间。当我通过时区时,我在一列中有日期时间,在另一列中有时区,它说列不可调用:

data_frame.withColumn(‘target_date’, to_utc_timestamp(data_frame.doj_date, data_frame.doj_tz))

data_frame.doj_tz - 列对象不可调用

如何解决?

标签: apache-sparkpyspark

解决方案


pyspark如果函数不期望列对象作为参数,则不能将列对象传递给函数。在这种情况下,to_utc_timestamp需要一个表示时区的字符串,并且您正在提供一个列对象,这就是您收到此错误的原因。

解决方法是改为expr使用withColumn

import pyspark.sql.functions as func

data_frame.withColumn('target_date', func.expr("to_utc_timestamp(doj_date, doj_tz)"))

推荐阅读