pyspark.pandas.sql
的用法。用法:
pyspark.pandas.sql(query: str, index_col: Union[str, List[str], None] = None, globals: Optional[Dict[str, Any]] = None, locals: Optional[Dict[str, Any]] = None, **kwargs: Any) → pyspark.pandas.frame.DataFrame
執行 SQL 查詢並將結果作為pandas-on-Spark DataFrame 返回。
此函數還支持通過將 Python 變量(局部變量、全局變量和參數)包在花括號中來在 SQL 語句中嵌入它們。有關詳細信息,請參閱示例部分。
除了局部變量、全局變量和參數之外,該函數還將嘗試確定程序當前是否在 IPython(或 Jupyter)環境中運行,並從該環境中導入變量。變量與全局變量具有相同的優先級。
支持以下變量類型:
string
int
float
列表、元組、上述類型的範圍
pandas-on-Spark DataFrame
pandas-on-Spark係列
Pandas DataFrame
- query:str
SQL 查詢
- index_col:str 或 str 列表,可選
在 Spark 中用於表示 pandas-on-Spark 的索引的列名。 pandas-on-Spark 中的索引名稱被忽略。默認情況下,索引總是丟失。
注意
如果要保留索引,請顯式使用
DataFrame.reset_index()
,並將其傳遞給帶有index_col
參數的 sql 語句。例如,
>>> psdf = ps.DataFrame({"A": [1, 2, 3], "B":[4, 5, 6]}, index=['a', 'b', 'c']) >>> psdf_reset_index = psdf.reset_index() >>> ps.sql("SELECT * FROM {psdf_reset_index}", index_col="index") ... A B index a 1 4 b 2 5 c 3 6
對於多索引,
>>> psdf = ps.DataFrame( ... {"A": [1, 2, 3], "B": [4, 5, 6]}, ... index=pd.MultiIndex.from_tuples( ... [("a", "b"), ("c", "d"), ("e", "f")], names=["index1", "index2"] ... ), ... ) >>> psdf_reset_index = psdf.reset_index() >>> ps.sql("SELECT * FROM {psdf_reset_index}", index_col=["index1", "index2"]) ... A B index1 index2 a b 1 4 c d 2 5 e f 3 6
另請注意,索引名稱應與現有名稱匹配。
- globals:字典,可選
全局變量字典,如果由用戶明確設置
- locals:字典,可選
局部變量的字典,如果由用戶明確設置
- kwargs:
用戶可能希望手動設置的可在查詢中引用的其他變量
- pandas-on-Spark DataFrame
參數:
返回:
例子:
調用內置 SQL 函數。
>>> ps.sql("select * from range(10) where id > 7") id 0 8 1 9
查詢還可以通過用花括號括起來來引用局部變量或參數:
>>> bound1 = 7 >>> ps.sql("select * from range(10) where id > {bound1} and id < {bound2}", bound2=9) id 0 8
您還可以用大括號括起來DataFrame來直接查詢它。請注意,執行此操作時,索引(如果有)會自動成為頂級列。
>>> mydf = ps.range(10) >>> x = range(4) >>> ps.sql("SELECT * from {mydf} WHERE id IN {x}") id 0 0 1 1 2 2 3 3
查詢也可以任意嵌套在函數中:
>>> def statement(): ... mydf2 = ps.DataFrame({"x": range(2)}) ... return ps.sql("SELECT * from {mydf2}") >>> statement() x 0 0 1 1
在連接操作中混合 pandas-on-Spark 和 pandas DataFrames。請注意,索引已被刪除。
>>> ps.sql(''' ... SELECT m1.a, m2.b ... FROM {table1} m1 INNER JOIN {table2} m2 ... ON m1.key = m2.key ... ORDER BY m1.a, m2.b''', ... table1=ps.DataFrame({"a": [1,2], "key": ["a", "b"]}), ... table2=pd.DataFrame({"b": [3,4,5], "key": ["a", "b", "b"]})) a b 0 1 3 1 2 4 2 2 5
此外,還可以使用 Series 進行查詢。
>>> myser = ps.Series({'a': [1.0, 2.0, 3.0], 'b': [15.0, 30.0, 45.0]}) >>> ps.sql("SELECT * from {myser}") 0 0 [1.0, 2.0, 3.0] 1 [15.0, 30.0, 45.0]
相關用法
- Python pyspark session_window用法及代碼示例
- Python pyspark second用法及代碼示例
- Python pyspark slice用法及代碼示例
- Python pyspark size用法及代碼示例
- Python pyspark struct用法及代碼示例
- Python pyspark spark_partition_id用法及代碼示例
- Python pyspark split用法及代碼示例
- Python pyspark shiftleft用法及代碼示例
- Python pyspark schema_of_csv用法及代碼示例
- Python pyspark sequence用法及代碼示例
- Python pyspark sort_array用法及代碼示例
- Python pyspark sha1用法及代碼示例
- Python pyspark substring用法及代碼示例
- Python pyspark shiftright用法及代碼示例
- Python pyspark shiftrightunsigned用法及代碼示例
- Python pyspark sha2用法及代碼示例
- Python pyspark substring_index用法及代碼示例
- Python pyspark schema_of_json用法及代碼示例
- Python pyspark sentences用法及代碼示例
- Python pyspark soundex用法及代碼示例
- Python pyspark shuffle用法及代碼示例
- Python pyspark create_map用法及代碼示例
- Python pyspark date_add用法及代碼示例
- Python pyspark DataFrame.to_latex用法及代碼示例
- Python pyspark DataStreamReader.schema用法及代碼示例
注:本文由純淨天空篩選整理自spark.apache.org大神的英文原創作品 pyspark.pandas.sql。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。