Aller au contenu principal

max_by

Renvoie la valeur du paramètre col associée à la valeur maximale du paramètre ord. Cette fonction est souvent utilisée pour trouver la valeur du paramètre col correspondant à la valeur maximale du paramètre ord au sein de chaque groupe lorsqu'elle est utilisée avec groupBy(). La fonction est non déterministe, de sorte que l'ordre de sortie peut être différent pour ceux associés aux mêmes valeurs de col.

Syntaxe

Python
from pyspark.sql import functions as sf

sf.max_by(col, ord)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

La colonne représentant les valeurs à retourner. Il peut s'agir de l'instance de colonne ou du nom de colonne sous forme de chaîne.

ord

pyspark.sql.Column ou nom de colonne

La colonne qui doit être maximisée. Il peut s'agir de l'instance de colonne ou du nom de colonne sous forme de chaîne.

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

La colonne représentant les valeurs à retourner. Il peut s'agir de l'instance de colonne ou du nom de colonne sous forme de chaîne.

ord

pyspark.sql.Column ou nom de colonne

La colonne qui doit être maximisée. Il peut s'agir de l'instance de colonne ou du nom de colonne sous forme de chaîne.

Renvoie

pyspark.sql.Column: Un objet colonne représentant la valeur de col qui est associée à la valeur maximale de ord.

Exemples

Exemple 1 : utilisation de max_by avec 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|
+------+----------------------+

Exemple 2 : Utilisation de max_by avec différents types de données

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|
+----------+---------------------------+

Exemple 3 : Utilisation de max_by là où ord a plusieurs valeurs maximales

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|
+----------+---------------------------+