Pular para o conteúdo principal

escalar

Retorna um objeto Column para uma subconsulta escalar contendo exatamente uma linha e uma coluna.

Sintaxe

scalar()

Devoluções

Column: Um objeto Column representando uma subconsulta ESCALAR.

Notas

O método scalar() é útil para extrair um objeto Column que representa um valor escalar de um DataFrame, especialmente quando o DataFrame resulta de uma agregação ou cálculo de valor único. Este Column retornado pode então ser usado diretamente em cláusulas select ou como predicados em filtros no DataFrame externo, permitindo filtragem de dados dinâmica e cálculos baseados em valores escalares.

Exemplos

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