Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Retourneert een DataFrame weergave van het resultaat van de opgegeven query.
Wanneer kwargs is opgegeven, maakt deze methode de opgegeven tekenreeks op met behulp van de Python standaardnotatie. De methode verbindt benoemde parameters met letterlijke SQL-waarden of positionele parameters van args. Benoemde en positionele parameters kunnen niet worden gemengd in dezelfde SQL-query.
Syntaxis
sql(sqlQuery, args=None, **kwargs)
Parameterwaarden
| Kenmerk | Typ | Beschrijving |
|---|---|---|
sqlQuery |
str | SQL-queryreeks. |
args |
dicteren of lijst, optioneel | Een woordenlijst met parameternamen voor Python objecten of een lijst met Python objecten die kunnen worden geconverteerd naar letterlijke SQL-expressies. Gebruik :param_name de syntaxis voor benoemde parameters of ? voor positionele parameters in de querytekenreeks. |
**kwargs |
optional | Variabelen waarnaar in de query kan worden verwezen met behulp van Python formattersyntaxis (bijvoorbeeld {varname}). Deze functie is experimenteel en instabiel. |
Retouren
DataFrame
Aantekeningen
In Spark Classic wordt onmiddellijk een tijdelijke weergave opgelost spark.sql waarnaar wordt verwezen. In Spark Connect wordt deze lui geanalyseerd, dus als een weergave wordt verwijderd, gewijzigd of vervangen, spark.sqlkan de uitvoering mislukken of andere resultaten genereren.
Examples
# 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|
# +---+---+---+