SQL
指定されたクエリの結果を表すDataFrameを返します。
kwargsが指定されている場合、このメソッドはPythonの標準フォーマッタを使用して指定された文字列をフォーマットします。このメソッドは、という名前の 問題 をSQLリテラルまたはargsからの位置的な問題にバインドします。 名前付きおよび位置の問題を同じSQLクエリ内に混在させることはできません。
構文
sql(sqlQuery, args=None, **kwargs)
パラメーター
パラメーター | Type | 説明 |
|---|---|---|
| str | SQLクエリ文字列。 |
| 辞書またはリスト(オプション) | Pythonオブジェクトへの対応名を格納した辞書、またはSQLリテラル式に変換可能なPythonオブジェクトのリスト。 クエリ文字列内の名前付きの問題には |
| オプション | Python フォーマッタ構文を使用してクエリ内で参照できる変数 (例: |
戻り値
DataFrame
注意
Spark Classicでは、 spark.sqlで参照される一時ビューは即座に解決されます。Spark Connect では、遅延分析が行われるため、 spark.sqlの後にビューが削除、変更、または置き換えられた場合、実行が失敗したり、異なる結果が生成されたりする可能性があります。
例
Python
# 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|
# +---+---+---+