Validador de SQL de integração contínua

O validador de SQL da integração contínua (CI) verifica se as dimensões nas suas análises são executadas corretamente no banco de dados. Para isso, o validador de SQL executa uma série de consultas nas análises do seu projeto do LookML.

Por padrão, o validador de SQL realiza as seguintes tarefas:

  1. Para cada análise no seu projeto, o validador de SQL executa uma consulta de análise que inclui todas as dimensões da análise.
  2. Se o Looker retornar um erro para a consulta de análise, o validador de SQL vai executar uma consulta de análise separada para cada dimensão da análise.

Se você não quiser que o validador de SQL teste todas as dimensões em cada análise, é possível fazer uma ou mais das seguintes ações:

Consulte a seção Opções do validador de SQL desta página para detalhes sobre as opções que podem ser configuradas ao criar ou editar um CI IC. Para informações sobre como executar o validador de SQL, consulte a página de documentação Execução de conjuntos de testes de integração contínua.

Na página de resultados da execução, o validador de SQL mostra cada erro de SQL, categorizado por dimensão e análise, com um link para o LookML problemático e um link de análise daqui para depuração:

Página de resultados da integração contínua mostrando descobertas do SQL Validator

Consumo de recursos

O validador de SQL foi projetado para consumir o mínimo de recursos no Looker e no data warehouse. Todas as consultas do validador de SQL incluem uma cláusula LIMIT 0 e WHERE 1=2. Essas cláusulas instruem o planejador de consultas no data warehouse a não processar dados, mas a verificar a validade do SQL.

Com o BigQuery, por exemplo, esse tipo de consulta é semelhante à execução de uma consulta de simulação no BigQuery. Para o BigQuery, as consultas LIMIT 0 não verificam os dados. Portanto, não é necessário pagar pelas consultas executadas pelo validador de SQL.

Excluir dimensões da validação de SQL

Talvez você queira excluir determinadas dimensões da validação de SQL, como dimensões que dependem de um parâmetro, já que o valor do parâmetro será nulo durante a validação e sempre causará um erro de SQL.

Também é possível excluir dimensões que não têm um parâmetro sql, como dimensões de type: distance, type: location ou type: duration.

Para excluir uma dimensão da validação de SQL, modifique o LookML da dimensão de uma destas duas maneiras:

  • Adicione uma instrução ci: ignore no parâmetro tags da definição do LookML da dimensão, conforme mostrado no exemplo a seguir:

    dimension: addresses {
      sql: ${TABLE}.addresses ;;
      tags: ["ci: ignore"]
    }
    
  • Adicione o comentário -- ci: ignore ao campo sql do LookML da dimensão, conforme mostrado no exemplo a seguir:

    dimension: addresses {
      sql:
        -- ci: ignore
        ${TABLE}.addresses ;;
    }
    

Opções do validador de SQL

É possível especificar várias opções ao criar ou editar um conjunto de testes de integração contínua para configurar como o validador de SQL é executado. As opções são descritas nas seções a seguir desta página:

Análises para consulta

Por padrão, o validador de SQL executa a validação de SQL em todos os modelos e análises no seu projeto do LookML.

É possível usar o campo Análises para consulta para especificar as análises e os modelos que você quer incluir na validação de SQL.

É possível especificar análises no seguinte formato: model_name/explore_name

Observe o seguinte:

  • Para model_name, use o nome do arquivo modelo sem a extensão .model.lkml. Por exemplo, para especificar o modelo definido em thelook.model.lkml, insira thelook.
  • Para explore_name, use o explore_name do parâmetro explore do LookML. Por exemplo, para especificar a análise definida como explore: users no seu projeto do LookML, insira users.
  • É possível criar uma lista separada por vírgulas para especificar várias análises.
  • É possível usar o caractere curinga * em model_name ou explore_name.

Veja alguns exemplos:

  • Para especificar apenas a análise Users definida com explore: users no arquivo thelook.model.lkml, insira o seguinte:

    thelook/users
    
  • Para especificar as análises chamadas users e orders no arquivo thelook.model.lkml, insira o seguinte:

    thelook/users, thelook/orders
    
  • Para especificar todas as análises em thelook.model.lkml, insira o seguinte:

    thelook/*
    
  • Para especificar todas as análises chamadas users em todos os modelos do seu projeto, insira o seguinte:

    */users
    

Análises para exclusão

Por padrão, o validador de SQL executa a validação de SQL em todos os modelos e análises no seu projeto do LookML.

É possível usar o campo Análises para exclusão para especificar as análises e os modelos que você quer excluir da validação de SQL.

É possível especificar análises no seguinte formato: model_name/explore_name

Consulte a seção Análises para consulta para mais informações sobre como especificar análises para o validador de SQL.

Testagem intensiva

Por padrão, o validador de SQL executa uma consulta por análise com todas as dimensões na consulta. Se essa consulta de análise falhar, o validador de SQL vai fazer uma consulta de análise para cada dimensão da análise individualmente.

Para uma validação mais rápida, ative a opção Testagem intensiva para que o validador de SQL execute apenas a consulta inicial de uma análise, a consulta que contém todas as dimensões de uma vez. Se essa consulta retornar um erro, o validador de SQL vai mostrar esse erro nos resultados da execução da CI e passar para a próxima análise que está sendo validada.

Com a Testagem intensiva ativada, a validação geralmente é concluída mais rapidamente. No entanto, os resultados do validador de SQL vão mostrar apenas o primeiro erro de cada análise, mesmo que várias dimensões tenham erros. Isso significa que, depois de corrigir o primeiro erro, a próxima execução do validador de SQL poderá mostrar um erro adicional.

Ignorar oculto

Ative o campo Ignorar oculto se quiser que o validador de SQL ignore as dimensões do LookML que os desenvolvedores do Looker definiram com hidden: yes. O validador de SQL vai deixar essas dimensões fora das consultas de análise durante a validação.

Simultaneidade de consultas

Por padrão, o validador de SQL executa no máximo 10 consultas por vez para evitar sobrecarregar a instância do Looker. É possível usar o campo Simultaneidade de consultas para especificar um número máximo diferente de consultas que o validador de SQL pode executar simultaneamente.

O valor máximo do campo Simultaneidade de consultas é limitado à configuração Número máximo de consultas simultâneas para esta conexão na conexão do banco de dados.

Se você notar uma lentidão na instância do Looker ao executar a validação de SQL, diminua esse valor.

Validação incremental

A validação incremental é um método para encontrar erros exclusivos de uma ramificação de desenvolvimento específica, erros que ainda não existem em produção. A validação incremental ajuda os desenvolvedores a encontrar e corrigir os erros de que são responsáveis sem serem distraídos por erros existentes no projeto. Ela também pode acelerar a validação, especialmente para projetos do LookML que contêm muitas análises.

Para a validação incremental, o validador de SQL executa apenas as consultas de análise que foram alteradas entre uma versão de desenvolvimento (a referência de base) e a versão de produção (a referência de destino). O validador de SQL retorna apenas os erros exclusivos da versão de desenvolvimento, mesmo que a versão de produção tenha erros.

Nos resultados do validador, o validador de SQL indica cada análise que foi ignorada porque não houve mudanças no SQL compilado na ramificação ou confirmação que está sendo validada. Consulte Como visualizar resultados para validação incremental para um exemplo de resultados de validação incremental.

É possível ativar a validação incremental para o validador de SQL marcando a caixa de seleção Somente erros incrementais na seção Validador de SQL ao criar ou editar um conjunto de testes de integração contínua.

Observe o seguinte para a validação incremental:

  • A configuração de validação incremental não se aplica quando o validador de SQL está validando a própria ramificação de produção, como acontece com as execuções manuais na ramificação de produção. Ao validar a ramificação de produção, o validador de SQL executa uma validação completa.
  • O modo Testagem intensiva não é compatível com execuções de validação incremental, já que consultas de dimensões individuais são necessárias para expor os erros incrementais específicos de uma ramificação de desenvolvimento do projeto.