O Amazon Redshift não permitirá mais a criação de UDFs do Python a partir do Patch 198. As UDFs do Python existentes continuarão a funcionar normalmente até 30 de junho de 2026. Para ter mais informações, consulte a publicação de blog
Consulta a tabelas do sistema
Se nem a API de metadados do driver nem os comandos SHOW satisfizerem suas necessidades, você poderá consultar diretamente as tabelas do catálogo do PostgreSQL (pg_*), o esquema de informações (information_schema) ou as visualizações do sistema Amazon Redshift, como SVV_TABLE_INFO.
Essa abordagem é útil para tarefas ad hoc de exploração, depuração ou administração que você executa a partir de consultas SQL interativas, por exemplo, no Editor de Consultas V2 do Amazon Redshift ou psql. No entanto, as estruturas do catálogo do sistema podem mudar em todas as versões do Amazon Redshift. Não recomendamos que você confie em consultas diretas à tabela do sistema como interface de metadados para integrações de aplicativos de produção.
Ao consultar tabelas do sistema, siga estas práticas:
-
Especifique banco de dados, esquema e tabela. Para obter o melhor desempenho, inclua o nome do banco de dados, o nome do esquema e o nome da tabela em seus filtros de consulta. Limitar o escopo reduz a quantidade de metadados que o Amazon Redshift precisa verificar e retornar.
-
Use filtros de igualdade ou LIKE. Use igualdade (
=) ou predicadosLIKEna cláusulaWHEREpara restringir os resultados. Evite consultas não filtradas em grandes visualizações de catálogos. Elas podem ser lentas em clusters com muitos objetos. -
Evite funções em predicados de filtro. Não use funções como
LOWER()ou concatenação de strings na cláusulaWHEREao filtrar consultas de tabelas do sistema. Isso impede pesquisas eficientes de metadados e pode reduzir significativamente o desempenho da consulta.
Exemplo de consultas antipadrão x recomendadas
-- Avoid: SELECT * FROM svv_all_columns; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
-- Avoid: SELECT * FROM svv_all_columns WHERE LOWER(schema_name) = 'public'; -- Recommended: SELECT * FROM svv_all_columns WHERE schema_name = 'public' AND table_name LIKE 'sales%';
-- Avoid: SELECT * FROM svv_all_columns WHERE database_name || '.' || schema_name || '.' || table_name = 'dev.public.sales'; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public' AND table_name = 'sales';
-- Avoid: SELECT * FROM svv_all_columns WHERE CONCAT(database_name, '.', schema_name) = 'dev.public'; -- Recommended: SELECT * FROM svv_all_columns WHERE database_name = 'dev' and schema_name = 'public';