Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met benoemde parametermarkeringen kunt u tijdens runtime variabele waarden invoegen in SQL-query's. In plaats van vaste waarden te coderen, definieert u getypte tijdelijke aanduidingen die gebruikers invullen wanneer de query wordt uitgevoerd. Dit verbetert het hergebruik van query's, voorkomt SQL-injectie en maakt het eenvoudiger om flexibele, interactieve query's te bouwen.
Benoemde parametermarkeringen werken in de volgende Databricks-oppervlakken:
- SQL-editor (nieuw en verouderd)
- Notitieboekjes
- Bewerkingsprogramma voor gegevenssets van AI/BI-dashboards
- Genie-ruimten
Een benoemde parametermarkering toevoegen
Voeg een parameter in door een dubbele punt te typen, gevolgd door een parameternaam, zoals :parameter_name. Wanneer u een benoemde parametermarkering aan een query toevoegt, wordt er een widget weergegeven waarin u het parametertype en de waarde kunt instellen. Zie Werken met parameterwidgets.
In dit voorbeeld wordt een in code vastgelegde query geconverteerd om een benoemde parameter te gebruiken.
Query starten:
SELECT
trip_distance,
fare_amount
FROM
samples.nyctaxi.trips
WHERE
fare_amount < 5
- Verwijder
5uit deWHEREclausule. - Typ
:fare_parameterop de juiste plaats. De laatste regel moet worden gelezenfare_amount < :fare_parameter. - Klik op het tandwielpictogram in de buurt van de parameterwidget.
- Stel het type in op Decimaal.
- Voer een waarde in de parameterwidget in en klik op Wijzigingen toepassen.
- Klik op Opslaan.
Parametertypen
Stel het parametertype in het deelvenster parameterinstellingen in. Het type bepaalt hoe Databricks de waarde tijdens runtime interpreteert en verwerkt.
| Typologie | Beschrijving |
|---|---|
| String | Vrije vorm tekst. Backslash, enkele en dubbele aanhalingstekens worden automatisch geëscaped. Databricks voegt aanhalingstekens rond de waarde toe. |
| geheel getal | Gehele getalwaarde. |
| Decimaal | Numerieke waarde die fractiewaarden ondersteunt. |
| Datum | Datumwaarde. Gebruikt een kalenderkiezer en stelt standaard in op de huidige datum. |
| Tijdstempel | Datum- en tijdwaarde. Gebruikt een kalenderkiezer en standaardwaarden voor de huidige datum en tijd. |
Voorbeelden van benoemde parametersyntaxis
In de volgende voorbeelden ziet u veelvoorkomende patronen voor benoemde parametermarkeringen.
Een datum invoegen
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
Een getal invoegen
SELECT
o_orderdate AS Date,
o_orderpriority AS Priority,
o_totalprice AS Price
FROM
samples.tpch.orders
WHERE
o_totalprice > :num_param
Een veldnaam invoegen
Gebruik de IDENTIFIER functie om een kolomnaam door te geven als parameter. De parameterwaarde moet een kolomnaam zijn uit de tabel die in de query wordt gebruikt.
SELECT * FROM samples.tpch.orders
WHERE IDENTIFIER(:field_param) < 10000
Databaseobjecten invoegen
Gebruik de IDENTIFIER functie met meerdere parameters om tijdens runtime een catalogus, schema en tabel op te geven.
SELECT *
FROM IDENTIFIER(:catalog || '.' || :schema || '.' || :table)
Zie IDENTIFIER clausule.
Meerdere parameters samenvoegen
Gebruik format_string om parameters te combineren in één opgemaakte tekenreeks. Zie format_string functie.
SELECT o_orderkey, o_clerk
FROM samples.tpch.orders
WHERE o_clerk LIKE format_string('%s%s', :title, :emp_number)
Werken met JSON-tekenreeksen
Gebruik de from_json functie om een waarde uit een JSON-tekenreeks te extraheren met behulp van een parameter als sleutel. Het vervangen van a door de waarde voor :param geeft 1 terug.
SELECT from_json('{"a": 1}', 'map<string, int>') [:param]
Een interval maken
Hiermee CAST converteert u een parameterwaarde naar een INTERVAL type voor berekeningen op basis van tijd. Zie intervaltype.
SELECT CAST(:param AS INTERVAL MINUTE)
Een datumbereik toevoegen met behulp van .min en .max
Datum- en tijdstempelparameters ondersteunen een bereikwidget. Gebruik .min en .max voor toegang tot het begin en einde van het bereik.
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN :date_range.min AND :date_range.max
Stel het parametertype in op Date of Timestamp en het widgettype op Bereik.
Een datumbereik toevoegen met twee parameters
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN CAST(:date_range_min AS TIMESTAMP) AND CAST(:date_range_max AS TIMESTAMP)
De granulariteit van de rollup parameteriseren
Gebruik DATE_TRUNC dit om resultaten te aggregeren op een door de gebruiker geselecteerd niveau van granulariteit. Geef DAY, MONTH, of YEAR door als de parameterwaarde.
SELECT
DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS date_rollup,
COUNT(*) AS total_trips
FROM samples.nyctaxi.trips
GROUP BY date_rollup
Meerdere waarden doorgeven als een tekenreeks
Gebruik ARRAY_CONTAINS, SPLITen TRANSFORM filter op een door komma's gescheiden lijst met waarden die als één tekenreeksparameter zijn doorgegeven.
SPLIT parseert de door komma's gescheiden tekenreeks in een matrix.
TRANSFORM trimt witruimte van elk element.
ARRAY_CONTAINS controleert of de tabelwaarde wordt weergegeven in de resulterende matrix.
SELECT * FROM samples.nyctaxi.trips WHERE
array_contains(
TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),
CAST(dropoff_zip AS STRING)
)
Notitie
Dit voorbeeld werkt voor tekenreekswaarden. Als u andere gegevenstypen wilt gebruiken, verpakt u de TRANSFORM bewerking met een CAST om de elementen te converteren naar het gewenste type.
Syntax-migratie referentie
Gebruik deze tabel bij het converteren van query's van mustache-syntaxis naar benoemde parametermarkeringen. Zie de syntaxis van de mustache-parameter voor meer informatie over de verouderde syntaxis.
| Gebruiksituatie | Mustache-syntaxis | Benoemde parametersyntaxis |
|---|---|---|
| Filteren op datum | WHERE date_field < '{{date_param}}' |
WHERE date_field < :date_param |
| Filteren op getal | WHERE price < {{max_price}} |
WHERE price < :max_price |
| Tekenreeksen vergelijken | WHERE region = '{{region_param}}' |
WHERE region = :region_param |
| Een tabel opgeven | SELECT * FROM {{table_name}} |
SELECT * FROM IDENTIFIER(:table) — gebruik de volledige naamruimte op drie niveaus |
| Catalogus, schema en tabel opgeven | SELECT * FROM {{catalog}}.{{schema}}.{{table}} |
SELECT * FROM IDENTIFIER(:catalog \|\| '.' \|\| :schema \|\| '.' \|\| :table) |
| Een tekenreeks opmaken op basis van meerdere parameters | "({{area_code}}) {{phone_number}}" |
format_string("(%d) %d", :area_code, :phone_number) |
| Een interval maken | SELECT INTERVAL {{p}} MINUTE |
SELECT CAST(format_string("INTERVAL '%s' MINUTE", :param) AS INTERVAL MINUTE) |