max_by

Ord parametresindeki en büyük değerle ilişkili olan sütun (col) parametresinden değeri döndürür. Bu işlev genellikle groupBy() ile kullanıldığında her gruptaki en büyük ord parametre değerine karşılık gelen sütun parametre değerini bulmak için kullanılır. İşlev belirleyici değildir, bu nedenle çıkış sırası aynı sütun değerleriyle ilişkili olanlar için farklı olabilir.

Sözdizimi

from pyspark.sql import functions as sf

sf.max_by(col, ord)

Parametreler

Parametre Türü Description
col pyspark.sql.Column veya sütun adı Döndürülecek değerleri temsil eden sütun. Bu, sütun örneği veya dize olarak sütun adı olabilir.
ord pyspark.sql.Column veya sütun adı En üst düzeye çıkarılması gereken sütun. Bu, sütun örneği veya dize olarak sütun adı olabilir.

İade

pyspark.sql.Column: öğesinden gelen col en büyük değerle ilişkili olan değerini ordtemsil eden bir sütun nesnesi.

Örnekler

Örnek 1: groupBy ile max_by kullanma

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

Örnek 2: Farklı veri türleriyle max_by kullanma

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

Örnek 3: Ord'un birden çok maksimum değeri olduğu max_by kullanma

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