Sobre o gerenciamento de tabelas dinâmicas

O gerenciamento de tabelas dinâmicas geralmente envolve as seguintes tarefas:

Tarefa

Descrição

Listagem de tabelas dinâmicas e visualização de informações sobre uma tabela dinâmica

Listagem e visualização de tabelas dinâmicas.

Descarte de uma tabela dinâmica

Descarte de tabelas dinâmicas.

Alteração do warehouse ou meta de atraso para uma tabela dinâmica

Alteração de tabelas dinâmicas.

Listagem de tabelas dinâmicas e visualização de informações sobre uma tabela dinâmica

Para listar as tabelas dinâmicas em um banco de dados e visualizar informações dessas tabelas dinâmicas, você pode usar o Snowsight ou comandos SQL:

Uso do Snowsight para listar tabelas dinâmicas e exibir detalhes

Para listar as tabelas dinâmicas em um esquema e visualizar informações de uma tabela dinâmica:

  1. Faça login no Snowsight.

  2. Selecione Data » Databases.

  3. Selecione um banco de dados e um esquema.

  4. Em Schema Details, selecione a aba Dynamic Tables.

    Observe que você também pode visualizar a lista de tabelas dinâmicas no navegador de objetos do banco de dados expandindo Dynamic Tables.

  5. Para visualizar informações de uma tabela dinâmica específica, selecione a tabela dinâmica no navegador de objetos do banco de dados ou na lista de tabelas dinâmicas na aba Dynamic Tables.

    As abas nesta página fornecem algumas das informações também fornecidas pela página de detalhes da tabela, incluindo:

    • A definição da tabela dinâmica e os privilégios concedidos para trabalhar com a tabela dinâmica

    • Informações sobre as colunas na tabela dinâmica

    • Uma visualização de até 100 linhas dos dados na tabela dinâmica

    Além disso, a página de detalhes da tabela dinâmica inclui abas que você pode usar para visualizar informações sobre a tabela dinâmica:

Uso de comandos SQL para listar tabelas dinâmicas e exibir detalhes

  • Para listar as tabelas dinâmicas no banco de dados atual (ou na conta, se nenhum banco de dados estiver em uso), use o comando SHOW DYNAMIC TABLES.

    Por exemplo, para listar as tabelas dinâmicas com nomes que começam com product_ no banco de dados mydb e no esquema myschema, execute a seguinte instrução SQL:

    SHOW DYNAMIC TABLES LIKE 'product_%' IN SCHEMA mydb.myschema;
    
    Copy

    Para obter a sintaxe completa do comando, consulte SHOW DYNAMIC TABLES.

  • Para obter informações sobre as colunas em uma tabela dinâmica, use o comando DESCRIBE DYNAMIC TABLE.

    Por exemplo, para listar as colunas na tabela dinâmica chamada product:

    DESC DYNAMIC TABLE product;
    
    Copy

As tabelas dinâmicas também estão incluídas nos resultados de Exibição TABLES.

Descarte de uma tabela dinâmica

Para descartar uma tabela dinâmica, você pode usar os comandos Snowsight ou SQL.

Snowsight:
  1. No Snowsight, abra a página de detalhes da tabela dinâmica (instruções).

  2. No menu More no canto superior direito da página, selecione Drop.

SQL:
  • Use o comando DROP DYNAMIC TABLE.

    Por exemplo, para descartar a tabela dinâmica chamada product:

DROP DYNAMIC TABLE product;
Copy

Compartilhamento de dados com tabelas dinâmicas

Tabelas dinâmicas são objetos compartilháveis. Para compartilhar uma tabela dinâmica, os provedores de compartilhamento de dados concedem privilégios em uma tabela dinâmica para um compartilhamento, que por sua vez pode ser usado por consumidores de compartilhamento de dados.

Como os dados são compartilhados com tabelas dinâmicas

Os provedores podem compartilhar tabelas dinâmicas selecionadas com outras contas Snowflake usando compartilhamento direto ou listagens, que permitem que os dados sejam compartilhados entre contas sem movê-los fisicamente. O processo envolve a criação de um compartilhamento de um banco de dados na conta do provedor, a concessão de acesso ao banco de dados na conta do provedor, a concessão de privilégios de acesso e a adição de outros objetos ao compartilhamento. Para saber mais, consulte Sobre o Secure Data Sharing e Compartilhamento de dados e colaboração no Snowflake.

Um provedor de compartilhamento de dados pode optar por conceder o privilégio SELECT em uma única tabela dinâmica ou conceder o privilégio SELECT em todas as tabelas dinâmicas em um banco de dados, conforme mostrado nos exemplos a seguir.

GRANT SELECT ON ALL DYNAMIC TABLES IN SCHEMA mydb.public TO SHARE share1;

GRANT SELECT ON DYNAMIC TABLE mydb.public TO SHARE share1;
Copy

Para obter mais detalhes, consulte GRANT <privilégio> … TO SHARE.

Criação de uma tabela dinâmica para ingerir dados compartilhados

Para criar uma tabela dinâmica para ingerir dados compartilhados, faça o seguinte:

  1. Certifique-se de ter os privilégios corretos e crie um banco de dados a partir de um compartilhamento e conceda privilégios a ele.

    CREATE DATABASE shared_db FROM SHARE provider_account.share1;
    
    Copy
  2. Conceda privilégios ao banco de dados compartilhado.

  3. Crie uma tabela dinâmica compartilhada.

    CREATE OR REPLACE DYNAMIC TABLE <dt_name>
      TARGET_LAG = '1 day'
      WAREHOUSE = <warehouse_name>
      AS
        SELECT * FROM shared_db.public.mydb;
    
    Copy

    Nota

    O rastreamento de alterações deve ser ativado em todos os objetos subjacentes usados por uma tabela dinâmica. Para usar uma tabela dinâmica para ingerir dados compartilhados, o provedor de compartilhamento de dados precisa ativar change_tracking no objeto compartilhado. Consulte Habilitar o rastreamento de alterações.

Quando utiliza uma tabela dinâmica para ingerir dados compartilhados, a consulta não pode selecionar a partir de uma tabela dinâmica compartilhada ou de uma exibição segura compartilhada que faça referência a uma tabela dinâmica a montante.

Alteração do warehouse ou meta de atraso para uma tabela dinâmica

Para alterar o warehouse ou a meta de atraso de uma tabela dinâmica, use o comando ALTER DYNAMIC TABLE.

Por exemplo, para alterar o warehouse da tabela dinâmica product para my_other_wh, execute:

ALTER DYNAMIC TABLE product SET
  WAREHOUSE = my_other_wh;
Copy

O diagrama a seguir ilustra operações de suspensão, retomada e atualização manual no contexto de relacionamentos a montante e a jusante com outras tabelas dinâmicas.

Relacionamento entre tabelas dinâmicas. Usado para ajudar a explicar a suspensão, a retomada e a atualização manual.

O diagrama descreve um pipeline de dados declarativos simples criado com tabelas dinâmicas. Semelhante ao fluxo de água de um rio, os dados em um pipeline de tabela dinâmica fluem da raiz downstream em direção à tabela dinâmica folha:

  • DT2 é descrito como a jusante de DT1 porque depende dessa tabela dinâmica, e como a montante de DT3, que depende dela.

  • DT3 está a jusante de DT2 e DT1 porque depende de DT2 diretamente e de DT1 indiretamente.

  • DT1 está direta ou indiretamente a montante das outras tabelas dinâmicas.

Para obter detalhes adicionais e exemplos de uso do atraso de destino downstream, consulte Compreensão da meta de atraso.

Determinação da meta de atraso ideal para uma tabela dinâmica

Para determinar o tempo de atraso de destino ideal para uma tabela dinâmica, você pode usar o Snowsight ou comandos SQL.

Snowsight:
  1. Na página de detalhes da tabela dinâmica, selecione a guia Refresh History.

  2. Verifique o tempo de atraso real máximo, que é exibido na parte superior da aba. Essa métrica é baseada no tempo de atraso real para cada atualização.

SQL:
  • Use a função de tabela DYNAMIC_TABLE_REFRESH_HISTORY em INFORMATION_SCHEMA. Esta função retorna informações sobre cada atualização de uma tabela dinâmica, incluindo o tempo gasto para a atualização e quais atualizações foram ignoradas.

O tempo de atraso escolhido pode afetar o agendamento de atualização determinado pelo processo de atualização automatizada. O processo de atualização automatizada escolhe um agendamento que melhor atenda aos tempos de atraso das tabelas dinâmicas.

Como determinar se é usada uma atualização incremental ou completa

Para determinar se será usada uma atualização incremental ou completa para atualizar uma tabela dinâmica, você pode usar o Snowsight ou comandos SQL.

Snowsight:
SQL:
  • Use o comando SHOW DYNAMIC TABLES e verifique o valor da coluna REFRESH_MODE na saída.

    REFRESH_MODE_REASON contém detalhes adicionais sobre a escolha de REFRESH_MODE.

Como compreender os efeitos das alterações nas colunas das tabelas de base

As colunas nas tabelas de base, exibições e tabelas dinâmicas subjacentes podem mudar com o tempo. Algumas alterações podem afetar a própria tabela dinâmica; outras podem ter impacto limitado ou nenhum impacto.

Quando os objetos subjacentes associados a uma tabela dinâmica mudam, os seguintes comportamentos se aplicam:

Mudança

Impacto

  • Nova coluna adicionada.

  • Coluna não utilizada existente removida.

Nenhum. Se uma nova coluna for adicionada à tabela de base ou uma coluna não utilizada for excluída, nenhuma ação ocorrerá e as atualizações continuarão como antes.

  • A tabela de base subjacente é recriada com nomes e tipos de coluna idênticos.

  • A coluna da tabela de base subjacente é recriada com o mesmo nome e tipo.

Atualização/reinicialização completa: durante o próximo ciclo de atualização, uma atualização completa é feita para garantir que nenhum dado incorreto ou obsoleto esteja na tabela dinâmica.

  • Uma coluna subjacente ou outro elemento usado por uma tabela dinâmica muda de nome ou de alguma outra forma.

O estado da tabela dinâmica muda para FAILED. A tabela dinâmica deve ser recriada para responder à alteração.

Como entender o comportamento de suspensão automática

Nota

Uma tabela dinâmica será suspensa se o sistema observar cinco erros de atualização contínua. As tabelas dinâmicas suspensas devido a erros de atualização são comumente chamadas de suspensas automaticamente pois são suspensas pelo sistema e não por ação do usuário.

Quaisquer tabelas dinâmicas que dependam da tabela dinâmica suspensa também serão suspensas. SCHEDULING_STATE descreve o estado atual de uma tabela dinâmica.

  • Para visualizar o estado de agendamento da tabela dinâmica, chame a função de tabela DYNAMIC_TABLE_GRAPH_HISTORY e examine a coluna SCHEDULING_STATE.