O Amazon Redshift não permitirá mais a criação de funções definidas pelo usuário (UDFs) do Python a partir de 1.º de novembro de 2025. Se quiser usar UDFs do Python, você deve criá-las antes dessa data. As UDFs do Python existentes continuarão a funcionar normalmente. Para ter mais informações, consulte a publicação de blog
REFRESH MATERIALIZED VIEW
Atualiza uma visão materializada.
Quando você cria uma visão materializada, seu conteúdo reflete o estado da tabela ou das tabelas do banco de dados subjacente na ocasião. Os dados na visão materializada permanecem inalterados, mesmo quando aplicações fazem alterações nos dados nas tabelas subjacentes.
Para atualizar os dados na visão materializada, você pode usar a instrução REFRESH MATERIALIZED
VIEW
a qualquer momento. Ao usar essa instrução, o Amazon Redshift identifica as alterações que ocorreram na tabela ou tabelas base e aplica essas alterações à visão materializada.
Para obter mais informações sobre visões materializadas, consulte Visões materializadas no Amazon Redshift.
Sintaxe
REFRESH MATERIALIZED VIEW mv_name [ RESTRICT | CASCADE ]
Parâmetros
- mv_name
-
O nome da visão materializada a ser atualizada.
- RESTRICT
-
Palavra-chave opcional. Atualiza a visão materializada especificada, mas não as respectivas visões materializadas dependentes. O padrão se nem RESTRICT nem CASCADE forem especificadas.
- CASCADE
-
Palavra-chave opcional. Atualiza a visão materializada especificada e todas as respectivas visões materializadas dependentes.
Observações de uso
Somente o proprietário de uma visão materializada pode executar uma operação REFRESH MATERIALIZED
VIEW
nela. Além disso, o proprietário deve ter o privilégio SELECT nas tabelas base subjacentes para executar REFRESH
MATERIALIZED VIEW
com êxito.
O comando REFRESH MATERIALIZED VIEW
é executado como uma transação própria. A semântica de transação do Amazon Redshift é seguida para determinar quais dados das tabelas base são visíveis para o comando REFRESH
, ou quando as alterações feitas pelo comando REFRESH
são tornadas visíveis para outras transações em execução no Amazon Redshift.
-
Para visões materializadas incrementais, o
REFRESH MATERIALIZED VIEW
usa apenas as linhas da tabela base que já estão confirmadas. Portanto, se a operação de atualização for executada após uma instrução DML (Data Manipulation Language) na mesma transação, as alterações dessa instrução DML não serão visíveis para serem atualizadas. -
Para uma atualização completa de uma visão materializada, o
REFRESH MATERIALIZED VIEW
vê todas as linhas da tabela base visíveis para a transação de atualização, de acordo com a semântica de transação usual do Amazon Redshift. -
Dependendo do tipo de argumento de entrada, o Amazon Redshift ainda oferece suporte à atualização incremental de visões materializadas para as seguintes funções com tipos específicos de argumentos de entrada: DATE (timestamp), DATE_PART (date, time, interval, time-tz), DATE_TRUNC (timestamp, interval).
-
A atualização incremental é compatível em uma visão materializada na qual a tabela base está e uma unidade de compartilhamento de dados.
Algumas operações no Amazon Redshift interagem com visões materializadas. Algumas dessas operações podem forçar uma operação REFRESH MATERIALIZED VIEW
a recalcular totalmente a visão materializada, mesmo que a consulta que define a visão materializada use apenas os recursos SQL qualificados para atualização incremental. Por exemplo:
-
Se as visões materializadas não forem atualizadas, as operações de limpeza em segundo plano podem ser bloqueadas. Depois de um período limite definido internamente, será permitido executar uma operação de vácuo. Quando essa operação de vácuo acontece, todas as visões materializadas dependentes são marcadas para recomputação na próxima atualização (mesmo que elas sejam incrementais). Para obter informações sobre VACUUM, consulte VACUUM. Para obter mais informações sobre eventos e alterações de estado, consulte STL_MV_STATE.
-
Algumas operações iniciadas pelo usuário nas tabelas base forçam a recomputação total das visões materializadas na próxima vez que uma operação de REFRESH seja executada. Exemplos de tais operações são um VACUUM chamado manualmente, um redimensionamento clássico, uma operação ALTER DISTKEY, uma operação ALTER SORTKEY e uma operação truncada. Em alguns casos, as operações automáticas também podem resultar em uma visão materializada sendo totalmente recalculada na próxima vez que uma operação REFRESH for executada. Por exemplo, uma operação de exclusão automática por autovacuum pode causar uma recalculação completa. Para obter mais informações sobre eventos e alterações de estado, consulte STL_MV_STATE.
Atualização em cascata
A opção CASCADE atualiza a visão materializada especificada e todas as respectivas visões materializadas dependentes, em ordem de dependência: as MVs básicas são ATUALIZADAS antes das MVs na parte superior (ordem topológica). Isso permite que você atualize um conjunto aninhado de visões materializadas com um único comando.
A opção RESTRICT (o padrão se nem RESTRICT nem CASCADE forem especificadas) atualiza somente a visão materializada especificada.
Ao usar a opção CASCADE, as seguintes regras se aplicam:
-
Somente o proprietário da visão materializada ou um superusuário pode executar o comando
REFRESH MATERIALIZED VIEW ... CASCADE
. -
Se alguma das visões materializadas em cascata não puder ser atualizada, toda a operação em cascata será interrompida.
A funcionalidade de atualização em cascata só pode ser usada em MVs aninhadas acima das visões materializadas locais e de streaming. Visões materializadas com outros tipos de origem, como Spectrum ou compartilhamento de dados, não são permitidas no modo cascata. CASCADE executa a atualização em uma única transação para todos as MVs aninhadas.
Atualização incremental para visões materializadas em uma unidade de compartilhamento de dados
O Amazon Redshift oferece suporte à atualização automática e incremental de visões materializadas em uma unidade de compartilhamento de dados do consumidor quando as tabelas base são compartilhadas. A atualização incremental é uma operação em que o Amazon Redshift identifica alterações em uma ou mais tabelas base que ocorreram após a atualização anterior e atualiza somente os registros correspondentes na visão materializada. Para obter mais informações sobre este comportamento, consulte CREATE MATERIALIZED VIEW.
Limitações para atualização incremental
Atualmente, o Amazon Redshift não oferece suporte à atualização incremental para visões materializadas definidas com uma consulta usando qualquer um dos seguintes elementos SQL:
-
OUTER JOIN (RIGHT, LEFT ou FULL).
-
Operações de conjuntos: (UNION, INTERSECT, EXCEPT, MINUS)
-
UNION ALL quando ocorre em uma subconsulta e uma função agregada ou uma cláusula GROUP BY está presente na consulta.
-
Funções agregadas MEDIAN, PERCENTILE_CONT, LISTAGG, STDDEV_SAMP, STDDEV_POP, APPROXIMATE COUNT, APPROXIMATE PERCENTILE e funções agregadas bit a bit.
nota
A funções agregadas COUNT, SUM, MIN, MAX e AVG não são comportadas.
-
Funções agregadas DISTINCT, como DISTINCT COUNT, DISTINCT SUM e assim por diante.
-
Funções de janela.
-
Uma consulta que usa tabelas temporárias para otimização de consultas, como para otimizar subexpressões comuns.
-
Subconsultas
-
Tabelas externas referenciando os formatos a seguir na consulta que define a visão materializada.
-
Delta Lake
-
Hudi
Há suporte para a atualização incremental para visões materializadas definidas usando formatos diferentes dos listados acima. Para obter mais informações, consulte Visões materializadas em tabelas externas de data lake no Amazon Redshift Spectrum.
-
-
Funções mutáveis, como funções de data-hora, funções aleatórias e não-estáveis definidas pelo usuário.
-
Com relação a limitações relacionadas à atualização incremental para integrações ETL zero, consulte Considerações ao usar integrações ETL zero com o Amazon Redshift.
-
Acesso a tabelas de mais de um banco de dados.
Para obter mais informações sobre as limitações das visões materializadas, incluindo o efeito de operações em segundo plano, como VACUUM, nas operações de atualização de visões materializadas, consulte Observações de uso.
Exemplos
O exemplo a seguir atualiza a visão materializada tickets_mv
.
REFRESH MATERIALIZED VIEW tickets_mv;
O seguinte exemplo atualiza a visão materializada products_mv
e todas as respectivas visões materializadas dependentes:
REFRESH MATERIALIZED VIEW products_mv CASCADE;