min_by

Vrátí hodnotu z parametru col, který je přidružen k minimální hodnotě z parametru ord. Tato funkce se často používá k vyhledání hodnoty parametru sloupce odpovídající minimální ordované hodnotě parametru v rámci každé skupiny při použití s groupBy(). Funkce není deterministická, takže výstupní pořadí se může lišit pro ty, které jsou přidružené ke stejným hodnotám sloupce.

Syntaxe

from pyspark.sql import functions as sf

sf.min_by(col, ord)

Parametry

Parameter Typ Description
col pyspark.sql.Column nebo název sloupce Sloupec představující hodnoty, které budou vráceny. Může se jednat o instanci sloupce nebo název sloupce jako řetězec.
ord pyspark.sql.Column nebo název sloupce Sloupec, který je potřeba minimalizovat. Může se jednat o instanci sloupce nebo název sloupce jako řetězec.

Návraty

pyspark.sql.Column: Column objekt, který představuje hodnotu přidruženou col k minimální hodnotě z ord.

Examples

Příklad 1: Použití min_by se 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|
+------+----------------------+

Příklad 2: Použití min_by s různými datovými typy

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

Příklad 3: Použití min_by, kde nebod má více minimálních hodnot

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