Aller au contenu principal

min_by

Renvoie la valeur du parameter col associée à la valeur minimale du parameter ord. Cette fonction est souvent utilisée pour trouver la valeur du paramètre col correspondant à la valeur minimale 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.min_by(col, ord)

parameter

parameter

Type

Description

col

pyspark.sql.Column ou nom de colonne

La colonne représentant les valeurs qui seront renvoyées. 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 minimisé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 qui seront renvoyées. 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 minimisée. Il peut s'agir de l'instance de colonne ou du nom de colonne sous forme de chaîne.

Renvoie

pyspark.sql.Column: Objet colonne qui représente la valeur de col associée à la valeur minimale de ord.

Exemples

**Exemple 1** : utilisation de min_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.min_by("year", "earnings")).sort("course").show()
Output
+------+----------------------+
|course|min_by(year, earnings)|
+------+----------------------+
| Java| 2012|
|dotNET| 2012|
+------+----------------------+

Exemple 2 : Utilisation de min_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.min_by("name", "years_in_dept")
).sort("department").show()
Output
+----------+---------------------------+
|department|min_by(name, years_in_dept)|
+----------+---------------------------+
| IT| Bob|
| Marketing| David|
+----------+---------------------------+

Exemple 3 : Utilisation de min_by lorsque ord a plusieurs valeurs minimales

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.min_by("name", "years_in_dept")
).sort("department").show()
Output
+----------+---------------------------+
|department|min_by(name, years_in_dept)|
+----------+---------------------------+
| Consult| Eva|
| Finance| Frank|
+----------+---------------------------+