Utiliser des marqueurs de paramètre nommés
Les marqueurs de parameter nommés vous permettent d'insérer des valeurs variables dans les query SQL lors de l'exécution. Au lieu de coder en dur des valeurs spécifiques, vous définissez des espaces réservés typés que les utilisateurs remplissent lorsque la query s'exécute. Cela améliore la réutilisation des query, prévient les injections SQL et facilite la création de query flexibles et interactives.
Les marqueurs de parameter nommés fonctionnent dans les environnements Databricks suivants :
- Éditeur SQL (nouveau et hérité)
- Notebooks
- Éditeur de dataset AI/BI dashboard
- Agents Genie
Ajouter un marqueur de paramètre nommé
Insérez un paramètre en saisissant deux points suivis d'un nom de paramètre, par exemple :parameter_name. Lorsque vous ajoutez un marqueur de paramètre nommé à une requête, un widget s'affiche dans lequel vous pouvez définir le type et la valeur du paramètre. Voir Travailler avec des widgets de paramètre.
Cet exemple convertit une requête codée en dur pour utiliser un paramètre nommé.
Démarrage de la query :
SELECT
trip_distance,
fare_amount
FROM
samples.nyctaxi.trips
WHERE
fare_amount < 5
- Supprimez
5de la clauseWHERE. - Tapez
:fare_parameterà sa place. La dernière ligne devrait lirefare_amount < :fare_parameter. - Cliquez sur l'icône d'engrenage près du widget de parameter.
- Définissez le Type sur Décimal .
- Saisissez une valeur dans le widget de paramètre et cliquez sur **Appliquer les modifications**.
- Cliquez sur Enregistrer .
Types de paramètres
Définissez le type de paramètre dans le panneau des paramètres. Le type détermine comment Databricks interprète et gère la valeur à l'exécution.
Type | Description |
|---|---|
Chaîne | Texte libre. La barre oblique inverse, les guillemets simples et doubles sont automatiquement échappés. Databricks ajoute des guillemets autour de la valeur. |
Entier | Valeur du nombre entier. |
Décimal | Valeur numérique prenant en charge les valeurs fractionnaires. |
Date | Valeur de date. Utilise un sélecteur de calendrier et default à la date actuelle. |
Horodatage | Valeur de date et d’heure. Utilise un sélecteur de calendrier et s’initialise par default à la date et à l’heure actuelles. |
Exemples de syntaxe de parameter nommés
Les exemples suivants illustrent des modèles courants pour les marqueurs de paramètres nommés.
Insérer une date
SELECT
o_orderdate AS Date,
o_orderpriority AS Priority,
sum(o_totalprice) AS `Total Price`
FROM
samples.tpch.orders
WHERE
o_orderdate > :date_param
GROUP BY 1, 2
Insérer un nombre
SELECT
o_orderdate AS Date,
o_orderpriority AS Priority,
o_totalprice AS Price
FROM
samples.tpch.orders
WHERE
o_totalprice > :num_param
Insérer un nom de champ
Utilisez la fonction IDENTIFIER pour passer un nom de colonne en tant que parameter. La valeur du parameter doit être un nom de colonne de la table utilisée dans la query.
SELECT * FROM samples.tpch.orders
WHERE IDENTIFIER(:field_param) < 10000
Insérer des objets de base de données
Utilisez la fonction IDENTIFIER avec plusieurs paramètres pour spécifier un catalogue, un schéma et une table à l'exécution.
SELECT *
FROM IDENTIFIER(:catalog || '.' || :schema || '.' || :table)
Consultez la clause IDENTIFIER.
Concaténer plusieurs paramètres
Utilisez format_string pour combiner des paramètres en une seule chaîne formatée. Voir fonction format_string.
SELECT o_orderkey, o_clerk
FROM samples.tpch.orders
WHERE o_clerk LIKE format_string('%s%s', :title, :emp_number)
Travailler avec les chaînes JSON
Utilisez la fonctionfrom_json pour extraire une valeur d'une chaîne JSON à l'aide d'un paramètre comme clé. La substitution de a en tant que valeur pour :param renvoie 1.
SELECT from_json('{"a": 1}', 'map<string, int>') [:param]
Créer un intervalle
Utiliser CAST pour convertir une valeur de paramètre en type INTERVAL pour les calculs temporels. Voir type d'intervalle.
SELECT CAST(:param AS INTERVAL MINUTE)
Ajouter une plage de dates à l'aide de .min et .max
Les paramètres de date et de Timestamp prennent en charge un widget de plage. Utilisez .min et .max pour accéder au start et à la fin de la plage.
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN :date_range.min AND :date_range.max
Définissez le type de parameter sur Date ou Timestamp et le type de widget sur **Plage**.
Ajoutez une plage de dates à l'aide de deux paramètres
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN CAST(:date_range_min AS TIMESTAMP) AND CAST(:date_range_max AS TIMESTAMP)
Paramétrer la granularité de cumul
Utilisez DATE_TRUNC pour agréger les résultats à un niveau de granularité sélectionné par l'utilisateur. Passez DAY, MONTH ou YEAR comme valeur du paramètre.
SELECT
DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS date_rollup,
COUNT(*) AS total_trips
FROM samples.nyctaxi.trips
GROUP BY date_rollup
Transmettre plusieurs valeurs sous forme de chaîne
Utilisez ARRAY_CONTAINS, SPLIT et TRANSFORM pour filtrer une liste de valeurs séparées par des virgules, transmise comme un seul paramètre de chaîne. SPLIT analyse syntaxiquement la chaîne de caractères séparée par des virgules en un tableau. TRANSFORM supprime les espaces blancs de chaque élément. ARRAY_CONTAINS vérifie si la valeur de la table apparaît dans le tableau de résultats.
SELECT * FROM samples.nyctaxi.trips WHERE
array_contains(
TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),
CAST(dropoff_zip AS STRING)
)
Cet exemple fonctionne pour les valeurs de chaîne. Pour utiliser d'autres types de données, enveloppez l'opération TRANSFORM avec un CAST pour convertir les éléments au type souhaité.
Référence de migration de syntaxe
Utilisez cette table lors de la conversion des query de la syntaxe mustache en marqueurs de parameter nommés. Consultez la syntaxe des parameter mustache pour plus d'information concernant la syntaxe héritée.
Cas d'usage | Syntaxe Mustache | Syntaxe de paramètre nommée |
|---|---|---|
Filtrer par date |
|
|
Filtrer par nombre |
|
|
Comparer les chaînes |
|
|
Spécifiez une table |
|
|
Spécifiez le catalogue, le schéma et la table. |
|
|
Formater une chaîne à partir de plusieurs paramètres |
|
|
Créer un intervalle |
|
|