參數標記
參數標記命名orgydF4y2Ba不願透露姓名的類型的占位符變量用來供應值從API調用SQL語句。
使用參數標記保護您的代碼從SQL注入攻擊,因為它明確地分離提供值與SQL語句。
你不能混合命名和未具名參數標記的SQL語句。
你不能在DDL語句引用一個參數標記,如一個生成的列或違約的定義,一個視圖,或SQL函數。
例外條款中引用參數標記標識符,可用於參數化在某些DDL語句表名或列名。看到標識符條款。
可以提供的參數標記:
Python使用它的pyspark.sql.SparkSession.sql ()API。
Scala使用它的org.apache.spark.sql.SparkSession.sql ()API。
Java使用它的org.apache.spark.sql.SparkSession.sql ()API。
命名參數標記
適用於:磚運行時12.1及以後
命名參數標記類型占位符變量。API調用SQL語句必須提供名稱-值對將每個參數標記的值。
筆記
你可以引用相同的參數標記內多次相同的SQL語句。如果沒有綁定到參數標記的值UNBOUND_SQL_PARAMETER錯誤是提高。你不需要參考提供的所有參數標記。
強製性的前:
(冒號)區分的名稱空間指定參數標記的列名和SQL參數。
例子
下麵的例子定義了兩個參數標記:
晚些時候:一個
時間間隔小時
值為3。x:一個
雙
價值15.0
x
多次引用,而晚些時候
一旦引用。
進口org。apache。火花。sql。SparkSession瓦爾火花=SparkSession。構建器()。瀏覽器名稱(“火花命名參數標記的例子”)。getOrCreate()瓦爾argMap=地圖(“晚些時候”- >java。時間。持續時間。ofHours(3),“x”- >15.0)火花。sql(sqlText=“選擇current_timestamp() +:後來,:x *: x平方”,arg遊戲=argMap)。顯示()/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | current_timestamp() +間隔“03”小時| |廣場/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | 2023-02-27 17:48:……| 225.00 |/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
進口org.apache.spark.sql。*;靜態導入java.util.Map.entry;SparkSession火花=SparkSession。構建器()。瀏覽器名稱(“Java火花參數標記的例子”)。getOrCreate();地圖<字符串,字符串>argMap=地圖。ofEntries(條目(“晚些時候”,java。時間。持續時間。ofHours(3)),條目(“x”,15.0));火花。sql(sqlText=“選擇current_timestamp() +:後來,:x *: x平方”,arg遊戲=argMap)。顯示();/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | current_timestamp() +間隔“03”小時| |廣場/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | 2023-02-27 17:48:……| 225.00 |/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
火花。sql(“選擇current_timestamp() +:後來,:x *: x平方”,arg遊戲={“晚些時候”,“間隔3小時”,“x”,15.0})。顯示()/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ /|current_timestamp()+時間間隔“03”小時|廣場|/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ /|2023年- - - - - -02- - - - - -2717:48:…|225.00|/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
不願透露姓名的參數標記
適用於:磚運行時13.3及以後
匿名類型的占位符變量參數標記。API調用SQL語句必須提供參數關聯數組中的每個參數標記的值順序出現。
筆記
每次出現的一位不願透露姓名的參數標記消耗值提供的API調用SQL語句。如果沒有值被綁定到參數標記,一個UNBOUND_SQL_PARAMETER錯誤是提高。你不需要消耗所有提供的值。
例子
下麵的例子定義了三個參數標記:
一個
時間間隔小時
值為3。兩個
雙
值為15.0。
因為提供的參數是不知名的每個值被最多一個參數。
進口org。apache。火花。sql。SparkSession瓦爾火花=SparkSession。構建器()。瀏覽器名稱(“火花未具名參數標記的例子”)。getOrCreate()瓦爾argArr=數組(java。時間。持續時間。ofHours(3),15.0,15.0)火花。sql(sqlText=“選擇current_timestamp () + ? ?* ?廣場”,arg遊戲=argArr)。顯示()/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | current_timestamp() +間隔“03”小時| |廣場/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | 2023-02-27 17:48:……| 225.00 |/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
進口org.apache.spark.sql。*;SparkSession火花=SparkSession。構建器()。瀏覽器名稱(“Java火花未具名參數標記的例子”)。getOrCreate();對象[]argArr=新對象[]{java。時間。持續時間。ofHours(3),15.0,15.0}火花。sql(sqlText=“選擇current_timestamp () + ? ?* ?廣場”,arg遊戲=argArr)。顯示();/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | current_timestamp() +間隔“03”小時| |廣場/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ / | 2023-02-27 17:48:……| 225.00 |/ / + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
火花。sql(“選擇current_timestamp () + ? ?* ?廣場”,arg遊戲=(“間隔3小時”,15.0,15.0])。顯示()/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ /|current_timestamp()+時間間隔“03”小時|廣場|/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +/ /|2023年- - - - - -02- - - - - -2717:48:…|225.00|/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +