Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
DataFrame Az adott lekérdezés eredményét képviselő értéket ad vissza.
Ha kwargs van megadva, ez a metódus formázza az adott sztringet a Python standard formázó használatával. A metódus az elnevezett paramétereket SQL-literálokhoz vagy pozícióparaméterekhez köti.args Az elnevezett és a pozícióparaméterek nem keverhetők ugyanabban az SQL-lekérdezésben.
Szemantika
sql(sqlQuery, args=None, **kwargs)
Paraméterek
| Paraméter | Típus | Leírás |
|---|---|---|
sqlQuery |
str | SQL-lekérdezési sztring. |
args |
diktálás vagy lista, nem kötelező | Paraméternevek szótára Python objektumokhoz, vagy Python sql-konstanskifejezésekké konvertálható objektumok listája. A névvel ellátott paraméterek :param_name vagy a pozícióparaméterek szintaxisát használja ? a lekérdezési sztringben. |
**kwargs |
optional | A lekérdezésben Python formázó szintaxissal hivatkozható változók (például {varname}). Ez a funkció kísérleti és instabil. |
Visszatérítések
DataFrame
Jegyzetek
A Klasszikus Sparkban spark.sql a programban hivatkozott ideiglenes nézet azonnal feloldódik. A Spark Connectben a rendszer lusta elemzést végez, így ha egy nézet elvetése, módosítása vagy cseréje után spark.sqltörténik, a végrehajtás sikertelen lehet, vagy különböző eredményeket hozhat létre.
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|
# +---+---+---+