Skalar

Column Mengembalikan objek untuk Subkueri SCALAR yang berisi tepat satu baris dan satu kolom.

Sintaksis

scalar()

Pengembalian Barang

Column: Objek Column yang mewakili subkueri SCALAR.

Catatan

Metode scalar() ini berguna untuk mengekstrak Column objek yang mewakili nilai skalar dari DataFrame, terutama ketika DataFrame dihasilkan dari agregasi atau komputasi nilai tunggal. Ini kemudian Column dapat digunakan langsung dalam select klausul atau sebagai predikat dalam filter pada DataFrame luar, memungkinkan pemfilteran dan perhitungan data dinamis berdasarkan nilai skalar.

Examples

data = [
    (1, "Alice", 45000, 101), (2, "Bob", 54000, 101), (3, "Charlie", 29000, 102),
    (4, "David", 61000, 102), (5, "Eve", 48000, 101),
]
employees = spark.createDataFrame(data, ["id", "name", "salary", "department_id"])

from pyspark.sql import functions as sf
employees.where(
    sf.col("salary") > employees.select(sf.avg("salary")).scalar()
).select("name", "salary", "department_id").orderBy("name").show()
# +-----+------+-------------+
# | name|salary|department_id|
# +-----+------+-------------+
# |  Bob| 54000|          101|
# |David| 61000|          102|
# |  Eve| 48000|          101|
# +-----+------+-------------+

employees.alias("e1").where(
    sf.col("salary")
    > employees.alias("e2").where(
        sf.col("e2.department_id") == sf.col("e1.department_id").outer()
    ).select(sf.avg("salary")).scalar()
).select("name", "salary", "department_id").orderBy("name").show()
# +-----+------+-------------+
# | name|salary|department_id|
# +-----+------+-------------+
# |  Bob| 54000|          101|
# |David| 61000|          102|
# +-----+------+-------------+