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 é compatível apenas com dialetos específicos

Definição

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

As visualizações materializadas permitem aproveitar a funcionalidade do banco de dados para manter 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 persistentes 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.

Semelhante a uma tabela derivada persistente (TDP), uma visualização materializada é um resultado de consulta armazenado como uma tabela no esquema de rascunho do banco de dados. A principal diferença entre uma TDP e uma visualização materializada é a forma como as tabelas são atualizadas:

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

Por esse motivo, a funcionalidade de visualização materializada exige conhecimento avançado do dialeto e dos recursos dele. Na maioria dos casos, o banco de dados atualiza a visualização materializada sempre que detecta novos dados nas tabelas 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 grupo de dados, um parâmetro 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 TDPs. Se você criar a visualização materializada e consultá-la no modo de desenvolvimento, o Looker vai criar uma versão de desenvolvimento da visualização materializada, que também pode ser usada na produção. Consulte a seção Tabelas persistentes no modo de desenvolvimento na página de documentação Tabelas derivadas no Looker para 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 de banco de dados estável é 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 publish_as_db_view parâmetro.

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 de banco de dados estável é publicada, você pode consultá-la diretamente.

Os administradores ou usuários com a permissão see_pdts podem acessar o nome da visualização de banco de dados estável no modal Detalhes da TDPna página Tabelas derivadas persistentes na seção Admin do Looker.

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 de banco de dados estável for NN_e_redflight_e_redflight_publish_as_db e o nome do esquema de rascunho for tmp, você poderá consultar a visualização de banco de dados estável 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 projeto do Looker, você precisa do seguinte:

  • Um dialeto de banco de dados que ofereça suporte a visualizações materializadas. Consulte a seção Suporte a dialetos para visualizações materializadas nesta página para conferir a lista de dialetos que oferecem suporte a visualizações materializadas.
  • Um esquema de rascunho no banco de dados. Ele pode ser qualquer esquema no banco de dados, mas recomendamos criar um novo esquema 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 do Looker configurada com a opção Tabelas derivadas persistentes ativada. Essa opção geralmente é configurada quando você configura a conexão do Looker pela primeira vez (consulte a página de documentação Dialetos do Looker para instruções sobre o dialeto do banco de dados), mas também é possível ativar as TDPs 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 banco de dados. Essa é a mesma permissão necessária para criar TDPs. Além disso, para criar a visualização de banco de dados estável para a visualização materializada, a conexão precisa ter permissões CREATE VIEW para o esquema temporário no banco de dados. Você pode testar a conexão para verificar se ela tem essas permissões:
    • Se as TDPs estiverem ativadas na conexão e ela tiver a permissão CREATE TABLE, o teste de conexão vai 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 tiver a permissão CREATE VIEW, o teste de conexão vai retornar um resultado como Can use stable views in temp schema "docsexamples_scratch" in database "flightstats".

Considerações importantes para visualizações materializadas

Com as visualizações materializadas, o Looker não mantém nem atualiza os dados na tabela. Por esse motivo, a funcionalidade de visualização materializada exige conhecimento avançado do dialeto e dos recursos dele. Confira algumas coisas a considerar ao criar uma visualização materializada:

  • Alguns dialetos têm limitações para visualizações materializadas, como intervalos máximos de atualização padrão e suporte a mesclagens. O Looker não gera erros do LookML sobre a funcionalidade específica do dialeto de visualizações materializadas. Em vez disso, o Looker vai gerar um erro se a visualização materializada não for criada, como um evento no registro de eventos da TDP ou como um erro de execução se você tentar consultar a visualização materializada. Consulte a documentação do dialeto sobre limitações para visualizações materializadas.
  • Alguns dialetos verificam a atualização da consulta quando as visualizações materializadas são consultadas, o que pode adicionar um pequeno atraso na obtenção dos resultados da consulta. Consulte a documentação do dialeto para saber se esse é o caso do seu dialeto.
  • Alguns dialetos tentam atualizar a visualização materializada de forma incremental em vez de recriá-la totalmente. Consulte a documentação do dialeto para mais informações.
  • Se a visualização materializada usar uma tabela base que foi descartada do banco de dados, talvez não seja possível consultar a visualização materializada, e as novas versões não serão criadas.
  • Se uma tabela derivada com uma instrução materialized_view: yes também tiver um grupo de dados, um parâmetro 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 do dialeto que são compatíveis com tabelas derivadas em geral, como particionamento, sortkeys e índices.
  • No caso de tabelas derivadas em cascata, as visualizações materializadas podem depender de TDPs 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.
    • As TDPs são recriadas com um nome exclusivo. Portanto, se uma visualização materializada usar uma TDP na definição, a visualização materializada será atualizada para apontar para a nova versão da TDP sempre que ela for recriada. Isso significa que a visualização materializada será recriada do zero se uma dependência for totalmente recriada, o que pode afetar o desempenho. Nesse caso, uma opção melhor é referenciar uma tabela base somente de anexos ou uma TDP incremental definida usando o Looker.

Suporte a dialetos 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 seguintes dialetos oferecem suporte a visualizações materializadas:

Dialeto Compatível?
Actian Avalanche
Amazon Athena
Amazon Aurora MySQL
Amazon Redshift
Amazon Redshift 2.1+
Amazon Redshift Serverless 2.1+
Apache Druid
Apache Druid 0.13+
Apache Druid 0.18+
Apache Hive 2.3+
Apache Hive 3.1.2+
Apache Spark 3+
ClickHouse
Cloudera Impala 3.1+
Cloudera Impala 3.1+ with Native Driver
Cloudera Impala with Native Driver
DataVirtuality
Databricks
Denodo 7
Denodo 8 & 9
Dremio
Dremio 11+
Exasol
Google BigQuery Legacy SQL
Google BigQuery Standard SQL
Google Cloud AlloyDB for PostgreSQL
Google Cloud PostgreSQL
Google Cloud SQL
Google Spanner
Greenplum
HyperSQL
IBM Netezza
MariaDB
Microsoft Azure PostgreSQL
Microsoft Azure SQL Database
Microsoft Azure Synapse Analytics
Microsoft SQL Server 2008+
Microsoft SQL Server 2012+
Microsoft SQL Server 2016
Microsoft SQL Server 2017+
MongoBI
MySQL
MySQL 8.0.12+
Oracle
Oracle ADWC
PostgreSQL 9.5+
PostgreSQL pre-9.5
PrestoDB
PrestoSQL
SAP HANA
SAP HANA 2+
SingleStore
SingleStore 7+
Snowflake
Teradata
Trino
Vector
Vertica