【发布时间】:2020-04-28 11:45:38
【问题描述】:
【问题讨论】:
-
您可以使用 spark 窗口函数来实现相同的功能,如果您尝试过共享,那将是很好的开始。
-
我试过但没有找到任何解决方案。如果您在窗口功能中分享示例将非常有帮助
【问题讨论】:
我的错,我认为您的数据框中已经存在一个季度列,但您似乎需要一个看起来像季度的列。我认为这不可能通过 Window 函数实现,但这是实现此目的的一种方法:
假设您当前的数据在 df 中。
from pyspark.sql.functions import split
split_col = split(df["week"],'month')
df = df.withColumn("quaterly", (split_col.getItem(1).cast("integer")/(df["sequence_change"] + lit(1))).cast("integer") + lit(1)).orderBy("l_id","week")
逻辑解释:
我们将从week 列值中获取月份编号,将其转换为字符串中的整数,然后将其除以sequence_change value + 1 并将最终值转换为整数,这样您就可以得到一个不带小数的整数值.最后在其中添加 1,使quaterly 列以 1 而不是 0 开头。
【讨论】: