Oharra
Baimena behar duzu orria atzitzeko. Direktorioetan saioa has dezakezu edo haiek alda ditzakezu.
Baimena behar duzu orria atzitzeko. Direktorioak alda ditzakezu.
Devuelve un objeto DataFrame que representa el resultado de la consulta especificada.
Cuando se especifica kwargs, este método da formato a la cadena dada mediante el formateador estándar Python. El método enlaza parámetros con nombre a literales SQL o parámetros posicionales de args. Los parámetros con nombre y posición no se pueden mezclar en la misma consulta SQL.
Sintaxis
sql(sqlQuery, args=None, **kwargs)
Parámetros
| Parámetro | Tipo | Descripción |
|---|---|---|
sqlQuery |
str | Cadena de consulta SQL. |
args |
dict o list, opcional | Diccionario de nombres de parámetros para Python objetos o una lista de objetos Python que se pueden convertir en expresiones literales sql. Use :param_name la sintaxis para los parámetros con nombre o ? para los parámetros posicionales en la cadena de consulta. |
**kwargs |
opcional | Variables a las que se puede hacer referencia en la consulta mediante Python sintaxis de formateador (por ejemplo, {varname}). Esta característica es experimental e inestable. |
Devoluciones
DataFrame
Notas
En Spark Classic, se resuelve inmediatamente una vista temporal a la que se hace referencia en spark.sql . En Spark Connect, se analiza de forma diferida, por lo que si se quita, modifica o reemplaza una vista después spark.sqlde , la ejecución puede producir un error o generar resultados diferentes.
Ejemplos
# 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|
# +---+---+---+