メインコンテンツまでスキップ

最後

グループ内の最後の値を返します。デフォルトでは、この関数は最後に確認した値を返します。ignoreNulls が true に設定されている場合、最後に検出された null 以外の値を返します。すべての値が null の場合、null が返されます。この関数は非決定的です。その結果は行の順序に依存し、シャッフル後は行の順序が非決定的になる可能性があるからです。

構文

Python
from pyspark.sql import functions as sf

sf.last(col, ignorenulls=False)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または列名

最後の値を取得する列。

ignorenulls

bool

最後の値が null の場合、null 以外の値を探します。デフォルトでは False です。

戻り値

pyspark.sql.Column: グループの最後の値。

Python
from pyspark.sql import functions as sf
df = spark.createDataFrame([("Alice", 2), ("Bob", 5), ("Alice", None)], ("name", "age"))
df = df.orderBy(df.age.desc())
df.groupby("name").agg(sf.last("age")).orderBy("name").show()
Output
+-----+---------+
| name|last(age)|
+-----+---------+
|Alice| NULL|
| Bob| 5|
+-----+---------+

null 値を無視するには、 ignorenulls Trueに設定します。

Python
df.groupby("name").agg(sf.last("age", ignorenulls=True)).orderBy("name").show()
Output
+-----+---------+
| name|last(age)|
+-----+---------+
|Alice| 2|
| Bob| 5|
+-----+---------+