gpt4 book ai didi

apache-spark - Pyspark - 如何拆分具有 Datetime 类型结构值的列?

转载 作者:可可西里 更新时间:2023-11-01 16:28:15 29 4
gpt4 key购买 nike

我有以下代码创建窗口并在窗口中聚合值。

df.groupBy(window("time", "30 minutes"))\
.agg(func.countDistinct("customer_numbers")

窗口列(包含时间段的列)现在是一个具有两个日期时间的结构。

[datetime1, datetime2]. 

我的数据框是这样的:

window                                       customer_numbers
[2018-02-04:10:00:00, 2018-02-04:10:30:00] 10
[2018-02-04:10:30:00, 2018-02-04:11:00:00] 15

我希望它看起来像这样

start                             End               customer_numbers
2018-02-04:10:00:00 2018-02-04:10:30:00 10
2018-02-04:10:30:00 2018-02-04:11:00:00 15

我想把它分成两列,去掉原来的窗口列,但我似乎找不到办法做到这一点。我尝试使用 UDF,但我认为在 scala 中你可以简单地做一些事情,比如获取第一个项目,我不知道如何在 pyspark 中执行此操作。我尝试添加一个 UDF,但它没有给我第一个值,而是给了我一个日历。

.withColumn("key", $"window"._1)

有谁知道我怎样才能做到这一点?

最佳答案

你可以简单地使用select函数作为

.select(func.col('window')[0].alias('start'), func.col('window')[1].alias('end'), func.col('customer_numbers')).drop('window')

关于apache-spark - Pyspark - 如何拆分具有 Datetime 类型结构值的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50733736/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com