Para inspecionar, auditar ou depurar Dynamic Tables no Hologres, você precisa recuperar definições DDL, listar todas as Dynamic Tables em uma instância, rastrear a linhagem de dados, verificar o consumo de armazenamento e gerenciar tabelas de estado geradas pela atualização incremental. Esta página abrange todas essas tarefas.
|
Tarefa |
Descrição |
|
Recupera a instrução DDL de uma Dynamic Table específica. |
|
|
Consulta todas as Dynamic Tables e seus modos de atualização. |
|
|
Rastreia dependências upstream e downstream pelo console ou por SQL. |
|
|
Verifica o tamanho de armazenamento de uma Dynamic Table. |
|
|
Explica como entender e monitorar a tabela de estado gerada pela atualização incremental. |
Visualizar o esquema de uma Dynamic Table
Use hg_dump_script para recuperar a instrução DDL de uma Dynamic Table.
SELECT hg_dump_script('[<schema_name>.]<table_name>');
Parâmetros
|
Parâmetro |
Obrigatório |
Descrição |
|
|
Não |
Nome do schema que contém a Dynamic Table. |
|
|
Sim |
Nome da Dynamic Table. |
Listar Dynamic Tables na instância atual
A tabela de sistema hologres.hg_dynamic_table_properties armazena os metadados de todas as Dynamic Tables na instância atual.
Para listar todas as Dynamic Tables e seus modos de atualização:
SELECT dynamic_table_name, property_value
FROM hologres.hg_dynamic_table_properties
WHERE property_key = 'refresh_mode';
Para visualizar todos os metadados de uma Dynamic Table específica:
SELECT *
FROM hologres.hg_dynamic_table_properties
WHERE dynamic_table_name = '<dynamic_table_name>';
Colunas em hg_dynamic_table_properties
|
Coluna |
Descrição |
|
|
Nome da Dynamic Table. |
|
|
Schema que contém a Dynamic Table. |
|
|
Nome da propriedade de metadados. Por exemplo, |
|
|
Valor da propriedade. |
Visualizar linhagem de dados
A linhagem de dados mostra de quais tabelas uma Dynamic Table lê (upstream) e quais tabelas ou Dynamic Tables dependem dela (downstream). Essa informação é útil para solucionar atrasos de atualização ou avaliar o impacto de alterações de esquema em um pipeline.
Visualização
Visualize a linhagem como um gráfico interativo no HoloWeb ou no DataWorks Data Map:
HoloWeb: No console do HoloWeb, acesse Table Metadata Management > Dynamic Table Management. Na aba Lineage Information, visualize o gráfico de linhagem da Dynamic Table.
DataWorks Data Map: O DataWorks Data Map coleta e exibe automaticamente a linhagem de dados das Dynamic Tables. Para mais informações, consulte Data lineage.
Método SQL
Todas as consultas de linhagem utilizam a view de sistema hologres.hg_dynamic_table_dependencies, que registra as dependências upstream de cada Dynamic Table.
Colunas em hg_dynamic_table_dependencies
|
Coluna |
Descrição |
|
|
Schema que contém a Dynamic Table. |
|
|
Nome da Dynamic Table. |
|
|
Schema da dependência upstream. |
|
|
Nome da dependência upstream. |
|
|
Tipo de dependência. O valor |
Visualizar a linhagem de dados de uma única Dynamic Table
SELECT
d.*,
CASE WHEN k.dynamic_table_namespace IS NOT NULL THEN
'd'
ELSE
c.relkind
END
FROM
hologres.hg_dynamic_table_dependencies d
LEFT JOIN pg_namespace n ON n.nspname = d.table_namespace
LEFT JOIN pg_class c ON c.relnamespace = n.oid
AND c.relname = d.table_name
LEFT JOIN (
SELECT
dynamic_table_namespace,
dynamic_table_name
FROM
hologres.hg_dynamic_table_properties
GROUP BY
1,
2) k ON k.dynamic_table_namespace = d.table_namespace
AND k.dynamic_table_name = d.table_name
WHERE
d.dynamic_table_namespace = '<schema_name>'
AND d.dynamic_table_name = '<dynamic_table_name>'
AND d.dependency <> 'internal_table';
Visualizar a linhagem de dados de todas as Dynamic Tables
Remova os filtros dynamic_table_namespace e dynamic_table_name para retornar as dependências de todas as Dynamic Tables na instância:
SELECT
d.*,
CASE WHEN k.dynamic_table_namespace IS NOT NULL THEN
'd'
ELSE
c.relkind
END
FROM
hologres.hg_dynamic_table_dependencies d
LEFT JOIN pg_namespace n ON n.nspname = d.table_namespace
LEFT JOIN pg_class c ON c.relnamespace = n.oid
AND c.relname = d.table_name
LEFT JOIN (
SELECT
dynamic_table_namespace,
dynamic_table_name
FROM
hologres.hg_dynamic_table_properties
GROUP BY
1,
2) k ON k.dynamic_table_namespace = d.table_namespace
AND k.dynamic_table_name = d.table_name
WHERE
d.dependency <> 'internal_table';
Entendendo base_table_type
A expressão CASE deriva base_table_type a partir de duas fontes: se a dependência for ela própria uma Dynamic Table (encontrada em hg_dynamic_table_properties), o tipo será 'd'; caso contrário, o tipo vem de pg_class.relkind. A tabela a seguir descreve os valores possíveis.
|
Valor |
Tipo de tabela |
|
|
Tabela comum |
|
|
View |
|
|
View materializada |
|
|
Tabela externa (foreign table) |
|
|
Dynamic Table |
Visualizar detalhes de armazenamento
Use a função hologres.hg_relation_size para consultar o tamanho e os detalhes de armazenamento de uma Dynamic Table. Para mais informações, consulte Visualize table storage details.
Gerencie tabelas de estado
Quando uma Dynamic Table utiliza atualização incremental, o Hologres cria automaticamente uma tabela de estado na camada subjacente para acelerar a computação de dados. Essa tabela armazena resultados de agregação.
Comportamentos principais:
A tabela de estado fica armazenada no table group padrão e não oferece suporte a resharding.
Ao alternar o modo de atualização de incremental para completo, o sistema limpa a tabela de estado por padrão.
Para mais informações sobre atualização incremental e atualização completa, consulte Dynamic Table.
Visualizar o uso de armazenamento da tabela de estado
Execute o comando SQL a seguir para obter o tamanho de armazenamento da tabela de estado. O armazenamento é cobrado com a mesma tarifa de uma tabela padrão. Para mais informações, consulte Visão geral de faturamento.
SELECT pg_size_pretty(hologres.hg_dynamic_table_state_size('<dynamic_table_name>'));