Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mit benannten Parametermarkern können Sie variablen Werte zur Laufzeit in SQL-Abfragen einfügen. Anstelle von hartcodierten spezifischen Werten definieren Sie eingegebene Platzhalter, die Benutzer beim Ausführen der Abfrage ausfüllen. Dies verbessert die Wiederverwendung von Abfragen, verhindert die SQL-Einfügung und erleichtert das Erstellen flexibler, interaktiver Abfragen.
Benannte Parametermarkierungen funktionieren in den folgenden Databricks-Oberflächen:
- SQL-Editor (neu und legacy)
- Notebooks
- AI/BI Dashboard Datensatz-Editor
- Genie-Räume
Hinzufügen einer benannten Parametermarkierung
Fügen Sie einen Parameter ein, indem Sie einen Doppelpunkt gefolgt von einem Parameternamen eingeben, zum Beispiel :parameter_name. Wenn Sie einer Abfrage eine benannte Parametermarkierung hinzufügen, wird ein Widget angezeigt, in dem Sie den Parametertyp und den Wert festlegen können. Siehe "Arbeiten mit Parameter-Widgets".
In diesem Beispiel wird eine hartcodierte Abfrage in einen benannten Parameter konvertiert.
Abfrage wird gestartet:
SELECT
trip_distance,
fare_amount
FROM
samples.nyctaxi.trips
WHERE
fare_amount < 5
- Löschen Sie
5aus derWHEREKlausel. - Geben Sie
:fare_parameteran dessen Stelle ein. Die letzte Zeile solltefare_amount < :fare_parametergelesen werden. - Klicken Sie auf das Zahnradsymbol in der Nähe des Parameter-Widgets.
- Legen Sie den Typ auf Dezimalzahl fest.
- Geben Sie einen Wert in das Parameter-Widget ein, und klicken Sie auf "Änderungen übernehmen".
- Klicken Sie auf Speichern.
Parametertypen
Legen Sie den Parametertyp im Bereich "Parametereinstellungen" fest. Der Typ bestimmt, wie Databricks den Wert zur Laufzeit interpretiert und verarbeitet.
| Typ | Beschreibung |
|---|---|
| String | Freiformtext. Backslash, einzelnes und doppeltes Anführungszeichen werden automatisch escaped. Databricks fügt Anführungszeichen um den Wert hinzu. |
| Integer | Ganzzahlwert. |
| Decimal | Numerischer Wert, der Bruchwerte unterstützt. |
| Datum | Datumswert Verwendet eine Kalenderauswahl und setzt standardmäßig das aktuelle Datum. |
| Timestamp | Datums- und Uhrzeitwert. Verwendet eine Kalenderauswahl und als Standard das aktuelle Datum und die Uhrzeit. |
Beispiele für benannte Parametersyntax
Die folgenden Beispiele zeigen allgemeine Muster für benannte Parametermarkierungen.
Einfügen eines Datums
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
Einfügen einer Zahl
SELECT
o_orderdate AS Date,
o_orderpriority AS Priority,
o_totalprice AS Price
FROM
samples.tpch.orders
WHERE
o_totalprice > :num_param
Einfügen eines Feldnamens
Verwenden Sie die IDENTIFIER Funktion, um einen Spaltennamen als Parameter zu übergeben. Der Parameterwert sollte ein Spaltenname aus der Tabelle sein, die in der Abfrage verwendet wird.
SELECT * FROM samples.tpch.orders
WHERE IDENTIFIER(:field_param) < 10000
Einfügen von Datenbankobjekten
Verwenden Sie die IDENTIFIER Funktion mit mehreren Parametern, um einen Katalog, ein Schema und eine Tabelle zur Laufzeit anzugeben.
SELECT *
FROM IDENTIFIER(:catalog || '.' || :schema || '.' || :table)
Siehe IDENTIFIER Klausel.
Verketten mehrerer Parameter
Verwenden Sie format_string, um Parameter in einer einzelnen formatierten Zeichenfolge zu kombinieren. Siehe format_string Funktion.
SELECT o_orderkey, o_clerk
FROM samples.tpch.orders
WHERE o_clerk LIKE format_string('%s%s', :title, :emp_number)
Arbeiten mit JSON-Zeichenfolgen
Verwenden Sie die from_json Funktion , um einen Wert aus einer JSON-Zeichenfolge mithilfe eines Parameters als Schlüssel zu extrahieren. Indem man a als Wert für :param einsetzt, ergibt es 1.
SELECT from_json('{"a": 1}', 'map<string, int>') [:param]
Ein Intervall erstellen
Wird CAST verwendet, um einen Parameterwert in einen INTERVAL Typ für zeitbasierte Berechnungen zu konvertieren. Siehe Intervalltyp.
SELECT CAST(:param AS INTERVAL MINUTE)
Hinzufügen eines Datumsbereichs mit .min und .max
Datums- und Zeitstempelparameter unterstützen ein Bereichs-Widget. Verwenden Sie .min und .max, um auf den Anfang und das Ende des Bereichs zuzugreifen.
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN :date_range.min AND :date_range.max
Legen Sie den Parametertyp auf Date oder Timestamp und den Widgettyp auf Range fest.
Hinzufügen eines Datumsbereichs mit zwei Parametern
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN CAST(:date_range_min AS TIMESTAMP) AND CAST(:date_range_max AS TIMESTAMP)
Parametrisierung der Rollup-Granularität
Verwenden Sie DATE_TRUNC, um Ergebnisse auf der vom Benutzer ausgewählten Granularitätsebene zu aggregieren. Übergeben DAY, , MONTHoder YEAR als Parameterwert.
SELECT
DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS date_rollup,
COUNT(*) AS total_trips
FROM samples.nyctaxi.trips
GROUP BY date_rollup
Übergeben mehrerer Werte als Zeichenfolge
Verwenden Sie ARRAY_CONTAINS, SPLIT und TRANSFORM, um nach einer durch Kommas getrennten Liste von Werten zu filtern, die als einzelner Zeichenfolgenparameter übergeben werden.
SPLIT analysiert die kommagetrennte Zeichenfolge in ein Array.
TRANSFORM entfernt Leerzeichen von jedem einzelnen Element.
ARRAY_CONTAINS überprüft, ob der Tabellenwert im resultierenden Array angezeigt wird.
SELECT * FROM samples.nyctaxi.trips WHERE
array_contains(
TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),
CAST(dropoff_zip AS STRING)
)
Hinweis
Dieses Beispiel funktioniert für String-Werte. Um andere Datentypen zu verwenden, umschließen Sie den TRANSFORM Vorgang mit einer CAST , um die Elemente in den gewünschten Typ zu konvertieren.
Syntaxmigrationsreferenz
Verwenden Sie diese Tabelle beim Konvertieren von Abfragen aus der Mustache-Syntax in benannte Parametermarkierungen. Weitere Informationen zur Legacy-Syntax finden Sie unter Mustache-Parametersyntax.
| Anwendungsfall | Mustache-Syntax | Syntax des benannten Parameters |
|---|---|---|
| Nach Datum filtern | WHERE date_field < '{{date_param}}' |
WHERE date_field < :date_param |
| Nach Zahl filtern | WHERE price < {{max_price}} |
WHERE price < :max_price |
| Vergleichen von Zeichenfolgen | WHERE region = '{{region_param}}' |
WHERE region = :region_param |
| Eine Tabelle angeben | SELECT * FROM {{table_name}} |
SELECT * FROM IDENTIFIER(:table) — Verwenden des vollständigen Namespaces mit drei Ebenen |
| Angeben von Katalog, Schema und Tabelle | SELECT * FROM {{catalog}}.{{schema}}.{{table}} |
SELECT * FROM IDENTIFIER(:catalog \|\| '.' \|\| :schema \|\| '.' \|\| :table) |
| Formatieren einer Zeichenfolge aus mehreren Parametern | "({{area_code}}) {{phone_number}}" |
format_string("(%d) %d", :area_code, :phone_number) |
| Ein Intervall erstellen | SELECT INTERVAL {{p}} MINUTE |
SELECT CAST(format_string("INTERVAL '%s' MINUTE", :param) AS INTERVAL MINUTE) |