Solução de problemas de tabelas dinâmicas

Este tópico aborda soluções para solucionar problemas de tabelas dinâmicas que não são executadas conforme o esperado:

Algumas ações podem ser restritas devido a limitações no uso de tabelas dinâmicas ou à ausência dos privilégios necessários. Para obter mais informações, consulte Limitações conhecidas para tabelas dinâmicas e Controle de acesso a tabelas dinâmicas.

Para obter mais informações sobre os custos de tabela dinâmica, consulte Compreensão do custo de tabelas dinâmicas.

Se você encontrar um problema não listado aqui, entre em contato com o suporte Snowflake.

Solução de problemas de atualização de tabela dinâmica

Problema

Solução

Minha tabela dinâmica está usando atualização completa em vez de atualização incremental.

O modo de atualização real da tabela dinâmica é determinado no momento da criação e não pode ser alterado posteriormente. Se não for especificado explicitamente, o modo de atualização será definido como AUTO por padrão, selecionando um modo de atualização com base em vários fatores, como complexidade da consulta ou construções, operadores ou funções incompatíveis.

Para um comportamento consistente em todas as versões do Snowflake, defina explicitamente o modo de atualização em todas as tabelas dinâmicas. Por exemplo, se você quiser que suas tabelas dinâmicas sejam atualizadas apenas de forma incremental, você deve definir explicitamente o modo de atualização INCREMENTAL ao criá-las, tendo em mente que pode haver algumas limitações no uso da atualização incremental. Para obter mais informações, consulte Definição do modo de atualização para todas as tabelas dinâmicas de produção.

Usando uma função com os privilégios necessários, você pode verificar o modo de atualização usando um dos seguintes métodos:

  • Uso de SQL: Execute a instrução SHOW DYNAMIC TABLES: Na saída, a coluna text exibe o modo de atualização especificado pelo usuário, a coluna refresh_mode mostra o modo de atualização real e refresh_mode_reason mostra por que o modo de atualização real foi escolhido.

  • Usando o Snowsight: No menu de navegação, selecione Monitoring » Dynamic Tables e, em seguida, selecione sua tabela dinâmica. Você pode visualizar o modo de atualização da tabela dinâmica na aba Table Details.

A atualização incremental da minha tabela dinâmica está lenta.

O desempenho de atualização de uma tabela dinâmica depende de suposições específicas sobre a carga de trabalho ou os dados que ela está manipulando.

Use Refresh History para visualizar a variância ou identificar valores discrepantes:

  1. Faça login no Snowsight.

  2. Na navegação, vá para Monitoring » Dynamic Tables.

  3. Selecione sua tabela dinâmica e vá para a aba Refresh History.

  4. Use as durações de atualização de sua tabela dinâmica nas últimas 24 horas para solucionar problemas.

Minha tabela dinâmica está executando uma atualização vazia, mas estou vendo um custo.

Atualizações que produzem zero novas linhas líquidas (ou seja, zero linhas adicionadas, atualizadas ou excluídas) consomem recursos do warehouse quando associadas a alterações em qualquer um dos objetos upstream referenciados pela tabela dinâmica.

Por exemplo, se o warehouse virtual associado for suspenso e nenhuma alteração nos objetos base for identificada, o warehouse virtual suspenso não será retomado e nenhum crédito será consumido. Isso é conhecido como atualização NO_DATA. Por outro lado, se forem identificadas alterações, o warehouse virtual será automaticamente retomado para processar as atualizações, o que consome recursos do warehouse, mesmo que o resultado líquido seja zero linhas aplicadas à tabela dinâmica.

Se você estiver vendo um custo, mas não tiver feito nenhuma alteração em sua tabela dinâmica, pode ser devido a uma alteração em sua tabela de origem. Você pode usar a aba Refresh History no Snowsight para verificar se os créditos do warehouse virtual foram consumidos:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Monitoring » Dynamic Tables.

  3. Selecione sua tabela dinâmica e vá para a aba Refresh History.

  4. Marque caixa de seleção Warehouse used only para visualizar as atualizações que usaram o warehouse para atualizar.

Para obter mais informações, consulte Compreensão do custo de tabelas dinâmicas.

Minha tabela dinâmica ignorou uma atualização.

As tabelas dinâmicas são atualizadas de acordo com um cronograma. Quando uma atualização agendada é iniciada, as seguintes situações podem fazer com que a atualização seja ignorada:

  • Se a tabela dinâmica que está sendo atualizada tiver outra tabela dinâmica upstream e a atualização da upstream falhar ou for ignorada.

  • Se uma atualização anterior da tabela dinâmica ainda estiver em execução.

  • Se a atualização da tabela dinâmica frequentemente demorar mais que o atraso de destino, o Snowflake poderá pular uma atualização para reduzir a taxa de saltos futuros.

Atualizações manuais nunca são ignoradas, mas podem fazer com que outras atualizações sejam ignoradas, especialmente se você realizar atualizações manuais frequentes em uma tabela dinâmica. Isso pode impedir que tabelas dinâmicas downstream sejam atualizadas. Por esse motivo, a Snowflake não recomenda que você execute atualizações manuais frequentes em uma tabela dinâmica com tabelas dinâmicas downstream que devem ser atualizadas de acordo com o atraso de destino.

A atualização da minha tabela dinâmica falhou.

Assim como uma consulta Snowflake comum, uma atualização de tabela dinâmica pode falhar devido a problemas com a definição de consulta da tabela dinâmica, dados de entrada (por exemplo, erros de análise) ou problemas internos do sistema.

Para determinar por que a atualização falhou, faça o seguinte:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Monitoring » Dynamic Tables.

  3. Selecione sua tabela dinâmica e vá para a aba Table Details.

  4. Passe o mouse sobre Last Completed Refresh em Details. Uma caixa de diálogo detalhando o código de erro e a mensagem da atualização com falha é exibida.

Se a atualização falhou devido a um código de erro upstream_failed, pode ser que uma das tabelas dinâmicas upstream tenha um problema. Para determinar qual tabela upstream causou a falha:

  1. No menu de navegação do Snowsight, selecione Monitoring » Dynamic Tables e, em seguida, selecione sua tabela dinâmica.

  2. Abra a página Graph para visualizar o histórico de gráfico de sua tabela dinâmica.

  3. No gráfico, selecione a tabela dinâmica upstream que está vermelha e verifique seu Refresh History.

Minha tabela dinâmica está sendo reinicializada.

Sua tabela dinâmica pode estar sendo reinicializada devido a um dos seguintes motivos:

  • Uma ou mais entradas da tabela dinâmica são substituídas. Por exemplo, se sua tabela dinâmica estiver definida em uma exibição e você substituir a exibição, a tabela dinâmica terá que ser reinicializada.

  • Se o esquema das entradas foi alterado e sua tabela dinâmica depende das colunas alteradas.

  • Políticas de acesso a dados são adicionadas, removidas ou alteradas nas entradas da tabela dinâmica.

  • A clonagem incremental de tabelas dinâmicas podem precisar ser reinicializadas na primeira atualização após serem criadas.

  • As tabelas dinâmicas replicadas com atualização incremental são reinicializadas após o failover, antes que possam retomar a atualização incremental.

Para obter informações gerais sobre inicialização, consulte Compreensão da inicialização de tabelas dinâmicas.

Solução de problemas de criação de tabela dinâmica

Problema

Solução

Minha tabela dinâmica está demorando muito para ser criada.

Quando você cria uma tabela dinâmica usando uma instrução CREATE DYNAMIC TABLE, sua atualização inicial ocorre em um horário agendado (ON_SCHEDULE) ou de forma síncrona na criação (ON_CREATE). O preenchimento inicial de dados, ou inicialização, depende de quando a atualização inicial ocorre. Por exemplo, a inicialização síncrona aciona uma atualização de quaisquer tabelas dinâmicas upstream referenciadas, o que pode adicionar tempo de processamento adicional à duração total da inicialização.

A inicialização pode levar algum tempo, dependendo da quantidade de dados digitalizados. Para visualizar o progresso, faça o seguinte:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Monitoring » Query History.

  3. No menu suspenso Filters, insira CREATE DYNAMIC TABLE no filtro SQL Text e insira o nome do seu warehouse no filtro Warehouse.

  4. Selecione a consulta com sua tabela dinâmica em SQL text e use as abas Query Details e Query Profile para acompanhar o progresso.

Para obter informações gerais sobre inicialização, consulte Compreensão da inicialização de tabelas dinâmicas.

Depuração de tabelas dinâmicas

Problema

Solução

Não consigo ver os metadados da minha tabela dinâmica.

Para visualizar os metadados e o Information Schema de uma tabela dinâmica, você deve usar uma função que tenha o privilégio MONITOR nessa tabela dinâmica. Para obter mais informações, consulte Privilégios para visualizar os metadados de uma tabela dinâmica.

Minha tabela dinâmica está suspensa.

Uma tabela dinâmica pode ser suspensa por vários motivos:

  • Foi suspensa diretamente usando o comando ALTER DYNAMIC TABLE … SUSPEND.

  • Ela é a tabela downstream de uma tabela dinâmica suspensa.

  • Falha ao atualizar cinco vezes consecutivas (saltos não contribuem para essa contagem).

  • Ela é uma tabela dinâmica replicada, seja em um grupo de replicação ou grupo de failover. Consulte Replicação e tabelas dinâmicas.

  • Ela foi clonada de uma tabela dinâmica que teve uma ou mais tabelas base descartadas no momento da clonagem.

Para ver o motivo pelo qual sua tabela dinâmica foi suspensa, faça o seguinte:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Monitoring » Dynamic Tables.

  3. Selecione sua tabela dinâmica e vá para a aba Table Details.

  4. Passe o mouse sobre Scheduling State em Details. Uma caixa de diálogo detalhando o motivo e a data da suspensão é exibida.