Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
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|
# +---+---+---+