对从 Quickbase 解析的列应用日期时间操作,以在 pyspark 数据块中获取正确的日期时间格式
Posted
技术标签:
【中文标题】对从 Quickbase 解析的列应用日期时间操作,以在 pyspark 数据块中获取正确的日期时间格式【英文标题】:Applying datetime manupulations on columns parsed from Quickbase to get correct datetime format in pyspark databricks 【发布时间】:2021-04-02 11:27:13 【问题描述】:我从 Quickbase 获取格式为“1609372800000”的日期。现在我知道如何将其转换为正确的日期格式的代码。 代码是
import datetime
date = datetime.datetime.fromtimestamp(1609372800000/1000.0)
date = date.strftime('%Y-%m-%d')
现在我想将此计算应用于 pyspark 数据框列。 我尝试使用此代码,但给我的错误是
期望整数,但收到 col 类型
df.withColumn("product_availability_due_date",col("product_availability_due_date").cast('int'))
df.withColumn('product_availability_due_date_1',datetime.datetime.fromtimestamp(col('product_availability_due_date')/1000.0).strftime('%Y-%m-%d'))
product_availability_due_date- 此列数据类型为字符串。
【问题讨论】:
【参考方案1】:您可以使用from_unixtime
进行转换:
import pyspark.sql.functions as F
df2 = df.withColumn(
'product_availability_due_date_1',
F.from_unixtime((F.col('product_availability_due_date').cast('long') / 1000))
)
df2.show()
+-----------------------------+-------------------------------+
|product_availability_due_date|product_availability_due_date_1|
+-----------------------------+-------------------------------+
| 1609372800000| 2020-12-31 00:00:00|
+-----------------------------+-------------------------------+
【讨论】:
以上是关于对从 Quickbase 解析的列应用日期时间操作,以在 pyspark 数据块中获取正确的日期时间格式的主要内容,如果未能解决你的问题,请参考以下文章
在显示之前对从 StreamBuilder 获取的数据执行异步操作