Usando parâmetros SQL no editor de consulta nativo.

Em casos de uso avançados, você pode usar parâmetros SQL para filtrar consultas nativas no painel de visualização.

O console do criador tem a capacidade flexível de permitir variáveis em consultas nativas (SQL). Isso permite que você substitua dinamicamente os valores em suas consultas usando widgets de filtro ou por meio do URL da consulta.

02-widget

As opções e configurações de suas variáveis aparecerão no painel lateral Variáveis do criador de consultas nativo assim que você definir uma variável. Então, como você define uma variável?

01-variables

Definindo variáveis

Digitar em sua consulta nativa cria uma variável chamada variable_name. As variáveis podem receber tipos no painel lateral, o que muda seu comportamento. Todos os tipos de variáveis diferentes de "Filtro de campos" farão com que um widget de filtro seja colocado nesta questão correspondendo ao tipo de variável escolhido. Quando um valor é selecionado por meio de um widget de filtro, esse valor substitui a variável correspondente no modelo SQL, onde quer que apareça. Se você tiver vários widgets de filtro, poderá clicar e arrastar em qualquer um deles para movê-los e reordená-los.

Este exemplo define uma variável chamada cat, permitindo que você altere dinamicamente a cláusula WHERE nesta consulta:

SELECT count(*)
FROM products
WHERE category =

O tipo de variável do Filtro de Campos

Definir uma variável para o tipo "Filtro de campo" permite mapeá-la para um campo em qualquer tabela no banco de dados atual e permite exibir um widget de filtro suspenso preenchido com os valores do campo ao qual você conectou. Variáveis de filtro de campo também. permitem que você conecte sua pergunta SQL a um filtro de painel, se você colocá-la em um painel.

Uma variável de filtro de campo insere SQL semelhante ao gerado pelo construtor de consulta GUI ao adicionar filtros em conlunas existentes. Isso é útil por que permite fazer coisas como inserir filtros de intervalo de datas dinâmicos em sua consulta nativa. Ao adicionar um filtro de campo, você deve veincular essa variável a uma coluna específica. As variáveis de filtro de campos devem ser usadas dentro de uma cláusula WHERE no SQL ou uma cláusula $match no MongoDB.

Observação:

  • Os apelidos de tabela não são suportados, porque os filtros de campo geram SQL com base no campo mapeado.
  • Alguns bancos de dados requerem o esquema na cláusula FROM. Um exemplo para Oracle seria FROM "schema". "Table". No BigQuery, são necessários retrocesso, como FROM `dataset_name.table`.

Exemplo:

SELECT count(*)
FROM products
WHERE

Criação de filtros de pergunta SQL usando variáveis de filtro de campo

Primeiro, insira uma tag de variável em seu SQL, como . Em seguida, no painel lateral, selecione o tipo de variável “Filtro de campo” e escolha para qual campo mapear sua variável. Para exibir um widget de filtro, você terá que escolher um campo cujo “Tipo” na seção “Modelo de dados” do painel de administração seja um dos seguintes:

  • Categoria
  • Cidade
  • Chave da entidade
  • Nome da Entidade
  • Chave Estrangeira
  • Estado
  • UNIX Timestamp (segundos)
  • UNIX Timestamp (milessegundos)
  • CEP ou Código postal

O campo também pode ser uma data e hora, que pode ser deixada como "Nenhum tipo especial" no modelo de dados.

Em seguida, você verá um menu suspenso denominado "Widget", que permitirá que você escolha o tipo de widget de filtro que deseja para sua pergunta, o que é especialmente útil para campos de data e hora. Você pode selecionar “Nenhum” se não quiser um widget para a pergunta, o que você pode fazer, por exemplo, se quiser apenas permitir que esta pergunta seja mapeada para um filtro de painel (veja mais sobre isso abaixo).

Observação: Se você não estiver vendo a opção de exibir um widget de filtro, certifique-se de que o campo mapeado esteja definido para um dos tipos acima. Se ainda não estiver funcionando corretamente, entre em contato com nossa equipe de suporte para sincronizar novamente os valores armazenados em cache para aquele campo.

Os widgets de filtro não podem ser exibidos se a variável for mapeada para um campo marcado como:

  • URL da imagem do avatar
  • Descrição
  • Email
  • Enum
  • Campo contendo JSON
  • Imagem URL
  • Número
  • Latitude
  • Longitude
  • URL

Definir um valor padrão

Se você inserir um valor padrão para o filtro de campo, esse valor será selecionado no filtro sempre que você voltar a esta questão. Porém, se você limpar o filtro, nenhum valor será passado (ou seja, nem mesmo o valor padrão). O valor padrão não tem efeito no comportamento de sua pergunta SQL quando exibida em um painel.

Valor padrão na consulta

Você também pode definir valores padrão diretamente em sua consulta, que são úteis ao definir valores padrão complexos. Observe que o hash (#) pode precisar ser substituído pela sintaxe de comentário do banco de dados que você está usando. Alguns bancos de dados usam traços duplos (--) como sintaxe de comentário.

Exemplo atual para filtro de data:

SELECT p.*
FROM products p
WHERE p.createdAt = [[ #]]CURRENT_DATE()

Conectando a questão SQL ao filtro do painel

Para que uma pergunta SQL / nativa salva possa ser usada com um filtro do painel, ela deve conter pelo menos um filtro de campo. O tipo de filtro de painel que pode ser usado com a pergunta SQL depende do campo que você mapeia para os filtros de campo da pergunta. Por exemplo, se você tiver um filtro de campo chamado e mapeá-lo para um campo Estado, poderá mapear um filtro de painel de localização para sua pergunta SQL. Neste exemplo, você criaria um novo painel ou iria para um existente, clicaria no botão "Editar", adicionaria a pergunta SQL que contém o filtro de campo de estado, adicionaria um novo filtro de painel ou editaria um filtro de localização existente e clique em a lista suspensa no cartão de perguntas SQL para ver o filtro do campo Estado.

state-field-filter

Cláudulas opcionais

Para tornar uma cláusula opcional em sua consulta nativa, digite [[colchetes em torno de uma ]]. Se a variável receber um valor, a cláusula inteira será inserida no modelo. Caso contrário, toda a cláusula será ignorada.

Neste exemplo, se nenhum valor for fornecido a cat de seu widget de filtro ou URL, a consulta apenas selecionará todas as linhas da tabela de produtos. Mas se cat tiver um valor, como Widget, então a consulta só pegará os produtos com um tipo de categoria de Widget:

SELECT count(*)
FROM products
[[WHERE category = ]]

Para usar várias cláusulas opcionais, você deve incluir pelo menos uma cláusula WHERE regular seguida por cláusulas opcionais, cada uma começando com AND.

Exemplo: 

SELECT count(*)
FROM products
WHERE True
[[AND id = ]]
[[AND category = ]]

Ao usar um filtro de campo, o nome da coluna não deve ser incluído no SQL. Em vez disso, a variável deve ser mapeada para um campo no painel lateral.

Exemplo:

SELECT count(*)
FROM products
WHERE True
[[AND ]]
[[AND ]]