Partilhar via


Trabalhar com parâmetros de consulta

Este artigo explica como trabalhar com parâmetros de consulta no editor SQL do Azure Databricks.

Os parâmetros de consulta permitem que você torne suas consultas mais dinâmicas e flexíveis inserindo valores de variáveis em tempo de execução. Em vez de codificar valores específicos em suas consultas, você pode definir parâmetros para filtrar dados ou modificar a saída com base na entrada do usuário. Essa abordagem melhora a reutilização de consultas, aumenta a segurança impedindo a injeção de SQL e permite um tratamento mais eficiente de diversos cenários de dados.

Sintaxe do marcador de parâmetro nomeado

Os marcadores de parâmetros nomeados são variáveis de espaço reservado digitadas. Use esta sintaxe para escrever consultas nas seguintes partes da interface do usuário do Azure Databricks:

  • Editor SQL
  • Notebooks
  • Editor de conjunto de dados do painel de IA/BI
  • Espaços AI/BI Genie (Pré-visualização Pública)

Insira parâmetros em suas consultas SQL digitando dois pontos seguidos por um nome de parâmetro, como :parameter_name. Quando você inclui um marcador de parâmetro nomeado em uma consulta, um widget aparece na interface do usuário. Você pode usar o widget para editar o tipo e o nome do parâmetro.

Um parâmetro nomeado é adicionado a uma consulta SQL. Um widget aparece abaixo do editor SQL

Adicionar um marcador de parâmetro nomeado a uma consulta

Este exemplo adiciona um marcador de parâmetro à seguinte consulta:


SELECT
  trip_distance,
  fare_amount
FROM
  samples.nyctaxi.trips
WHERE
  fare_amount < 5

Essa consulta retorna um conjunto de dados que inclui apenas valores de tarifa inferiores a cinco dólares. Use as etapas a seguir para editar a consulta para usar um parâmetro em vez do valor codificado (5).

  1. Exclua o número 5 da consulta.
  2. Digite dois pontos (:) seguidos pela cadeia de caracteres fare_parameter. A última linha da sua consulta atualizada deve dizer fare_amount < :fare_parameter.
  3. Clique no Ícone de engrenagem ícone de engrenagem perto do widget de parâmetros. A caixa de diálogo mostra os seguintes campos:
    • Palavra-chave: A palavra-chave que representa o parâmetro na consulta. Não é possível editar este campo. Para alterar a palavra-chave, edite o marcador na consulta SQL.
    • Título: O título que aparece sobre o widget. Por padrão, o título é o mesmo que a palavra-chave.
    • Tipo: Os tipos suportados são Texto, Número, Lista Suspensa, Data, Data e Hora e Data e Hora (com Segundos). O padrão é Text.
  4. Na caixa de diálogo, altere o Tipo para Número.
  5. Insira um número no widget de parâmetros e clique em Aplicar alterações.
  6. Clique em Guardar para guardar a consulta.

Exemplos de sintaxe de parâmetros nomeados

Os exemplos a seguir demonstram alguns casos de uso comuns para parâmetros.

Inserir uma data

O exemplo a seguir inclui um parâmetro Date que limita os resultados da consulta a registros após uma data 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

Inserir um número

O exemplo a seguir inclui um parâmetro Number que limita os resultados a registros em que o o_total_price campo é maior do que o valor do parâmetro fornecido.


SELECT
  o_orderdate AS Date,
  o_orderpriority AS Priority,
  o_totalprice AS Price
FROM
  samples.tpch.orders
WHERE
  o_totalprice > :num_param

Inserir um nome de campo

No exemplo a seguir, o field_param é usado com a IDENTIFIER função para fornecer um valor limite para a consulta em tempo de execução. O valor do parâmetro deve ser um nome de coluna da tabela usada na consulta.


SELECT
  *
FROM
  samples.tpch.orders
WHERE
  IDENTIFIER(:field_param) < 10000

Inserir objetos de banco de dados

O exemplo a seguir cria três parâmetros: catalog, schemae table.


SELECT
  *
FROM
  IDENTIFIER(:catalog || '.' || :schema || '.' || :table)

Consulte a cláusula IDENTIFIER.

Concatenar vários parâmetros

Você pode incluir parâmetros em outras funções SQL. Este exemplo permite que o visualizador selecione um título de funcionário e um ID de número. A consulta usa a format_string função para concatenar as duas cadeias de caracteres e filtrar as linhas correspondentes. Veja format_string função.


SELECT
  o_orderkey,
  o_clerk
FROM
  samples.tpch.orders
WHERE
  o_clerk LIKE format_string('%s%s', :title, :emp_number)

Trabalhar com cadeias de caracteres JSON

Você pode usar parâmetros para extrair um atributo de uma cadeia de caracteres JSON. O exemplo a seguir usa a from_json função para converter a cadeia de caracteres JSON em um valor struct. Substituir a cadeia de caracteres a como o valor para o parâmetro (param) retorna o atributo 1.

SELECT
  from_json('{"a": 1}', 'map<string, int>') [:param]

Criar um intervalo

O INTERVAL tipo representa um período de tempo e permite executar aritmética e operações baseadas no tempo. O exemplo a seguir inclui o parâmetro dentro de uma format_string função que, em seguida, é convertida como um tipo de intervalo. O valor resultante INTERVAL pode ser usado para cálculos baseados no tempo ou filtragem na consulta.

Consulte Tipo de intervalo para obter detalhes completos e sintaxe.

SELECT CAST(format_string("INTERVAL '%s' MINUTE", :param) AS INTERVAL MINUTE)

Adicionar um intervalo de datas

O exemplo a seguir mostra como adicionar um intervalo de datas parametrizado para selecionar registros em um período de tempo específico.

SELECT * FROM samples.nyctaxi.trips
WHERE tpep_pickup_datetime
BETWEEN :start_date AND :end_date

Parametrizar pacotes cumulativos por dia, mês ou ano

O exemplo a seguir agrega dados de viagem de táxi em um nível parametrizado de granularidade. A DATE_TRUNC função trunca o tpep_pickup_datetime valor com base no valor do :date_granularity parâmetro, como DAY, MONTHou YEAR. A data truncada é aliased como date_rollup e usada na GROUP BY cláusula.

SELECT DATE_TRUNC(:date_granularity, tpep_pickup_datetime) AS
  date_rollup,
  COUNT(*) AS total_trips
FROM samples.nyctaxi.trips
GROUP BY date_rollup

Usar vários valores em uma única consulta

O exemplo a seguir usa a ARRAY_CONTAINS função para filtrar uma lista de valores. As TRANSFORMfunções , e SPLIT permitem que vários valores separados por vírgulas sejam passados como um parâmetro de cadeia de caracteres.

O :list_parameter valor usa uma lista de valores separados por vírgula. A SPLIT função analisa essa lista, dividindo os valores separados por vírgulas em uma matriz. A TRANSFORM função transforma cada elemento na matriz removendo qualquer espaço em branco. A ARRAY_CONTAINS função verifica se o dropoff_zip valor da tabela está contido na matriz de valores passados trips como o list_parameter.


SELECT * FROM samples.nyctaxi.trips WHERE
  array_contains(
    TRANSFORM(SPLIT(:list_parameter, ','), s -> TRIM(s)),
    dropoff_zip
  )

Nota

Este exemplo funciona para valores de cadeia de caracteres. Para modificar a consulta para outros tipos de dados, como uma lista de inteiros, envolva a TRANSFORM operação com uma CAST operação para converter os valores de cadeia de caracteres no tipo de dados desejado.

Alterações de sintaxe

A tabela a seguir mostra casos de uso comuns para parâmetros, a sintaxe original do bigode SQL do Databricks e a sintaxe equivalente usando a sintaxe do marcador de parâmetro nomeado.

Caso de uso de parâmetros Sintaxe do parâmetro Mustache Sintaxe do marcador de parâmetro nomeado
Carregar apenas dados antes de uma data especificada WHERE date_field < '{{date_param}}'

Você deve incluir aspas em torno do parâmetro date e colchetes.
WHERE date_field < :date_param
Carregar apenas dados inferiores a um valor numérico especificado WHERE price < {{max_price}} WHERE price < :max_price
Comparar duas cadeias de caracteres WHERE region = {{region_param}} WHERE region = :region_param
Especificar a tabela usada em uma consulta SELECT * FROM {{table_name}} SELECT * FROM IDENTIFIER(:table)

Quando um usuário insere esse parâmetro, ele deve usar o namespace completo de três níveis para identificar a tabela.
Especificar independentemente o catálogo, o esquema e a tabela usados em uma consulta SELECT * FROM {{catalog}}.{{schema}}.{{table}} SELECT * FROM IDENTIFIER(:catalog \|\| '.' \|\| :schema \|\| '.' \|\| :table)
Usar parâmetros como um modelo em uma cadeia de caracteres formatada mais longa "({{area_code}}) {{phone_number}}"

Os valores dos parâmetros são concatenados automaticamente como uma cadeia de caracteres.
format_string("(%d)%d, :area_code, :p número_hone)

Consulte Concatenar vários parâmetros para obter um exemplo completo.
Criar um intervalo SELECT INTERVAL {{p}} MINUTE SELECT CAST(format_string("INTERVAL '%s' MINUTE", :param) AS INTERVAL MINUTE)

Sintaxe do parâmetro Mustache

Importante

As seções a seguir se aplicam à sintaxe de consulta que você pode usar somente no editor SQL. Isso significa que, se você copiar e colar uma consulta usando essa sintaxe em qualquer outra interface do Azure Databricks, como um bloco de anotações ou um editor de conjunto de dados do painel AI/BI, a consulta deverá ser ajustada manualmente para usar marcadores de parâmetros nomeados antes de ser executada sem erros.

No editor SQL, qualquer cadeia de caracteres entre chaves duplas {{ }} é tratada como um parâmetro de consulta. Um widget aparece acima do painel de resultados onde você define o valor do parâmetro. Embora o Azure Databricks geralmente recomende o uso de marcadores de parâmetros nomeados, algumas funcionalidades só são suportadas usando a sintaxe do parâmetro bigode.

Use a sintaxe do parâmetro bigode para a seguinte funcionalidade:

Adicionar um parâmetro de bigode

  1. Escreva Cmd + I. O parâmetro é inserido no cursor do texto e a caixa de diálogo Adicionar parâmetro é exibida.
    • Palavra-chave: A palavra-chave que representa o parâmetro na consulta.
    • Título: O título que aparece sobre o widget. Por padrão, o título é o mesmo que a palavra-chave.
    • Tipo: Os tipos suportados são Texto, Número, Data, Data e Hora, Data e Hora (com Segundos), Lista Suspensa e Lista Suspensa Baseada em Consulta. O padrão é Text.
  2. Digite a palavra-chave, opcionalmente substitua o título e selecione o tipo de parâmetro.
  3. Clique em Adicionar parâmetro.
  4. No widget de parâmetro, defina o valor do parâmetro.
  5. Clique em Aplicar alterações.
  6. Clique em Guardar.

Como alternativa, digite chaves duplas e clique no ícone de {{ }} engrenagem perto do widget de parâmetros para editar as configurações.

Para executar novamente a consulta com um valor de parâmetro diferente, insira o valor no widget e clique em Aplicar alterações.

Editar um parâmetro de consulta

Para editar um parâmetro, clique no ícone de engrenagem ao lado do widget de parâmetro. Para impedir que os usuários que não são proprietários da consulta alterem o parâmetro, clique em Mostrar Somente Resultados. A <Keyword> caixa de diálogo do parâmetro é exibida.

Remover um parâmetro de consulta

Para remover um parâmetro de consulta, exclua-o da consulta. O widget de parâmetros desaparece e você pode reescrever sua consulta usando valores estáticos.

Alterar a ordem dos parâmetros

Para alterar a ordem em que os parâmetros são mostrados, você pode clicar e arrastar cada parâmetro para a posição desejada.

Tipos de parâmetros de consulta

Texto

Usa uma cadeia de caracteres como entrada. Barras invertidas, aspas simples e duplas são escapadas, e o Azure Databricks adiciona aspas a esse parâmetro. Por exemplo, uma cadeia de caracteres como mr's Li"s é transformada em 'mr\'s Li\"s' Um exemplo de uso disso pode ser

SELECT * FROM users WHERE name={{ text_param }}

Número

Usa um número como entrada. Um exemplo de utilização desta medida poderia ser:

SELECT * FROM users WHERE age={{ number_param }}

Para restringir o escopo de possíveis valores de parâmetro ao executar uma consulta, use o tipo de parâmetro Lista suspensa. Um exemplo seria SELECT * FROM users WHERE name='{{ dropdown_param }}'. Quando selecionado no painel de configurações de parâmetros, uma caixa de texto aparece onde você insere os valores permitidos, cada valor separado por uma nova linha. As listas suspensas são parâmetros de texto. Para usar datas ou datas e horas na sua Lista Suspensa, insira-as no formato exigido pela fonte de dados. As cadeias de caracteres não são escapadas. Você pode escolher entre uma lista suspensa de valor único ou de vários valores.

  • Valor único: aspas simples ao redor do parâmetro são necessárias.
  • Vários valores: alterne a opção Permitir vários valores . Na lista suspensa Citações, escolha se deseja deixar os parâmetros como inseridos (sem aspas) ou envolver os parâmetros com aspas simples ou duplas. Você não precisa adicionar aspas ao redor do parâmetro se escolher aspas.

Altere sua WHERE cláusula para usar a IN palavra-chave em sua consulta.

SELECT ...
FROM   ...
WHERE field IN ( {{ Multi Select Parameter }} )

O widget de seleção múltipla de parâmetros permite que você passe vários valores para o banco de dados. Se você selecionar a opção Aspas duplas para o parâmetro Quotation , sua consulta refletirá o seguinte formato: WHERE IN ("value1", "value2", "value3")

Lista suspensa baseada em consulta

Toma o resultado de uma consulta como sua entrada. Ele tem o mesmo comportamento que o parâmetro Dropdown List . Você deve salvar a consulta da lista suspensa Databricks SQL para usá-la como uma entrada em outra consulta.

  1. Clique em Lista suspensa baseada em consulta em Tipo no painel de configurações.
  2. Clique no campo Consulta e selecione uma consulta. Se a consulta de destino retornar um grande número de registros, o desempenho será prejudicado.

Se sua consulta de destino retornar mais de uma coluna, o Databricks SQL usará a primeira . Se sua consulta de destino retornar name e value colunas, o Databricks SQL preencherá o widget de seleção de parâmetros com a name coluna, mas executará a consulta com o .value

Por exemplo, suponha que a consulta a seguir retorna os dados na tabela.

SELECT user_uuid AS 'value', username AS 'name'
FROM users
valor nome
1001 John Smith
1002 Joana Doe
1003 Mesas Bobby

Quando o Azure Databricks executa a consulta, o valor passado para o banco de dados seria 1001, 1002 ou 1003.

Data e Hora

O Azure Databricks tem várias opções para parametrizar valores de carimbo de data e hora, incluindo opções para simplificar a parametrização de intervalos de tempo. Selecione entre três opções de precisão variável:

Opção Precisão Type
Date Dia DATE
Data e Hora minuto TIMESTAMP
Data e Hora (com segundos) segundo TIMESTAMP

Ao escolher uma opção de parâmetro Range , você cria dois parâmetros designados por .start e .end sufixos. Todas as opções passam parâmetros para sua consulta como literais de cadeia de caracteres; O Azure Databricks requer que você envolva valores de data e hora entre aspas simples ('). Por exemplo:

-- 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 }}'

Os parâmetros de data usam uma interface de seleção de calendário e usam como padrão a data e hora atuais.

Nota

O parâmetro Date Range retorna apenas resultados corretos para colunas do DATE tipo. Para TIMESTAMP colunas, use uma das opções Intervalo de Data e Hora.

Valores dinâmicos de data e intervalo de datas

Quando você adiciona um parâmetro de data ou intervalo de datas à sua consulta, o widget de seleção mostra um ícone de raio azul. Clique nele para exibir valores dinâmicos como today, yesterday, , last weekthis week, last monthou last year. Esses valores são atualizados dinamicamente.

Importante

Datas dinâmicas e intervalos de datas não são compatíveis com consultas agendadas.

Usando parâmetros de consulta em painéis

Opcionalmente, as consultas podem usar parâmetros ou valores estáticos. Quando uma visualização baseada em uma consulta parametrizada é adicionada a um painel, a visualização pode ser configurada para usar um:

  • Parâmetro do widget

    Os parâmetros do widget são específicos para uma única visualização em um painel, aparecem no painel de visualização e os valores de parâmetro especificados se aplicam somente à consulta subjacente à visualização.

  • Parâmetro do painel

    Os parâmetros do painel podem ser aplicados a várias visualizações. Quando você adiciona uma visualização com base em uma consulta parametrizada a um painel, o parâmetro será adicionado como um parâmetro de painel por padrão. Os parâmetros do painel são configurados para uma ou mais visualizações em um painel e aparecem na parte superior do painel. Os valores de parâmetro especificados para um parâmetro dashboard aplicam-se a visualizações que reutilizam esse parâmetro específico do dashboard. Um painel pode ter vários parâmetros, cada um dos quais pode ser aplicado a algumas visualizações e não a outras.

  • Valor estático

    Os valores estáticos são usados no lugar de um parâmetro que responde às alterações. Os valores estáticos permitem codificar um valor no lugar de um parâmetro. Eles fazem com que o parâmetro "desapareça" do painel ou widget onde ele aparecia anteriormente.

Ao adicionar uma visualização contendo uma consulta parametrizada, você pode escolher o título e a origem do parâmetro na consulta de visualização clicando no ícone de lápis apropriado. Você também pode selecionar a palavra-chave e um valor padrão. Consulte Propriedades do parâmetro.

Depois de adicionar uma visualização a um painel, acesse a interface de mapeamento de parâmetros clicando no menu kebab no canto superior direito de um widget de painel e, em seguida, clicando em Alterar configurações do widget.

Propriedades do parâmetro

  • Título: O nome para exibição que aparece ao lado do seletor de valores no painel. O padrão é o parâmetro Keyword. Para editá-lo, clique no ícone Ícone de lápisde lápis . Os títulos não são exibidos para parâmetros estáticos do painel porque o seletor de valores está oculto. Se você selecionar Valor estático como Fonte de valor, o campo Título ficará acinzentado.

  • Palavra-chave: A cadeia de caracteres literal para este parâmetro na consulta subjacente. Isso é útil para depuração se o painel não retornar os resultados esperados.

  • Valor padrão: o valor usado se nenhum outro valor for especificado. Para alterar isso na tela de consulta, execute a consulta com o valor de parâmetro desejado e clique no botão Salvar .

  • Fonte do valor: A origem do valor do parâmetro. Clique no ícone Ícone de lápis de lápis para escolher uma fonte.

    • Novo parâmetro do painel: crie um novo parâmetro no nível do painel. Isso permite definir um valor de parâmetro em um só lugar no painel e mapeá-lo para várias visualizações.
    • Parâmetro do painel existente: mapeie o parâmetro para um parâmetro do painel existente. Você deve especificar qual parâmetro de painel pré-existente.
    • Parâmetro do widget: exibe um seletor de valor dentro do widget do painel. Isso é útil para parâmetros únicos que não são compartilhados entre widgets.
    • Valor estático: escolha um valor estático para o widget, independentemente dos valores usados em outros widgets. Os valores de parâmetros mapeados estaticamente não exibem um seletor de valores em nenhum lugar do painel, que é mais compacto. Isso permite que você aproveite a flexibilidade dos parâmetros de consulta sem sobrecarregar a interface do usuário em um painel quando não se espera que determinados parâmetros sejam alterados com frequência.

    Alterar mapeamento de parâmetros

Perguntas Mais Frequentes (FAQ)

Posso reutilizar o mesmo parâmetro várias vezes em uma única consulta?

Sim. Use o mesmo identificador entre parênteses. Este exemplo usa o {{org_id}} parâmetro duas vezes.

SELECT {{org_id}}, count(0)
FROM queries
WHERE org_id = {{org_id}}

Posso usar vários parâmetros em uma única consulta?

Sim. Use um nome exclusivo para cada parâmetro. Este exemplo usa dois parâmetros: {{org_id}} e {{start_date}}.

SELECT count(0)
FROM queries
WHERE org_id = {{org_id}} AND created_at > '{{start_date}}'