Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
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|
# +---+---+---+