sql (Structured Query Language - Yapısal Sorgu Dili)

Verilen sorgunun sonucunu temsil eden bir DataFrame döndürür.

kwargs belirtildiğinde, bu yöntem Python standart biçimlendiriciyi kullanarak verilen dizeyi biçimlendirebilir. yöntemi, adlandırılmış parametreleri SQL değişmez değerlerine veya konumundan argskonumsal parametrelere bağlar. Adlandırılmış ve konumsal parametreler aynı SQL sorgusunda karıştırılamaz.

Sözdizimi

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

Parametreler

Parametre Türü Açıklama
sqlQuery str SQL sorgu dizesi.
args dikte veya liste, isteğe bağlı Python nesnelere parametre adları sözlüğü veya SQL değişmez değer ifadelerine dönüştürülebilecek Python nesnelerin listesi. Adlandırılmış parametreler için veya :param_name sorgu dizesindeki konumsal parametreler için söz dizimini kullanın?.
**kwargs optional Python biçimlendirici söz dizimi kullanılarak sorguda başvurulabilen değişkenler (örneğin, {varname}). Bu özellik deneysel ve kararsızdır.

İadeler

DataFrame

Notlar

Klasik Spark'ta, içinde spark.sql başvuruda bulunan geçici bir görünüm hemen çözümlenir. Spark Connect'te, bir görünüm bırakıldığında, değiştirildiğinde veya değiştirildiğinde spark.sqlyürütme başarısız olabilir veya farklı sonuçlar oluşturabilir.

Örnekler

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