pyspark-如何拆分结构值为datetime类型的列?

fhity93d  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(331)

我有下面的代码来创建窗口和聚集窗口中的值。

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

窗口列(保存时间段的列)现在是一个具有两个datetimes的结构。

[datetime1, datetime2].

我的Dataframe如下所示:

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

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

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

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

bqujaahr

bqujaahr1#

你可以简单地使用 select 作为

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

相关问题