materialized_view

Uso

view: my_view {
derived_table: {
materialized_view: yes
...
}
}
Hierarquia
materialized_view
Valor padrão
no

Aceita
Um booleano (yes ou no)

Regras especiais
materialized_view só é compatível com dialetos específicos.

Definição

A funcionalidade de visualização materializada é um recurso avançado. Dependendo do seu dialeto, uma visualização materializada pode consumir recursos grandes. Por isso, é importante entender a implementação dele de visualizações materializadas. Consulte a documentação do seu dialeto para saber mais sobre o comportamento dele e a frequência com que o dialeto atualiza os dados de visualizações materializadas.

As visualizações materializadas permitem aproveitar a funcionalidade do banco de dados para manter as tabelas derivadas no projeto do Looker. Se o dialeto do banco de dados for compatível com visualizações materializadas e a conexão do Looker estiver configurada com a opção Tabelas derivadas permanentes ativada, você poderá criar uma visualização materializada especificando materialized_view: yes para uma tabela derivada. As visualizações materializadas são compatíveis com tabelas derivadas nativas e tabelas derivadas baseadas em SQL.

Assim como uma tabela derivada permanente (PDT, na sigla em inglês), uma visualização materializada é um resultado de consulta armazenado como uma tabela no esquema de rascunho do seu banco de dados. A principal diferença entre uma PDT e uma visualização materializada é como as tabelas são atualizadas:

  • Para PDTs, a estratégia de persistência é definida no Looker e a persistência é gerenciada por ele.
  • Para visualizações materializadas, o banco de dados é responsável por manter e atualizar os dados na tabela.

Por isso, a funcionalidade da visualização materializada exige conhecimento avançado sobre o dialeto e os recursos dele. Na maioria dos casos, seu banco de dados atualizará a visualização materializada sempre que detectar novos dados nas tabelas que são consultadas pela visualização materializada. As visualizações materializadas são ideais para cenários que exigem dados em tempo real.

Se uma tabela derivada com uma instrução materialized_view: yes também tiver um parâmetro datagroup, sql_trigger_value ou persist_for, a instrução materialized_view: yes terá precedência.

Exemplo

Essa tabela derivada e_flights_pdt tem a instrução materialized_view: yes. Portanto, uma visualização materializada é criada no esquema de rascunho do banco de dados:


view: e_flights_pdt {
  derived_table: {
    materialized_view: yes
    explore_source: ontime {
      column: flight_num {}
      column: carrier {}
      column: arr_date {}
    }
  }
  dimension: flight_num {}
  dimension: carrier {}
  dimension: arr_date {
    type: date
  }
}

Quando o Looker cria a visualização materializada

O Looker gera visualizações materializadas da mesma forma que outras PDTs. Se você criar a visualização materializada e a consultar no modo de desenvolvimento, o Looker criará uma versão de desenvolvimento da visualização materializada, que também pode ser usada para produção. Consulte a seção Tabelas persistentes no modo de desenvolvimento na página de documentação Tabelas derivadas no Looker para saber mais detalhes.

Caso contrário, a visualização materializada será criada durante o próximo ciclo do regenerador do Looker, depois que o LookML da tabela derivada associada for implantado na produção com materialized_view: yes.

Visualizações de banco de dados estáveis para visualizações materializadas.

O Looker cria automaticamente uma visualização de banco de dados estável para cada visualização materializada. A visualização estável do banco de dados é criada no próprio banco de dados para que possa ser consultada fora do Looker. Essa é a mesma funcionalidade de visualização estável usada com o parâmetro publish_as_db_view.

O Looker cria a visualização estável durante o próximo ciclo do regenerador do Looker, depois que o LookML da visualização materializada é implantado na produção. Depois que a visualização do banco de dados estável é publicada, você pode consultá-la diretamente.

Os administradores ou usuários com a permissão see_pdts podem ver o nome da visualização do banco de dados estável na página Tabelas derivadas permanentes, na seção Administrador do Looker. Clique no menu de três pontos do PDT e selecione Detalhes do PDT:

Para consultar uma visualização materializada diretamente, basta adicionar o nome do esquema de rascunho antes do nome da tabela. Por exemplo, se o nome da visualização do banco de dados estável for NN_e_redflight_e_redflight_publish_as_db e o nome do esquema de rascunho for tmp, será possível consultar a visualização estável do banco de dados com um comando como este:


SELECT * from tmp.NN_e_redflight_e_redflight_publish_as_db

Requisitos para visualizações materializadas

Para usar visualizações materializadas no seu projeto do Looker, você precisa do seguinte:

  • Um dialeto de banco de dados que suporta visualizações materializadas. Consulte a seção Suporte ao dialeto para visualizações materializadas nesta página para ver a lista de dialetos compatíveis com visualizações materializadas.
  • Um esquema de rascunho no seu banco de dados. Ele pode ser qualquer esquema do seu banco de dados, mas recomendamos criar um novo, que será usado apenas para essa finalidade. O administrador do banco de dados precisa configurar o esquema com permissão de gravação para o usuário do banco de dados do Looker.
  • Uma conexão Looker configurada com a opção Tabelas derivadas permanentes ativada. Isso geralmente é configurado quando você configura inicialmente sua conexão do Looker (consulte a página de documentação Dialetos do Looker para ver as instruções para seu dialeto do banco de dados), mas também é possível ativar PDTs para sua conexão após a configuração inicial.
  • Uma conexão do Looker com a permissão CREATE TABLE para o esquema temporário no seu banco de dados. Essa é a mesma permissão necessária para criar PDTs. Além disso, para criar a visualização estável do banco de dados para a visualização materializada, a conexão precisa ter permissões CREATE VIEW para o esquema temporário no seu banco de dados. Você pode testar a conexão para verificar se ela tem estas permissões:
    • Se os PDTs estiverem ativados na conexão e ela tiver a permissão CREATE TABLE, o teste de conexão retornará um resultado como Can use persistent derived tables in temp schema "docsexamples_scratch" in database "demo_db".
    • Se a conexão permitir visualizações estáveis e a conexão tiver a permissão CREATE VIEW, o teste de conexão retornará um resultado como Can use stable views in temp schema "docsexamples_scratch" in database "flightstats".

Considerações importantes sobre visualizações materializadas

Com visualizações materializadas, o Looker não mantém e atualiza os dados na tabela. Por isso, a funcionalidade da visualização materializada exige conhecimento avançado sobre o dialeto e os recursos dele. Veja alguns aspectos a serem considerados ao criar uma visualização materializada:

  • Alguns dialetos têm limitações para visualizações materializadas, como intervalos padrão de atualização máxima e suporte para mesclagens. O Looker não gera erros de LookML sobre a funcionalidade específica do dialeto de visualizações materializadas. Em vez disso, o Looker gerará um erro se a visualização materializada não for criada, seja como um evento no Registro de eventos do PDP ou como um erro de ambiente de execução se você tentar consultar a visualização materializada. Consulte a documentação do seu dialeto sobre as limitações de visualizações materializadas.
  • Alguns dialetos verificam a atualização das consultas quando visualizações materializadas são consultadas. Isso pode adicionar um pequeno atraso ao recebimento dos resultados da consulta. Consulte a documentação do seu dialeto para saber se esse é o caso do seu dialeto.
  • Alguns dialetos vão tentar atualizar a visualização materializada de forma incremental, em vez de recriá-la totalmente. Consulte a documentação do seu dialeto para mais informações.
  • Se a visualização materializada usar uma tabela base que é descartada do banco de dados, talvez não seja possível consultar a visualização materializada, e novas versões não vão ser criadas.
  • Se uma tabela derivada com uma instrução materialized_view: yes também tiver um parâmetro datagroup, sql_trigger_value ou persist_for, a instrução materialized_view: yes terá precedência.
  • As visualizações materializadas oferecem suporte aos mesmos parâmetros específicos de dialeto que são compatíveis com tabelas derivadas em geral, como particionamento, chaves de classificação e índices.
  • No caso de tabelas derivadas em cascata, as visualizações materializadas podem depender dos PDTs do Looker, com as seguintes ressalvas:
    • Não é possível usar uma tabela derivada com a estratégia de persistência persist_for na definição de uma tabela derivada com materialized_view: yes. Para visualizações materializadas, a tabela de origem de uma visualização materializada precisa estar sempre presente no banco de dados. As tabelas derivadas persist_for são descartadas do banco de dados após o período especificado no parâmetro persist_for. Portanto, não há garantia de que elas estejam presentes no banco de dados.
    • Os PDTs são recriados com um nome exclusivo. Assim, se uma visualização materializada usar um PDT na definição, a visualização materializada será atualizada para apontar para a nova versão sempre que for reconstruída. Isso significa que a visualização materializada será recriada do zero se uma dependência for completamente recriada, o que pode afetar a performance. Nesse caso, uma opção melhor é usar uma tabela de base somente para anexação ou uma PDT incremental definida com o Looker.

Compatível com dialeto para visualizações materializadas

A capacidade de transformar uma tabela derivada em uma visualização materializada depende do dialeto do banco de dados que a conexão do Looker está usando. Na versão atual do Looker, os dialetos a seguir são compatíveis com visualizações materializadas: