Monitoramento de tabelas dinâmicas¶
O tópico descreve as maneiras pelas quais você pode visualizar e entender as tabelas dinâmicas em seus pipelines:
Seção |
Descrição |
---|---|
Liste as tabelas dinâmicas ou visualize as informações sobre colunas específicas |
Liste as tabelas dinâmicas em um esquema e visualize as informações sobre elas. |
Visualize o gráfico das tabelas conectadas às suas tabelas dinâmicas |
Veja o gráfico de tabelas conectadas às suas tabelas dinâmicas. |
Monitore suas tabelas dinâmicas usando as funções de tabela SQL |
Monitore suas tabelas dinâmicas usando as funções de tabela SQL. |
Veja o status de atualização de suas tabelas dinâmicas. |
Liste as tabelas dinâmicas ou visualize as informações sobre colunas específicas¶
Para listar as tabelas dinâmicas em um esquema e exibir informações sobre essas tabelas dinâmicas, você pode usar os seguintes comandos SQL ou o Snowsight, desde que use uma função que tenha o privilégio MONITOR nas tabelas dinâmicas.
Para obter mais informações, consulte Privilégios para visualizar os metadados de uma tabela dinâmica.
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;
+-------------------+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| created_on | name | database_name | schema_name | cluster_by | rows | bytes | owner | target_lag | refresh_mode | refresh_mode_reason | warehouse | comment | text | automatic_clustering | scheduling_state | last_suspended_on | is_clone | is_replica | is_iceberg | data_timestamp | owner_role_type |
|-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
|2025-01-01 16:32:28 +0000 | product_dt | my_db | my_schema | | 2 | 2048 | ORGADMIN | DOWNSTREAM | INCREMENTAL | null | mywh | | create or replace dynamic table | OFF | ACTIVE | null | false | false | false |2025-01-01 16:32:28 +0000 | ROLE |
| product dt ... | | |
+-------------------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Para obter informações sobre as colunas em uma tabela dinâmica, use o comando DESCRIBE DYNAMIC TABLE.
Por exemplo, para listar as colunas em my_dynamic_table
, execute a seguinte instrução SQL:
DESC DYNAMIC TABLE my_dynamic_table;
+-------------------+--------------------------------------------------------------------------------------------------------------------------+
| name | type | kind | null? | default | primary key | unique key | check | expression | comment | policy name | privacy domain |
|-------------------+------------------------------------------------------------------------------------------------------------------------|
| AMOUNT | NUMBER(38,0) | COLUMN | Y | null | N | N | null | null | null | null | null | | |
+-------------------+------------------------------------------------------------------------------------------------------------------------+
As tabelas dinâmicas também estão incluídas nos resultados de Exibição TABLES.
Para listar as tabelas dinâmicas em um esquema e visualizar informações sobre uma tabela dinâmica específica, faça o seguinte
Faça login no Snowsight.
Selecione Data » Databases.
Selecione um banco de dados e um esquema.
Selecione a guia Dynamic Tables ou expanda Dynamic Tables no explorador de objetos do banco de dados.
Para visualizar informações sobre uma tabela dinâmica específica, selecione a tabela dinâmica na lista de tabelas dinâmicas na guia Dynamic Tables ou no explorador de objetos do banco de dados.
As guias dessa página fornecem os seguintes detalhes sobre a tabela dinâmica selecionada:
Table Details: exibe informações básicas sobre a tabela dinâmica, inclusive:
O estado de programação de sua tabela dinâmica.
O último status de atualização de sua tabela dinâmica. Para atualizações com falha, você pode ver mais informações sobre o erro se passar o mouse sobre o status.
A atraso de destino e atual de sua tabela dinâmica.
Se atualizações incrementais ou atualizações completas são usadas para atualizar a tabela.
A definição da tabela dinâmica.
As tags da tabela dinâmica.
Os privilégios concedidos para trabalhar com a tabela dinâmica.
Columns: informações sobre as colunas na tabela dinâmica.
Data Preview: uma visualização de até 100 linhas de dados na tabela dinâmica.
Graph: exibe o gráfico acíclico direcionado (DAG) que inclui essa tabela dinâmica.
Refresh History: exibe o histórico de atualizações e as métricas de atraso.
Visualize o gráfico das tabelas conectadas às suas tabelas dinâmicas¶
A exibição de dependências é particularmente útil para solucionar problemas de cadeias de tabelas dinâmicas. No Snowsight, você pode visualizar de quais tabelas dinâmicas uma determinada tabela dinâmica depende usando o gráfico de linhagem. Por exemplo, você pode identificar o seguinte:
Dependências upstream de onde uma tabela dinâmica extrai dados.
Dependências downstream que podem ser afetadas por alterações em uma tabela dinâmica.

As dependências podem afetar o desempenho da atualização. Por exemplo, suponha que a tabela upstream de sua tabela dinâmica tenha uma grande carga de dados adicionada pouco antes de sua atualização programada. Sua tabela dinâmica aguardará que ela termine a atualização, fazendo com que ela não atinja o atraso de destino. No gráfico de linhagem, você veria a tabela de entrada marcada como “executando”, indicando o atraso.
Para visualizar o gráfico de uma determinada tabela dinâmica, faça o seguinte:
Faça login no Snowsight.
No menu de navegação, acesse Monitoring » Dynamic Tables.
Selecione sua tabela dinâmica. A exibição Graph é exibida por padrão. Isso exibe o gráfico com o nó para a tabela dinâmica selecionada. O painel Details à direita exibe informações sobre suas métricas de atraso e configuração.
Para exibir os detalhes de uma tabela diferente no gráfico, selecione essa tabela.
Para atualizar o gráfico, selecione o botão de atualização na barra acima do gráfico.

Se uma atualização falhar devido a um código de erro UPSTREAM_FAILED, você pode usar o gráfico para visualizar qual tabela upstream causou a falha.

Para visualizar os detalhes completos de uma tabela no gráfico, consulte Liste as tabelas dinâmicas ou visualize as informações sobre colunas específicas.
Monitore suas tabelas dinâmicas usando as funções de tabela SQL¶
Use as seguintes funções de tabela INFORMATION_SCHEMA para monitorar suas tabelas dinâmicas:
DYNAMIC_TABLES: retorna metadados sobre suas tabelas dinâmicas, incluindo as métricas de atraso agregadas e o status das atualizações mais recentes, dentro de sete dias a partir da hora atual.
DYNAMIC_TABLE_REFRESH_HISTORY: retorna informações sobre cada atualização concluída e em execução de suas tabelas dinâmicas, incluindo o status da atualização, o acionador e o atraso de destino.
Exibição DYNAMIC_TABLE_REFRESH_HISTORY: essa exibição Account Usage também exibe informações sobre o histórico de atualização da tabela dinâmica. É útil para a depuração de problemas que são mais longos do que o tempo de retenção de dados da função de tabela DYNAMIC_TABLE_REFRESH_HISTORY (sete dias).
DYNAMIC_TABLE_GRAPH_HISTORY: retorna informações que fornecem o histórico de cada tabela dinâmica, suas propriedades e suas dependências em relação a outras tabelas e tabelas dinâmicas.
Você pode usar esta função de tabela para obter um instantâneo da árvore de dependência de tabelas dinâmicas em um determinado ponto no tempo.
A saída também reflete as alterações feitas nas propriedades de uma tabela dinâmica ao longo do tempo. Cada linha representa uma tabela dinâmica e um conjunto específico de propriedades. Se você alterar uma propriedade de uma tabela dinâmica (por exemplo, o atraso de destino), a função retornará a propriedade mais atualizada.
Monitore o status de atualização de suas tabelas dinâmicas¶
Esta seção explica como visualizar o status de atualização de todas as tabelas dinâmicas ou de tabelas dinâmicas específicas.
Para obter atualizações sobre a solução de problemas, consulte Solução de problemas de atualizações de tabelas dinâmicas ignoradas, lentas ou com falha e Diagnóstico de problemas comuns de atualização dinâmica de tabelas.
Monitore as atualizações de todas as suas tabelas dinâmicas¶
Você pode usar o Snowsight ou a função de tabela DYNAMIC_TABLES para visualizar o status de atualização de todas as tabelas dinâmicas.
Faça login no Snowsight. No menu de navegação, selecione Monitoring » Dynamic Tables.
Você pode visualizar o estado e o status da última atualização de todas as suas tabelas dinâmicas nessa página. Você também pode filtrar por banco de dados ou esquema para restringir os resultados.

DYNAMIC_TABLES fornece informações sobre todas as tabelas dinâmicas em sua conta.
O exemplo a seguir recupera as informações sobre o estado e a atraso de destino de todas as tabelas dinâmicas na conta e seu banco de dados e esquema associados.
SELECT
name,
database_name,
schema_name,
scheduling_state,
target_lag_type,
target_lag_sec,
FROM
TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLES ()
)
ORDER BY
name;
+--------------------+------------------------------+--------------------------------------------------------------------------------------------------+-----------------+----------------+
| NAME | DATABASE_NAME | SCHEMA_NAME | SCHEDULING_STATE | TARGET_LAG_TYPE | TARGET_LAG_SEC |
|--------------------+------------------------------+--------------------------------------------------------------------------------------------------|-----------------+----------------+
| MY_DYNAMIC_TABLE_1 | MY_DB_1 | MY_SCHEMA_1 | { | | |
| | | | "reason_code": "UPSTREAM_SUSPENDED_DUE_TO_ERRORS", | | |
| | | | "reason_message": "The DT was suspended because an input DT had 5 consecutive refresh errors", | | |
| | | | "state": "SUSPENDED", | | |
| | | | "suspended_on": "2025-04-14 11:49:09.576 Z" | USER_DEFINED | 60 |
| | | | } | | |
| MY_DYNAMIC_TABLE_2 | MY_DB_2 | MY_SCHEMA_2 | null | | |
+--------------------+------------------------------+--------------------------------------------------------------------------------------------------+-----------------+----------------|
O exemplo a seguir recupera o estado e as informações sobre cada estado para atualização de todas as tabelas dinâmicas da conta.
-- latest_data_timestamp is the refresh timestamp associated with last successful refresh.
SELECT
name,
last_completed_refresh_state,
last_completed_refresh_state_code,
last_completed_refresh_state_message,
latest_data_timestamp,
time_within_target_lag_ratio,
maximum_lag_sec,
executing_refresh_query_id
FROM
TABLE (
INFORMATION_SCHEMA.DYNAMIC_TABLES ()
)
ORDER BY
name;
-- Both dynamic tables in the example below have a target lag of one minute.
+--------------------+------------------------------+-----------------------------------+-----------------------------------------------+-----------------------+------------------------------+-----------------+----------------------------+
| NAME | LAST_COMPLETED_REFRESH_STATE | LAST_COMPLETED_REFRESH_STATE_CODE | LAST_COMPLETED_REFRESH_STATE_MESSAGE | LATEST_DATA_TIMESTAMP | TIME_WITHIN_TARGET_LAG_RATIO | MAXIMUM_LAG_SEC | EXECUTING_REFRESH_QUERY_ID |
|--------------------+------------------------------+-----------------------------------+-----------------------------------------------|-----------------------+------------------------------+-----------------+----------------------------+
| MY_DYNAMIC_TABLE_1 | UPSTREAM_FAILED | UPSTREAM_FAILURE | Skipped refreshing because an input DT failed | 2025-04-12 09:00:48 | null | null | null |
| MY_DYNAMIC_TABLE_2 | SUCCEEDED | SUCCESS | null | 2025-04-12 09:01:36 | 0.999 | 125 | null |
+--------------------+------------------------------+-----------------------------------+-----------------------------------------------+-----------------------+------------------------------+-----------------+----------------------------+
Monitore todas as atualizações de uma tabela dinâmica específica¶
Você pode usar o Snowsight ou a função de tabela DYNAMIC_TABLES_REFRESH_HISTORY para visualizar o histórico de atualização de uma determinada tabela dinâmica.
Faça login no Snowsight.
No menu de navegação, selecione Monitoring » Dynamic Tables.
Selecione sua tabela dinâmica e vá para a guia Refresh History.
Essa página exibe o histórico de atualização da tabela dinâmica, que inclui informações sobre o status, a duração e o tempo de atraso real de cada atualização, além do número de linhas alteradas em cada atualização.
Ele também exibe a métrica de atraso da tabela dinâmica, que inclui a porcentagem do tempo dentro do atraso de destino e o tempo de atraso real mais longo durante o intervalo determinado.

Para visualizar o histórico de atualização de uma tabela dinâmica específica, use a função de tabela DYNAMIC_TABLE_REFRESH_HISTORY.
Por exemplo, se você quiser visualizar o histórico de atualização de todas as tabelas dinâmicas no banco de dados my_db
e no esquema my_schema
, execute a seguinte instrução:
SELECT
name,
data_timestamp,
state,
state_code,
state_message
FROM TABLE (INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (NAME_PREFIX => 'MY_DB.MY_SCHEMA')) ORDER BY data_timestamp desc;
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+
| NAME | DATA_TIMESTAMP | STATE | STATE_CODE | STATE_MESSAGE |
|--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------|
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:01:36 | SKIPPED | SKIP_DUE_TO_UPSTREAM_FAILURE | Skipped refreshing because an input DT failed. |
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:00:48 | SUCCEEDED | | |
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:00:00 | FAILED | 100038 | Numeric value 'Good' is not recognized. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:01:36 | SUCCEEDED | | |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:48 | FAILED | 091930 | SQL compilation error: Change tracking is not enabled or has |
| | | | | been missing for the time range requested on table 'MY_TABLE'. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:00 | CANCELLED | 002724 | Dynamic Table refresh job cancelled. |
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+
Para filtrar as atualizações com erros, passe o argumento ERROR_ONLY => TRUE
. Por exemplo:
SELECT
name,
data_timestamp,
state,
state_code,
state_message
FROM TABLE (INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (NAME_PREFIX => 'MY_DB.MY_SCHEMA', ERROR_ONLY => TRUE));
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+
| NAME | DATA_TIMESTAMP | STATE | STATE_CODE | STATE_MESSAGE |
|--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------|
| MY_DYNAMIC_TABLE_1 | 2025-04-12 09:00:00 | FAILED | 100038 | Numeric value 'Good' is not recognized. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:48 | FAILED | 091930 | SQL compilation error: Change tracking is not enabled or has |
| | | | | been missing for the time range requested on table 'MY_TABLE'. |
| MY_DYNAMIC_TABLE_2 | 2025-04-12 09:00:00 | CANCELLED | 002724 | Dynamic Table refresh job cancelled. |
+--------------------+---------------------+-----------+------------------------------+----------------------------------------------------------------+