如何在PySpark中访问行内的interval day to second类型对象
在PySpark中直接提取interval day to second类型的值
针对你的需求,这里提供几种直接操作interval day to second类型列TimeSinceLastCleaningObj的方法:
1. 转换为字符串直观查看
将interval类型直接转为字符串,就能看到类似X days HH:mm:ss的可读格式:
from pyspark.sql.functions import col df.select( "TimeSinceLastCleaningObj", col("TimeSinceLastCleaningObj").cast("string").alias("readable_interval") ).show(truncate=False)
2. 提取天、时、分、秒分量
使用extract或date_part函数拆分interval的各个时间分量,方便单独使用:
from pyspark.sql.functions import col, extract df.select( "TimeSinceLastCleaningObj", extract("day", "TimeSinceLastCleaningObj").alias("days"), extract("hour", "TimeSinceLastCleaningObj").alias("hours"), extract("minute", "TimeSinceLastCleaningObj").alias("minutes"), extract("second", "TimeSinceLastCleaningObj").alias("seconds") ).show()
注:部分Spark版本也可使用date_part替代extract,用法一致,如date_part('day', col("TimeSinceLastCleaningObj"))
3. 转换为总秒数(与TimeSinceLastCleaning列对齐)
将interval类型转为long类型,直接得到时间差的总秒数,和你已有的TimeSinceLastCleaning列结果一致:
from pyspark.sql.functions import col df.select( "TimeSinceLastCleaningObj", col("TimeSinceLastCleaningObj").cast("long").alias("total_seconds") ).show()
内容的提问来源于stack exchange,提问作者simons____
相关产品推荐
相关产品推荐

