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

最大

ord の最大値に関連付けられている Col の値を返します。 この関数は、groupBy() と一緒に使用した場合に、各グループ内の最大 ord 保留値に対応するcol 問題値を見つけるためによく使用されます。 この関数は非決定論的であるため、col の同じ値に関連付けられている出力順序が異なる場合があります。

構文

Python
from pyspark.sql import functions as sf

sf.max_by(col, ord)

パラメーター

パラメーター

Type

説明

col

pyspark.sql.Column または列名

返される値を表す列。これは列インスタンスまたは文字列としての列名になります。

ord

pyspark.sql.Column または列名

最大化する必要のある列。これは列インスタンスまたは文字列としての列名になります。

戻り値

pyspark.sql.Column: ordの最大値に関連付けられたcolの値を表す列オブジェクト。

例1 : max_byをgroupByと共に使用する

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([
("Java", 2012, 20000), ("dotNET", 2012, 5000),
("dotNET", 2013, 48000), ("Java", 2013, 30000)],
schema=("course", "year", "earnings"))
df.groupby("course").agg(sf.max_by("year", "earnings")).sort("course").show()
Output
+------+----------------------+
|course|max_by(year, earnings)|
+------+----------------------+
| Java| 2013|
|dotNET| 2013|
+------+----------------------+

例2 : 異なるデータ型でmax_byを使用する

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([
("Marketing", "Anna", 4), ("IT", "Bob", 2),
("IT", "Charlie", 3), ("Marketing", "David", 1)],
schema=("department", "name", "years_in_dept"))
df.groupby("department").agg(
sf.max_by("name", "years_in_dept")
).sort("department").show()
Output
+----------+---------------------------+
|department|max_by(name, years_in_dept)|
+----------+---------------------------+
| IT| Charlie|
| Marketing| Anna|
+----------+---------------------------+

例3 : ordに複数の最大値がある場合にmax_byを使用する

Python
import pyspark.sql.functions as sf
df = spark.createDataFrame([
("Consult", "Eva", 6), ("Finance", "Frank", 5),
("Finance", "George", 9), ("Consult", "Henry", 7)],
schema=("department", "name", "years_in_dept"))
df.groupby("department").agg(
sf.max_by("name", "years_in_dept")
).sort("department").show()
Output
+----------+---------------------------+
|department|max_by(name, years_in_dept)|
+----------+---------------------------+
| Consult| Henry|
| Finance| George|
+----------+---------------------------+