Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az elnevezett paraméterjelölők lehetővé teszik változó értékek beszúrását az SQL-lekérdezésekbe futásidőben. Meghatározott értékek kemény kódolása helyett olyan beírt helyőrzőket határoz meg, amelyeket a felhasználók a lekérdezés futtatásakor töltenek be. Ez javítja a lekérdezések újrafelhasználását, megakadályozza az SQL-injektálást, és megkönnyíti a rugalmas, interaktív lekérdezések készítését.
Az elnevezett paraméterjelölők a következő Databricks-felületeken működnek:
- SQL-szerkesztő (új és örökölt)
- Notebooks
- AI/BI-irányítópult adatkészlet-szerkesztője
- Genie-ügynökök
Elnevezett paraméterjelölő hozzáadása
Paraméter beszúrásához írja be a kettőspontot, majd egy paraméternevet, például :parameter_name. Ha elnevezett paraméterjelölőt ad hozzá egy lekérdezéshez, megjelenik egy widget, ahol megadhatja a paraméter típusát és értékét. Lásd: Paraméter widgetek használata.
Ez a példa egy hard-coded lekérdezést konvertál elnevezett paraméter használatára.
Lekérdezés indítása:
SELECT
trip_distance,
fare_amount
FROM
samples.nyctaxi.trips
WHERE
fare_amount < 5
- Töröld
5aWHEREzáradékból. - Írja be a
:fare_parameter-t a helyére. Az utolsó sornak így kell kinézniefare_amount < :fare_parameter. - Kattintson a fogaskerék ikonra a paraméter widget közelében.
- Állítsa be a típustdecimális értékre.
- Adjon meg egy értéket a paraméter widgetben, és kattintson a Módosítások alkalmazása gombra.
- Kattintson Mentés.
Paramétertípusok
Adja meg a paramétertípust a paraméterbeállítások panelen. A típus határozza meg, hogy a Databricks hogyan értelmezi és kezeli az értéket futásidőben.
| Típus | Leírás |
|---|---|
| String | Szabad formátumú szöveg. A fordított perjelek, az egy- és a dupla idézőjelek automatikusan feloldódnak. A Databricks idézőjeleket ad hozzá az értékhez. |
| Integer | Egész számérték. |
| decimális | Tört értékeket támogató numerikus érték. |
| Dátum | Dátumérték. Naptárválasztót és alapértelmezett értékeket használ az aktuális dátumhoz. |
| Időbélyeg | Dátum- és időérték. Naptárválasztót és alapértelmezett értékeket használ az aktuális dátumhoz és időponthoz. |
Elnevezett paraméterszintaxis-példák
Az alábbi példák az elnevezett paraméterjelölők gyakori mintáit mutatják be.
Dátum beszúrása
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
Szám beszúrása
SELECT
o_orderdate AS Date,
o_orderpriority AS Priority,
o_totalprice AS Price
FROM
samples.tpch.orders
WHERE
o_totalprice > :num_param
Mezőnév beszúrása
A IDENTIFIER függvény használatával adja át az oszlop nevét paraméterként. A paraméterértéknek a lekérdezésben használt táblából származó oszlopnévnek kell lennie.
SELECT * FROM samples.tpch.orders
WHERE IDENTIFIER(:field_param) < 10000
Adatbázis-objektumok beszúrása
IDENTIFIER A függvény több paraméterrel való használatával futásidőben adhat meg katalógust, sémát és táblázatot.
SELECT *
FROM IDENTIFIER(:catalog || '.' || :schema || '.' || :table)
Lásd: záradék IDENTIFIER.
Több paraméter összefűzve
Paraméterek egyetlen formázott sztringbe való kombinálására használható format_string . Lásd format_string függvényt.
SELECT o_orderkey, o_clerk
FROM samples.tpch.orders
WHERE o_clerk LIKE format_string('%s%s', :title, :emp_number)
JSON-sztringek működése
A függvény használatával from_json kinyerhet egy értéket egy JSON-sztringből egy paraméterrel kulcsként. A a behelyettesítése a :param értékeként visszatér 1.
SELECT from_json('{"a": 1}', 'map<string, int>') [:param]
Intervallum létrehozása
Használja a(z) CAST parancsot, hogy egy paraméterértéket INTERVAL típusúvá alakítson időalapú számításokhoz. Lásd : Intervallum típusa.
SELECT CAST(:param AS INTERVAL MINUTE)
Dátumtartomány hozzáadása .min és .max segítségével
A dátum- és időbélyeg-paraméterek támogatnak egy tartomány widgetet. Használja a .min és .max elemeket a tartomány kezdő és végének eléréséhez.
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN :date_range.min AND :date_range.max
Állítsa be a paraméter típusát Date vagy Timestamp, és a widget típusát Tartomány formában.
Dátumtartomány hozzáadása két paraméter használatával
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN CAST(:date_range_min AS TIMESTAMP) AND CAST(:date_range_max AS TIMESTAMP)
Összegző kimutatás részletességének paraméterezése
Az eredmények felhasználó által kiválasztott részletességi szinten történő összesítésére használható DATE_TRUNC . Adja meg DAY, MONTHvagy YEAR paraméterértékként.
SELECT
DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS date_rollup,
COUNT(*) AS total_trips
FROM samples.nyctaxi.trips
GROUP BY date_rollup
Több érték átadása sztringként
Használja a ARRAY_CONTAINS, SPLIT és TRANSFORM elemeket az olyan vesszővel tagolt listán való szűrésre, amelyet egyetlen szövegparaméterként adtak át.
SPLIT a vesszővel elválasztott sztringet tömbbe elemzi.
TRANSFORM minden egyes elemnél levágja a szóközt.
ARRAY_CONTAINS ellenőrzi, hogy a tábla értéke megjelenik-e az eredményként kapott tömbben.
SELECT * FROM samples.nyctaxi.trips WHERE
array_contains(
TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),
CAST(dropoff_zip AS STRING)
)
Megjegyzés
Ez a példa sztringértékekhez használható. Más adattípusok használatához burkolja a TRANSFORM műveletet egy CAST alkalmazásával, hogy az elemeket a kívánt típussá alakítsa.
Szintaxismigrálási referencia
Ezt a táblázatot akkor használja, ha a lekérdezéseket bajuszszintaxisból nevesített paraméterjelölőkké konvertálja. További információkat az örökölt szintaxisról a Mustache paraméterszintaxis alatt talál.
| Felhasználási eset | Bajusz szintaxisa | Elnevezett paraméter szintaxisa |
|---|---|---|
| Szűrés dátum szerint | WHERE date_field < '{{date_param}}' |
WHERE date_field < :date_param |
| Szűrés szám szerint | WHERE price < {{max_price}} |
WHERE price < :max_price |
| Sztringek összehasonlítása | WHERE region = '{{region_param}}' |
WHERE region = :region_param |
| Adjon meg egy táblát | SELECT * FROM {{table_name}} |
SELECT * FROM IDENTIFIER(:table) — használja a teljes háromszintű névteret |
| Katalógus, séma és tábla megadása | SELECT * FROM {{catalog}}.{{schema}}.{{table}} |
SELECT * FROM IDENTIFIER(:catalog \|\| '.' \|\| :schema \|\| '.' \|\| :table) |
| Sztring formázása több paraméterből | "({{area_code}}) {{phone_number}}" |
format_string("(%d) %d", :area_code, :phone_number) |
| Intervallum létrehozása | SELECT INTERVAL {{p}} MINUTE |
SELECT CAST(format_string("INTERVAL '%s' MINUTE", :param) AS INTERVAL MINUTE) |