Freigeben über


Skalar

Gibt ein Column Objekt für eine SKALAR-Unterabfrage zurück, die genau eine Zeile und eine Spalte enthält.

Syntax

scalar()

Rückkehr

Column: Ein Column Objekt, das eine SKALAR-Unterabfrage darstellt.

Hinweise

Die scalar() Methode ist nützlich, um ein Column Objekt zu extrahieren, das einen skalaren Wert aus einem DataFrame darstellt, insbesondere, wenn der DataFrame aus einer Aggregation oder einer Einzelwertberechnung resultiert. Diese zurückgegebene Column Kann dann direkt in select Klauseln oder als Prädikate in Filtern im äußeren DataFrame verwendet werden, wodurch dynamische Datenfilterung und Berechnungen basierend auf skalaren Werten ermöglicht werden.

Beispiele

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