skalär

Returnera ett Column objekt för en SCALAR-underfråga som innehåller exakt en rad och en kolumn.

Syntax

scalar()

Retur

Column: Ett Column objekt som representerar en SCALAR-underfråga.

Notes

Metoden scalar() är användbar för att extrahera ett Column objekt som representerar ett skalärt värde från en DataFrame, särskilt när DataFrame är resultatet av en aggregering eller envärdesberäkning. Detta returneras Column kan sedan användas direkt i select satser eller som predikat i filter på den yttre dataramen, vilket möjliggör dynamisk datafiltrering och beräkningar baserat på skalära värden.

Exempel

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