Compartilhar via


escalar

Retornar um Column objeto para uma subconsulta SCALAR que contém exatamente uma linha e uma coluna.

Sintaxe

scalar()

Devoluções

Column: um Column objeto que representa uma subconsulta SCALAR.

Observações

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

Exemplos

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