val result = df
.groupBy("col1")
.agg(min('minTimestamp) as "StartDateUTC",
max('maxTimestamp) as "EndDateUTC")
それぞれについてcol1
、最小タイムスタンプと最大タイムスタンプを見つける必要があります。問題は、場合によってStartDateUTC
はより大きいことですEndDateUTC
(のケースA
を参照df
)。そのような場合にこれらの値を交換する効率的な方法はありますか?
df =
col1 minTimestamp maxTimestamp
A 1483264800 1483164800
A 1483200000 1483064800
B 1483300000 1483564800
least
/ greatest
import org.apache.spark.sql.functions._
df.select(
$"col1",
least($"minTimestamp", $"maxTimestamp").alias("minTimestamp"),
greatest($"minTimestamp", $"maxTimestamp").alias("maxTimestamp")
)
または集約にプッシュ
.agg(
min(least($"minTimestamp", $"maxTimestamp")) as "StartDateUTC",
max(greatest($"minTimestamp", $"maxTimestamp")) as "EndDateUTC"
)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加