scalar

Retourneert een Column object voor een SCALAR-subquery die precies één rij en één kolom bevat.

Syntaxis

scalar()

Retouren

Column: Een Column object dat een SCALAR-subquery vertegenwoordigt.

Aantekeningen

De scalar() methode is handig voor het extraheren van een Column object dat een scalaire waarde uit een DataFrame vertegenwoordigt, met name wanneer het DataFrame het resultaat is van een aggregatie- of berekening met één waarde. Dit geretourneerde Column kan vervolgens rechtstreeks worden gebruikt in select componenten of als predicaten in filters op het buitenste DataFrame, waardoor dynamische gegevensfiltering en berekeningen mogelijk zijn op basis van scalaire waarden.

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