Události
Získejte certifikaci v Microsoft Fabric – zdarma!
19. 11. 23 - 10. 12. 23
Po omezenou dobu nabízí tým komunity Microsoft Fabric zdarma poukázky na zkoušky DP-600.
PřipravitTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Značky parametrů jsou pojmenované nebo nepojmenované zástupné proměnné používané k zadání hodnot z rozhraní API, které vyvolává příkaz SQL.
Použití značek parametrů chrání váš kód před útoky prostřednictvím injektáže SQL, protože jasně odděluje zadané hodnoty od příkazů SQL.
Ve stejném příkazu SQL nelze kombinovat pojmenované a nepojmenované značky parametrů.
V příkazu DDL nesmíte odkazovat na značku parametru, například vygenerovaný sloupec nebo DEFAULT
definici, zobrazení nebo funkci SQL.
Výjimky jsou odkazy na značky parametrů v IDENTIFIER
klauzuli, které lze použít k parametrizaci názvů tabulek nebo sloupců v určitých příkazech DDL. Viz klauzule IDENTIFIER.
Značky parametrů mohou být poskytovány:
Platí pro: Databricks Runtime 12.1 a novější
Pojmenované značky parametrů jsou zástupné proměnné typu. Rozhraní API, které vyvolá příkaz SQL, musí zadat páry name-value pro přidružení každé značky parametru k hodnotě.
:parameter_name
Odkaz na zadanou značku parametru ve formě nekvalifikovaného identifikátoru.
Stejnou značku parametru můžete v rámci stejného příkazu SQL odkazovat vícekrát. Pokud nebyla na značku parametru vázána žádná hodnota, vyvolá se UNBOUND_SQL_PARAMETER chyba. Nemusíte odkazovat na všechny zadané značky parametrů.
Povinný před ( :
dvojtečka) rozlišuje obor názvů pojmenovaných značek parametrů od názvů sloupců a parametrů SQL.
Následující příklad definuje dvě značky parametrů:
INTERVAL HOUR
3.DOUBLE
s hodnotou 15,0x
je odkazován vícekrát, zatímco later
je odkazován jednou.
> DECLARE stmtStr = 'SELECT current_timestamp() + :later, :x * :x AS square';
> EXECUTE IMMEDIATE stmtStr USING INTERVAL '3' HOURS AS later, 15.0 AS x;
2024-01-19 16:17:16.692303 225.00
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("Spark named parameter marker example")
.getOrCreate()
val argMap = Map("later" -> java.time.Duration.ofHours(3), "x" -> 15.0)
spark.sql(
sqlText = "SELECT current_timestamp() + :later, :x * :x AS square",
args = argMap).show()
// +----------------------------------------+------+
// |current_timestamp() + INTERVAL '03' HOUR|square|
// +----------------------------------------+------+
// | 2023-02-27 17:48:...|225.00|
// +----------------------------------------+------+
import org.apache.spark.sql.*;
import static java.util.Map.entry;
SparkSession spark = SparkSession
.builder()
.appName("Java Spark named parameter marker example")
.getOrCreate();
Map<String, String> argMap = Map.ofEntries(
entry("later", java.time.Duration.ofHours(3)),
entry("x", 15.0)
);
spark.sql(
sqlText = "SELECT current_timestamp() + :later, :x * :x AS square",
args = argMap).show();
// +----------------------------------------+------+
// |current_timestamp() + INTERVAL '03' HOUR|square|
// +----------------------------------------+------+
// | 2023-02-27 17:48:...|225.00|
// +----------------------------------------+------+
spark.sql("SELECT :x * :y * :z AS volume", args = { "x" : 3, "y" : 4, "z" : 5 }).show()
// +------+
// |volume|
// +------+
// | 60|
// +------+
Platí pro: Databricks Runtime 13.3 a vyšší
Nepojmenované značky parametrů jsou zástupné proměnné typu. Rozhraní API, které vyvolá příkaz SQL, musí zadat pole argumentů pro přidružení každé značky parametru k hodnotě v pořadí, ve kterém se zobrazí.
?
?
: Odkaz na zadanou značku parametru ve formě otazníku.Každý výskyt nepojmenované značky parametru spotřebovává hodnotu poskytnutou rozhraním API, která vyvolá příkaz SQL v uvedeném pořadí. Pokud není žádná hodnota vázána na značku parametru, vyvolá se UNBOUND_SQL_PARAMETER chyba. Nemusíte využívat všechny zadané hodnoty.
Následující příklad definuje tři značky parametrů:
INTERVAL HOUR
3.DOUBLE
s hodnotou 15,0 každý.Vzhledem k tomu, že parametry nejsou pojmenovány, každá zadaná hodnota je spotřebována maximálně jedním parametrem.
> DECLARE stmtStr = 'SELECT current_timestamp() + ?, ? * ? AS square';
> EXECUTE IMMEDIATE stmtStr USING INTERVAL '3' HOURS, 15.0, 15.0;
2024-01-19 16:17:16.692303 225.00
import org.apache.spark.sql.SparkSession
val spark = SparkSession
.builder()
.appName("Spark unnamed parameter marker example")
.getOrCreate()
val argArr = Array(java.time.Duration.ofHours(3), 15.0, 15.0)
spark.sql(
sqlText = "SELECT current_timestamp() + ?, ? * ? AS square", args = argArr).show()
// +----------------------------------------+------+
// |current_timestamp() + INTERVAL '03' HOUR|square|
// +----------------------------------------+------+
// | 2023-02-27 17:48:...|225.00|
// +----------------------------------------+------+
import org.apache.spark.sql.*;
SparkSession spark = SparkSession
.builder()
.appName("Java Spark unnamed parameter marker example")
.getOrCreate();
Object[] argArr = new Object[] { java.time.Duration.ofHours(3), 15.0, 15.0 }
spark.sql(
sqlText = "SELECT current_timestamp() + ?, ? * ? AS square",
args = argArr).show();
// +----------------------------------------+------+
// |current_timestamp() + INTERVAL '03' HOUR|square|
// +----------------------------------------+------+
// | 2023-02-27 17:48:...|225.00|
// +----------------------------------------+------+
spark.sql("SELECT ? * ? * ? AS volume", args = { 3, 4, 5 }).show()
// +------+
// |volume|
// +------+
// | 60|
// +------+
Události
Získejte certifikaci v Microsoft Fabric – zdarma!
19. 11. 23 - 10. 12. 23
Po omezenou dobu nabízí tým komunity Microsoft Fabric zdarma poukázky na zkoušky DP-600.
PřipravitŠkolení
Modul
Použití poznámkových bloků Sparku v kanálu Azure Synapse - Training
Tento modul popisuje, jak je možné integrovat poznámkové bloky Apache Spark do kanálu Azure Synapse Analytics.
Dokumentace
Klauzule IDENTIFIER – Azure Databricks - Databricks SQL
Přečtěte si o klauzulích SQL IDENTIFIER v Databricks SQL a Databricks Runtime.
Práce s parametry dotazu – Azure Databricks - Databricks SQL
Seznamte se s parametry dotazů v Azure Databricks.
Proměnné – Azure Databricks - Databricks SQL
Seznamte se s proměnnými v Databricks SQL a Databricks Runtime.