sql

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