Bagikan melalui


max_by

Mengembalikan nilai dari parameter col yang terkait dengan nilai maksimum dari parameter ord. Fungsi ini sering digunakan untuk menemukan nilai parameter col yang sesuai dengan nilai parameter ord maksimum dalam setiap grup saat digunakan dengan groupBy(). Fungsi ini tidak deterministik sehingga urutan output dapat berbeda untuk mereka yang terkait dengan nilai col yang sama.

Syntax

from pyspark.sql import functions as sf

sf.max_by(col, ord)

Parameter-parameternya

Pengaturan Tipe Description
col pyspark.sql.Column atau nama kolom Kolom yang mewakili nilai yang akan dikembalikan. Ini bisa berupa instans kolom atau nama kolom sebagai string.
ord pyspark.sql.Column atau nama kolom Kolom yang perlu dimaksimalkan. Ini bisa berupa instans kolom atau nama kolom sebagai string.

Pengembalian Barang

pyspark.sql.Column: Objek kolom yang mewakili nilai dari col yang terkait dengan nilai maksimum dari ord.

Examples

Contoh 1: Menggunakan max_by dengan 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|
+------+----------------------+

Contoh 2: Menggunakan max_by dengan jenis data yang berbeda

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

Contoh 3: Menggunakan max_by di mana ord memiliki beberapa nilai maksimum

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