sql

Vrátí reprezentaci DataFrame výsledku daného dotazu.

Pokud je zadán kwargs, tato metoda formátuje daný řetězec pomocí Python standardního formátovače. Metoda sváže pojmenované parametry s literály SQL nebo pozičními parametry z args. Pojmenované a poziční parametry nelze kombinovat ve stejném dotazu SQL.

Syntaxe

sql(sqlQuery, args=None, **kwargs)

Parametry

Parameter Typ Description
sqlQuery str Řetězec dotazu SQL.
args diktování nebo seznam, volitelné Slovník názvů parametrů pro Python objekty nebo seznam objektů Python, které lze převést na literály SQL. Použijte :param_name syntaxi pro pojmenované parametry nebo ? pro poziční parametry v řetězci dotazu.
**kwargs volitelný Proměnné, na které lze v dotazu odkazovat pomocí syntaxe formátovacího Python (například {varname}). Tato funkce je experimentální a nestabilní.

Návraty

DataFrame

Poznámky

V klasickém Sparku se okamžitě vyřeší dočasné zobrazení, na spark.sql které se odkazuje. V Nástroji Spark Connect se líně analyzuje, takže pokud se zobrazení zahodí, upraví nebo nahradí po spark.sql, spuštění může selhat nebo vygenerovat různé výsledky.

Příklady

# 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|
# +---+---+---+