Nota
L'accés a aquesta pàgina requereix autorització. Pots provar d'iniciar sessió o canviar de directori.
L'accés a aquesta pàgina requereix autorització. Pots provar de canviar directoris.
En esta página se explica cómo trabajar con parámetros de consulta en el editor de SQL de Azure Databricks.
Los parámetros de consulta te permiten hacer tus consultas más dinámicas y flexibles insertando valores variables en tiempo de ejecución. En lugar de codificar valores específicos en sus consultas, puede definir parámetros para filtrar datos o modificar la salida en función de la entrada del usuario. Este enfoque mejora la reutilización de consultas, aumenta la seguridad al evitar la inyección de SQL y permite una administración más eficaz de diversos escenarios de datos.
Sintaxis de marcador de parámetro con nombre
Los marcadores de parámetro con nombre son variables de marcador de posición con tipo. Utilice esta sintaxis para escribir consultas en las siguientes partes de la interfaz de usuario de Azure Databricks:
- Editor de SQL (nuevo y heredado)
- Cuadernos
- Editor de conjunto de datos de panel AI/BI
- Espacios de AI/BI Genie
Nota
El editor de conjuntos de datos del panel de AI/BI y el nuevo editor de SQL admiten los siguientes tipos de datos con sintaxis de parámetros con nombre: parámetros numéricos, de fecha y hora. En todas las demás superficies de interfaz de usuario, solo se admiten parámetros de tipo cadena mediante la sintaxis de parámetros con nombre. Para emplear otros tipos de parámetros fuera de estos editores, deben usarse los parámetros mustache.
Inserte parámetros en sus consultas SQL escribiendo dos puntos seguidos de un nombre de parámetro, como :parameter_name. Cuando incluye un marcador de parámetro con nombre en una consulta, aparece un widget en la interfaz de usuario. Puede utilizar el widget para editar el tipo y el nombre del parámetro.
Añadir un marcador de parámetro con nombre a una consulta
Este ejemplo añade un marcador de parámetro a la siguiente consulta:
SELECT
trip_distance,
fare_amount
FROM
samples.nyctaxi.trips
WHERE
fare_amount < 5
Esta consulta devuelve un conjunto de datos que incluye solo importes de tarifa inferiores a cinco dólares. Siga los siguientes pasos para editar la consulta y utilizar un parámetro en lugar del valor codificado (5).
- Elimine el número 5 de la consulta.
- Escriba dos puntos (:) seguidos de la cadena
fare_parameter. La última línea de la consulta actualizada debe decirfare_amount < :fare_parameter. - Haga clic en el
Icono de engranaje cerca del widget de parámetros. El cuadro de diálogo muestra los siguientes campos:
- Palabra clave: palabra clave que representa el parámetro de la consulta. Este campo no se puede modificar. Para cambiar la palabra clave, edite el marcador en la consulta SQL.
- Título: título que aparece sobre el widget. De manera predeterminada, el título es el mismo que la palabra clave.
- Tipo: Los tipos soportados son Texto, Número, Lista desplegable, Fecha, Fecha y hora, y Fecha y hora (con segundos). El valor predeterminado es texto.
- En el cuadro de diálogo, cambie el Tipo a Número.
- Introduzca un número en el widget del parámetro y haga clic en Aplicar cambios.
- Haga clic en Guardar para guardar la consulta.
Ejemplos de sintaxis de parámetros con nombre
En los ejemplos siguientes se muestran algunos casos de uso comunes para los parámetros.
Inserción una fecha
En el ejemplo siguiente se incluye un parámetro Date que limita los resultados de la consulta a los registros después de una fecha específica.
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
Inserción de un número
El siguiente ejemplo incluye un parámetro Número que limita los resultados a los registros en los que el campo o_total_price es mayor que el valor del parámetro proporcionado.
SELECT
o_orderdate AS Date,
o_orderpriority AS Priority,
o_totalprice AS Price
FROM
samples.tpch.orders
WHERE
o_totalprice > :num_param
Inserción de un nombre de campo
En el ejemplo siguiente, field_param se usa con la función IDENTIFIER para proporcionar un valor de umbral para la consulta en tiempo de ejecución. El valor del parámetro debe ser un nombre de columna de la tabla utilizada en la consulta.
SELECT
*
FROM
samples.tpch.orders
WHERE
IDENTIFIER(:field_param) < 10000
Inserción de objetos de base de datos
En el ejemplo siguiente se crean tres parámetros: catalog, schema y table.
SELECT
*
FROM
IDENTIFIER(:catalog || '.' || :schema || '.' || :table)
Consulte la cláusula IDENTIFIER.
Concatenación de varios parámetros
Puede incluir parámetros en otras funciones SQL. Este ejemplo permite al visor seleccionar un título de empleado y un identificador numérico. La consulta usa la función format_string para concatenar las dos cadenas y filtrar por las filas que coinciden. Consulte la format_string función.
SELECT
o_orderkey,
o_clerk
FROM
samples.tpch.orders
WHERE
o_clerk LIKE format_string('%s%s', :title, :emp_number)
Operaciones con cadenas JSON
Puede usar parámetros para extraer un atributo de una cadena JSON. En el ejemplo siguiente se utiliza la función from_json para convertir una cadena JSON en un valor struct. Sustituyendo la cadena a como valor del parámetro (param) se obtiene el atributo 1.
SELECT
from_json('{"a": 1}', 'map<string, int>') [:param]
Crear un intervalo
El tipo INTERVAL representa un intervalo de tiempo y permite realizar operaciones y operaciones aritméticas basadas en el tiempo. En el ejemplo siguiente se usa una CAST función para convertir el parámetro como tipo de intervalo. El valor INTERVAL resultante puede utilizarse para cálculos basados en el tiempo o para filtrar en la consulta.
Consulte INTERVAL type (Tipo ) para obtener detalles completos y sintaxis.
SELECT CAST(:param AS INTERVAL MINUTE)
Añadir un intervalo de fechas
En los ejemplos siguientes se muestra cómo filtrar los registros dentro de un intervalo de fechas. Los parámetros de fecha pueden usar .min atributos y .max para especificar un intervalo. También puede especificar un intervalo mediante dos parámetros de fecha diferentes.
Uso de atributos min y max
Elija un nombre de parámetro. Use
.minpara acceder al valor de intervalo mínimo y.maxpara acceder al valor de intervalo máximo, como en la consulta siguiente:SELECT * FROM samples.nyctaxi.trips WHERE tpep_pickup_datetime BETWEEN :date_range.min AND :date_range.maxEstablezca el tipo de parámetro en
Date.Establezca el tipo de widget en Rango.
Uso de dos parámetros de fecha
En el ejemplo siguiente se usan dos parámetros y start_dateend_date, para establecer un intervalo de fechas.
SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN :start_date AND :end_date
Parametrizar acumulaciones por día, mes o año
El siguiente ejemplo agrega datos de viajes en taxi a un nivel de granularidad parametrizado. La función DATE_TRUNC trunca el valor tpep_pickup_datetime basándose en el valor del parámetro :date_granularity, como , DAY, MONTH o YEAR. La fecha truncada se aliasa como date_rollup y se utiliza en la cláusula GROUP BY.
SELECT DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS
date_rollup,
COUNT(*) AS total_trips
FROM samples.nyctaxi.trips
GROUP BY date_rollup
Utilizar varios valores en una sola consulta
El siguiente ejemplo utiliza la función ARRAY_CONTAINS para filtrar una lista de valores. Las funciones TRANSFORM y SPLIT permiten pasar varios valores separados por comas como parámetro de cadena.
El valor :list_parameter toma una lista de valores separados por comas. La función SPLIT analiza la lista y divide los valores separados por comas en una matriz. La función TRANSFORM transforma cada elemento de la matriz eliminando los espacios en blanco. La función ARRAY_CONTAINS comprueba si el valor dropoff_zip de la tabla trips está contenido en la matriz de valores pasada como list_parameter.
SELECT * FROM samples.nyctaxi.trips WHERE
array_contains(
TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),
dropoff_zip
)
Nota
Este ejemplo funciona para valores de cadena. Para modificar la consulta para otros tipos de datos, como una lista de enteros, envuelva la operación TRANSFORM con una operación CAST para convertir los valores de cadena en el tipo de datos deseado.
Cambios en la sintaxis
La siguiente tabla muestra casos de uso comunes para parámetros, la sintaxis de bigote SQL original de Databricks y la sintaxis equivalente utilizando la sintaxis de marcador de parámetro con nombre.
| Caso de uso de parámetros | Sintaxis de parámetro de bigote | Sintaxis de marcador de parámetro con nombre |
|---|---|---|
| Cargar solo datos anteriores a una fecha especificada | WHERE date_field < '{{date_param}}'Debe incluir comillas alrededor del parámetro de fecha y las llaves. |
WHERE date_field < :date_param |
| Cargar solo datos inferiores a un valor numérico especificado | WHERE price < {{max_price}} |
WHERE price < :max_price |
| Compara dos cadenas | WHERE region = {{region_param}} |
WHERE region = :region_param |
| Especificar la tabla utilizada en una consulta | SELECT * FROM {{table_name}} |
SELECT * FROM IDENTIFIER(:table)Cuando un usuario introduce este parámetro, debe utilizar el espacio de nombres completo de tres niveles para identificar la tabla. |
| Especificar de forma independiente el catálogo, el esquema y la tabla utilizados en una consulta | SELECT * FROM {{catalog}}.{{schema}}.{{table}} |
SELECT * FROM IDENTIFIER(:catalog \|\| '.' \|\| :schema \|\| '.' \|\| :table) |
| Utilizar parámetros como plantilla en una cadena más larga y formateada | "({{area_code}}) {{phone_number}}" Los valores de los parámetros se concatenan automáticamente como una cadena. |
format_string("(%d)%d, :area_code, :phone_number) Consulte Concatenar varios parámetros para ver un ejemplo completo. |
| Crear un intervalo | SELECT INTERVAL {{p}} MINUTE |
SELECT CAST(format_string("INTERVAL '%s' MINUTE", :param) AS INTERVAL MINUTE) |
Sintaxis del parámetro Mustache
Importante
Las siguientes secciones se aplican a la sintaxis de consulta que puede utilizar únicamente en el editor de SQL. Esto significa que si copia y pega una consulta con esta sintaxis en cualquier otra interfaz de Azure Databricks, como un bloc de notas o un editor de conjuntos de datos de cuadros de mando AI/BI, la consulta debe ajustarse manualmente para utilizar marcadores de parámetros con nombre antes de que se ejecute sin errores.
En el editor SQL, cualquier cadena entre llaves dobles {{ }} se trata como un parámetro de consulta. Aparece un widget encima del panel de resultados donde se establece el valor del parámetro. Aunque Azure Databricks suele recomendar el uso de marcadores de parámetros con nombre, algunas funciones solo se admiten mediante la sintaxis de parámetros de bigote.
Utilice la sintaxis de parámetro de bigote para las siguientes funciones:
- Filtros del cuadro de mandos de Legacy
- Parámetros desplegables de valor múltiple
- Parámetros desplegables basados en consultas
Añadir un parámetro de bigote
- Tipo
Cmd + I. El parámetro se inserta en el símbolo de inserción de texto y aparece el cuadro de diálogo Agregar parámetro.- Palabra clave: palabra clave que representa el parámetro de la consulta.
- Título: título que aparece sobre el widget. De manera predeterminada, el título es el mismo que la palabra clave.
- Tipo: los tipos admitidos son Texto, Número, Fecha, Fecha y hora, Fecha y hora (con segundos), Lista desplegable y Lista desplegable basada en consulta. El valor predeterminado es texto.
- Escriba la palabra clave, invalide opcionalmente el título y seleccione el tipo de parámetro.
- Haga clic en Agregar parámetro.
- En el widget de parámetro, establezca el valor del parámetro.
- Haga clic en Aplicar cambios.
- Haga clic en Guardar.
Como alternativa, escriba llaves dobles {{ }} y haga clic en el icono de engranaje cerca del widget de parámetros para editar la configuración.
Para volver a ejecutar la consulta con otro valor de parámetro, escriba el valor en el widget y haga clic en Aplicar cambios.
Edición de un parámetro de consulta
Para editar un parámetro, haga clic en el icono de engranaje situado junto al widget de parámetro. Para evitar que los usuarios que no poseen la consulta cambien el parámetro, haga clic en Mostrar solo resultados. Aparece el cuadro de diálogo del parámetro <Keyword>.
Eliminación de un parámetro de consulta
Para quitar un parámetro de consulta, elimine el parámetro de la consulta. El widget de parámetros desaparece y puede volver a escribir la consulta mediante valores estáticos.
Cambio del orden de los parámetros
Para cambiar el orden en que se muestran los parámetros, puede hacer clic y arrastrar cada parámetro a la posición deseada.
Tipos de parámetros de consulta
Text
Toma una cadena como entrada. Las barras diagonales inversas, las comillas simples y dobles se escapan, y Azure Databricks agrega comillas a este parámetro. Por ejemplo, una cadena como mr's Li"s se transforma en 'mr\'s Li\"s' Un ejemplo de uso de esto podría ser
SELECT * FROM users WHERE name={{ text_param }}
Número
Toma un número como entrada. Un ejemplo de uso de esto podría ser
SELECT * FROM users WHERE age={{ number_param }}
Lista desplegable
Para restringir el ámbito de los posibles valores de parámetro al ejecutar una consulta, usa el tipo de parámetro Lista desplegable. Un ejemplo sería SELECT * FROM users WHERE name='{{ dropdown_param }}'. Cuando se selecciona en el panel de configuración de parámetros, aparece un cuadro de texto donde se especifican los valores permitidos, cada valor separado por una nueva línea. Las listas desplegables son parámetros de texto. Para usar fechas o fechas y horas en la lista desplegable, escríbelas en el formato que requiere el origen de datos. No se aplica escape a las cadenas. Puede elegir entre un único valor o una lista desplegable de varios valores.
- Valor único: se requieren comillas simples alrededor del parámetro.
- Varios valores: alterne la opción Permitir varios valores. En la lista desplegable Comillas, elija si desea dejar los parámetros como especificados (sin comillas) o ajustar los parámetros con comillas simples o dobles. No es necesario agregar comillas alrededor del parámetro si elige comillas.
Cambie la cláusula WHERE para usar la palabra clave IN en la consulta.
SELECT ...
FROM ...
WHERE field IN ( {{ Multi Select Parameter }} )
El widget de selección múltiple de parámetros permite pasar varios valores a la base de datos. Si seleccionas la opción Comillas dobles para el parámetro Cotización, la consulta reflejará el siguiente formato: WHERE IN ("value1", "value2", "value3")
Lista desplegable basada en consulta
Toma el resultado de una consulta como entrada. Tiene el mismo comportamiento que el parámetro Lista desplegable. Debe guardar la consulta de lista desplegable de Databricks SQL para usarla como entrada en otra consulta.
- Haga clic en Lista desplegable basada en consulta en Tipo en el panel de configuración.
- Haga clic en el campo Consulta y seleccione una consulta. Si la consulta de destino devuelve un gran número de registros, el rendimiento se resiente.
Si la consulta de destino devuelve más de una columna, Databricks SQL usa la primera. Si la consulta de destino devuelve columnas name y value, Databricks SQL rellena el widget de selección de parámetros con la columna name, pero ejecuta la consulta con el value asociado.
Por ejemplo, supongamos que la consulta siguiente devuelve los datos de la tabla.
SELECT user_uuid AS 'value', username AS 'name'
FROM users
| valor | nombre |
|---|---|
| 1001 | John Smith |
| 1002 | Jane Doe |
| 1003 | Bobby Tables |
Cuando Azure Databricks ejecuta la consulta, el valor pasado a la base de datos sería 1001, 1002 o 1003.
Fecha y hora
Azure Databricks tiene varias opciones para parametrizar los valores de fecha y marca de tiempo, incluidas las opciones para simplificar la parametrización de intervalos de tiempo. Selecciona entre tres opciones de precisión variable:
| Opción | Precisión | Tipo |
|---|---|---|
| Fecha | Día | DATE |
| Fecha y hora | minute | TIMESTAMP |
| Fecha y hora (con segundos) | second | TIMESTAMP |
Al elegir una opción del parámetro Range, se crean dos parámetros designados por los sufijos .start y .end. Todas las opciones pasan parámetros a la consulta como literales de cadena; Azure Databricks requiere que ajuste los valores de fecha y hora entre comillas simples ('). Por ejemplo:
-- Date parameter
SELECT *
FROM usage_logs
WHERE date = '{{ date_param }}'
-- Date and Time Range parameter
SELECT *
FROM usage_logs
WHERE modified_time > '{{ date_range.start }}' and modified_time < '{{ date_range.end }}'
Los parámetros de fecha usan una interfaz de selección de calendario y pueden tener como valor predeterminado la fecha y hora actuales.
Nota
El parámetro Date Range solo devuelve los resultados correctos para las columnas de tipo DATE. Para las columnas TIMESTAMP, use una de las opciones de Intervalo de fecha y hora.
Valores dinámicos de fecha e intervalo de fechas
Al agregar un parámetro de fecha o intervalo de fechas a la consulta, el widget de selección muestra un icono de rayo azul. Haga clic en él para mostrar valores dinámicos como today, yesterday, this week, last week, last month o last year. Estos valores se actualizan de forma dinámica.
Importante
Las fechas dinámicas y los intervalos de fechas no son compatibles con las consultas programadas.
Uso de parámetros de consulta en paneles
Opcionalmente, las consultas pueden usar parámetros o valores estáticos. Cuando se agrega una visualización basada en una consulta con parámetros a un panel, la visualización se puede configurar para usar una de las siguientes opciones:
Parámetro de widget
Los parámetros de widget son específicos de una única visualización en un panel, aparecen en el panel de visualización y los valores de los parámetros especificados solo se aplican a la consulta subyacente a la visualización.
Parámetro de panel
Los parámetros del panel se pueden aplicar a varias visualizaciones. Al agregar una visualización basada en una consulta con parámetros a un panel, el parámetro se agregará como parámetro de panel de forma predeterminada. Los parámetros del panel se configuran para una o varias visualizaciones en un panel y aparecen en la parte superior del panel. Los valores de parámetro especificados para un parámetro de panel se aplican a las visualizaciones que reutilizan ese parámetro de panel determinado. Un panel puede tener varios parámetros, cada uno de los cuales puede aplicarse a algunas visualizaciones y no a otras.
Valor estático
Los valores estáticos se usan en lugar de un parámetro que responde a los cambios. Los valores estáticos permiten codificar un valor en lugar de un parámetro. Hacen que el parámetro "desaparezca" del panel de control o del widget en el que aparecía anteriormente.
Al agregar una visualización que contiene una consulta parametrizada, puede elegir el título y el origen del parámetro en la consulta de visualización si hace clic en el icono de lápiz adecuado. También puede seleccionar la palabra clave y un valor predeterminado. Consulte Propiedades de parámetro.
Después de agregar una visualización a un panel, acceda a la interfaz de asignación de parámetros haciendo clic en el menú kebab de la parte superior derecha de un widget de panel y, a continuación, haciendo clic en Cambiar configuración del widget.
Propiedades del parámetro
Título: nombre para mostrar que aparece junto al selector de valores en el panel. El valor predeterminado es el parámetro Palabra clave. Para editarlo, haga clic en el icono de lápiz
. Los títulos de los parámetros estáticos del panel no aparecen porque el selector de valores está oculto. Si selecciona Valor estático como Origen del valor, el campo Título aparece atenuado.Palabra clave: literal de cadena de este parámetro en la consulta subyacente. Esto resulta útil para depurar si el panel no devuelve los resultados esperados.
Valor predeterminado: valor usado si no se especifica ningún otro. Para cambiar esto desde la pantalla de consulta, ejecute la consulta con el valor de parámetro deseado y haga clic en el botón Guardar.
Origen del valor: origen del valor del parámetro. Haga clic en el icono del lápiz
para elegir una fuente.- Nuevo parámetro de panel: cree un nuevo parámetro de nivel de panel. Esto le permite establecer un valor de parámetro en un solo lugar en el panel y asignarlo a varias visualizaciones.
- Parámetro de panel existente: asigne el parámetro a un parámetro de panel existente. Debe especificar qué parámetro de panel ya existente.
- Parámetro de widget: muestra un selector de valores dentro del widget de panel. Esto es útil para parámetros únicos que no se comparten entre widgets.
- Valor estático: elija un valor estático para el widget, independientemente de los valores usados en otros widgets. Los valores de parámetro asignados estáticamente no muestran un selector de valores en ningún lugar del panel, que es más compacto. Esto le permite aprovechar la flexibilidad de los parámetros de consulta sin abarrotar la interfaz de usuario en un panel si no se espera que determinados parámetros cambien con frecuencia.
Preguntas más frecuentes (P+F)
- ¿Puedo reutilizar el mismo parámetro varias veces en una sola consulta?
- ¿Puedo usar varios parámetros en una sola consulta?
¿Puedo reutilizar el mismo parámetro varias veces en una sola consulta?
Sí. Use el mismo identificador entre llaves. En este ejemplo se usa el parámetro {{org_id}} dos veces.
SELECT {{org_id}}, count(0)
FROM queries
WHERE org_id = {{org_id}}
¿Puedo usar varios parámetros en una sola consulta?
Sí. Use un nombre único para cada parámetro. En este ejemplo se usan dos parámetros: {{org_id}} y {{start_date}}.
SELECT count(0)
FROM queries
WHERE org_id = {{org_id}} AND created_at > '{{start_date}}'