Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Vrátí hodnotu z parametru 'col', která odpovídá maximální hodnotě parametru 'ord'. Tato funkce se často používá k vyhledání hodnoty parametru sloupce odpovídající maximální hodnotě parametru ord 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.max_by(col, ord)
Parametry
| Parameter | Typ | Description |
|---|---|---|
col |
pyspark.sql.Column nebo název sloupce |
Sloupec představující hodnoty, které se mají vrátit. 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 maximalizovat. Může se jednat o instanci sloupce nebo název sloupce jako řetězec. |
Návraty
pyspark.sql.Column: Objekt sloupce představující hodnotu, col která je přidružena k maximální hodnotě z ord.
Examples
Příklad 1: Použití max_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.max_by("year", "earnings")).sort("course").show()
+------+----------------------+
|course|max_by(year, earnings)|
+------+----------------------+
| Java| 2013|
|dotNET| 2013|
+------+----------------------+
Příklad 2: Použití max_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.max_by("name", "years_in_dept")
).sort("department").show()
+----------+---------------------------+
|department|max_by(name, years_in_dept)|
+----------+---------------------------+
| IT| Charlie|
| Marketing| Anna|
+----------+---------------------------+
Příklad 3: Použití max_by, kde nebod má více maximá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.max_by("name", "years_in_dept")
).sort("department").show()
+----------+---------------------------+
|department|max_by(name, years_in_dept)|
+----------+---------------------------+
| Consult| Henry|
| Finance| George|
+----------+---------------------------+