Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Retorna um DataFrame que representa o resultado da consulta fornecida.
Quando kwargs é especificado, esse método formata a cadeia de caracteres fornecida usando o Python formatador padrão. O método associa parâmetros nomeados a literais SQL ou parâmetros posicionais de args. Parâmetros nomeados e posicionais não podem ser misturados na mesma consulta SQL.
Sintaxe
sql(sqlQuery, args=None, **kwargs)
Parâmetros
| Parâmetro | Tipo | Descrição |
|---|---|---|
sqlQuery |
str | Cadeia de caracteres de consulta SQL. |
args |
ditado ou lista, opcional | Um dicionário de nomes de parâmetros para Python objetos ou uma lista de objetos Python que podem ser convertidos em expressões literais sql. Use :param_name a sintaxe para parâmetros nomeados ou ? para parâmetros posicionais na cadeia de caracteres de consulta. |
**kwargs |
opcional | Variáveis que podem ser referenciadas na consulta usando Python sintaxe do formatador (por exemplo, {varname}). Esse recurso é experimental e instável. |
Devoluções
DataFrame
Observações
No Spark Classic, uma exibição temporária referenciada é spark.sql resolvida imediatamente. No Spark Connect, ele é analisado lentamente, portanto, se uma exibição for descartada, modificada ou substituída após spark.sql, a execução poderá falhar ou gerar resultados diferentes.
Exemplos
# Execute a basic SQL query.
spark.sql("SELECT * FROM range(10) where id > 7").show()
# +---+
# | id|
# +---+
# | 8|
# | 9|
# +---+
# Use Python formatter variables.
spark.sql(
"SELECT * FROM range(10) WHERE id > {bound1} AND id < {bound2}", bound1=7, bound2=9
).show()
# +---+
# | id|
# +---+
# | 8|
# +---+
# Use named parameters with the : prefix.
from pyspark.sql.functions import create_map, lit
mydf = spark.createDataFrame([(1, 4), (2, 4), (3, 6)], ["A", "B"])
spark.sql(
"SELECT *, element_at(:m, 'a') AS C FROM {df} WHERE {df[B]} > :minB",
{"minB": 5, "m": create_map(lit('a'), lit(1))}, df=mydf).show()
# +---+---+---+
# | A| B| C|
# +---+---+---+
# | 3| 6| 1|
# +---+---+---+
# Use positional parameters marked by ?.
from pyspark.sql.functions import array
spark.sql(
"SELECT *, element_at(?, 1) AS C FROM {df} WHERE {df[B]} > ? and ? < {df[A]}",
args=[array(lit(1), lit(2), lit(3)), 5, 2], df=mydf).show()
# +---+---+---+
# | A| B| C|
# +---+---+---+
# | 3| 6| 1|
# +---+---+---+