对从 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 数据块中获取正确的日期时间格式的主要内容,如果未能解决你的问题,请参考以下文章

如何对从 XML 解析的对象进行排序

在显示之前对从 StreamBuilder 获取的数据执行异步操作

对从异步函数返回的承诺感到非常困惑

对从多个 SQL 查询返回的 Ajax 数据执行某些操作

读取 .csv 文件时在 Python 中解析日期的最快方法是啥?

excel 当某单元格日期是当天日期时,自动隐藏前面的列?