首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Pyspark在从字符串转换为时间戳时处理多个日期时间格式

Pyspark在从字符串转换为时间戳时处理多个日期时间格式
EN

Stack Overflow用户
提问于 2021-07-08 22:40:16
回答 2查看 114关注 0票数 2

我有以下示例数据帧:

代码语言:javascript
复制
+------------------+-----------+
|order_completed_at|static_date|
+------------------+-----------+
|6/16/2021 21:29   |2021-10-10 |
|6/7/2021 9:29     |2021-10-10 |
|6/12/2021 15:35   |2021-10-10 |
|6/18/2021 22:25   |2021-10-10 |
|6/16/2021 5:25    |2021-10-10 |
+------------------+-----------+

其中两个字段都是字符串类型。我需要将这些转换为时间戳,我可以使用以下代码来实现:

代码语言:javascript
复制
from pyspark.sql import functions as sql_functions

order_dates = order_dates.withColumn("order_completed_at_test", sql_functions.when() sql_functions.unix_timestamp(
        sql_functions.col('order_completed_at'), "MM/dd/yyyy").cast("timestamp"))

order_dates = order_dates.withColumn("static_date_test", sql_functions.to_timestamp("static_date"))

但是,在order_completed_at列中,可以混合使用多种格式,例如可以是MM/dd/yyyyyyyy-MM-dd

是否有可能编写一个可以解释两种日期时间格式的表达式?

编辑:

我将结束这个问题,因为处理动态日期格式是一条非常困难的道路,正如两个答案所指出的那样。我将要求客户端对源数据进行更改

EN

回答 2

Stack Overflow用户

发布于 2021-07-09 02:35:58

如果您完全确定只有两种格式,那么您可以使用where otherwise

示例:

代码语言:javascript
复制
from pyspark.sql.functions import col
from pyspark.sql.functions import when

order_dates.withColumn("datetest", \
    when(col("order_completed_at").rlike("\d+/\d+/\d+"), #YOUR_TIMESTAMP_CAST_OP_FOR_MM/dd/yyyy )\
    .otherwise(#YOUR_TIMESTAMP_CAST_OP_FOR_yyyy-MM-dd))
票数 3
EN

Stack Overflow用户

发布于 2021-07-08 23:02:45

这看起来像是python dateparser模块周围的udf (例如https://spark.apache.org/docs/2.4.6/api/python/_modules/pyspark/sql/udf.html)函数包装器的候选者。

从本质上讲,您希望能够按照以下方式应用函数调用:

代码语言:javascript
复制
dateparser.parse("order_completed_at")

作为sql的一部分:

然而-虽然这将吸引你所有的日期,但不能保证d/m/y日期不会被误解为m/d/y日期,反之亦然。混合日期格式是有问题的,因为它们本质上是不明确的。理想情况下,如果只有一种解释,您应该进行解析,但将任何可以用多种方式解释的有问题的解释标记为有问题。

然而,所呈现的问题( y-m-d和m/d/y日期的混合)在这方面可能是可以的。一如既往,最好是谨慎行事。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68303786

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档