Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Devuelve el valor del parámetro col asociado al valor máximo del parámetro ord. Esta función se usa a menudo para buscar el valor del parámetro col correspondiente al valor máximo del parámetro ord dentro de cada grupo cuando se usa con groupBy(). La función no es determinista, por lo que el orden de salida puede ser diferente para los asociados a los mismos valores de col.
Syntax
from pyspark.sql import functions as sf
sf.max_by(col, ord)
Parámetros
| Parámetro | Tipo | Description |
|---|---|---|
col |
pyspark.sql.Column o nombre de columna |
Columna que representa los valores que se van a devolver. Esto podría ser la instancia de columna o el nombre de columna como cadena. |
ord |
pyspark.sql.Column o nombre de columna |
Columna que debe maximizarse. Esto podría ser la instancia de columna o el nombre de columna como cadena. |
Devoluciones
pyspark.sql.Column: un objeto de columna que representa el valor de col asociado al valor máximo de ord.
Examples
Ejemplo 1: Uso de max_by con 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|
+------+----------------------+
Ejemplo 2: Uso de max_by con distintos tipos de datos
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|
+----------+---------------------------+
Ejemplo 3: Uso de max_by donde ord tiene varios valores máximos
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|
+----------+---------------------------+