GroupByの後のmax( 'diff')列にエイリアス名 "maxDiff"を持たせるために、下の行に結果のデータフレームが必要です。ただし、次の行は変更を加えず、エラーもスローしません。
grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
これは、DataFrame
ではなく、Column
オブジェクト全体をエイリアスしているためです。 Column
のみをエイリアスする方法の例を次に示します。
import pyspark.sql.functions as func
grpdf = joined_df \
.groupBy(temp1.datestamp) \
.max('diff') \
.select(func.col("max(diff)").alias("maxDiff"))
agg
メソッドを呼び出す代わりにmax
を使用できます。
from pyspark.sql.functions import max
joined_df.groupBy(temp1.datestamp).agg(max("diff").alias("maxDiff"))
同様にScalaでも
import org.Apache.spark.sql.functions.max
joined_df.groupBy($"datestamp").agg(max("diff").alias("maxDiff"))
または
joined_df.groupBy($"datestamp").agg(max("diff").as("maxDiff"))
ここで既に答えていることに加えて、_pyspark.sql.functions
_からインポートする必要のない集約列の名前がわかっている場合、次の方法も便利です。
1
_grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.selectExpr('max(diff) AS maxDiff')
_
.selectExpr()
の詳細については、 docs を参照してください
2
_grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.withColumnRenamed('max(diff)', 'maxDiff')
_
.withColumnRenamed()
の詳細については、 docs を参照してください
ここでのこの答えはより詳細になります: https://stackoverflow.com/a/34077809