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