参数标记
参数标记命名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|/ /+ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +