Aller au contenu principal

scalaire

Retourne un objet Column pour une sous-requête SCALAR contenant exactement une ligne et une colonne.

Syntaxe

scalar()

Renvoie

Column: Un objet Column représentant une sous-requête scalaire.

Notes

La méthode scalar() est utile pour extraire un objet Column qui représente une valeur scalaire d'un DataFrame, en particulier lorsque le DataFrame résulte d'une agrégation ou d'un calcul à valeur unique. Ce Column renvoyé peut ensuite être utilisé directement dans les clauses select ou comme prédicats dans les filtres sur le DataFrame externe, permettant un filtrage et des calculs de données dynamiques basés sur des valeurs scalaires.

Exemples

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