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
from pyspark.sql import functions as sf
sf.min_by(col, ord)
parameter
parameter | Type | Description |
|---|---|---|
|
| 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. |
|
| 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
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()
+------+----------------------+
|course|min_by(year, earnings)|
+------+----------------------+
| Java| 2012|
|dotNET| 2012|
+------+----------------------+
Exemple 2 : Utilisation de min_by avec différents types de données
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()
+----------+---------------------------+
|department|min_by(name, years_in_dept)|
+----------+---------------------------+
| IT| Bob|
| Marketing| David|
+----------+---------------------------+
Exemple 3 : Utilisation de min_by lorsque ord a plusieurs valeurs minimales
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()
+----------+---------------------------+
|department|min_by(name, years_in_dept)|
+----------+---------------------------+
| Consult| Eva|
| Finance| Frank|
+----------+---------------------------+