Compartilhar via


Esquema de informações

Aplica-se a:com marcação de verificação sim Databricks SQL com marcação de verificação sim Databricks Runtime 10.4 LTS e superior marca de seleção Sim somente no Catálogo do Unity

No catálogo SYSTEM, o INFORMATION_SCHEMA é um esquema padrão SQL que fornece metadados sobre objetos em todos os catálogos no metastore. Ele não contém metadados sobre hive_metastore objetos.

Separadamente, cada catálogo criado no Catálogo do Unity também inclui automaticamente um information_schema que descreve metadados sobre objetos somente nesse catálogo.

Ambos os tipos de esquemas de informações filtram automaticamente os resultados para incluir apenas os objetos que você tem privilégios do Catálogo do Unity para acessar. Esse comportamento difere de outras tabelas do sistema do Azure Databricks. Veja como as tabelas do sistema de esquema de informações lidam com permissões.

A finalidade do esquema de informações é fornecer uma API baseada em SQL, com reconhecimento de privilégios e autodescrevendo para acessar metadados de catálogo.

Como as tabelas do sistema de esquema de informações lidam com permissões

system.information_schema difere de outras tabelas do sistema, pois implementa a filtragem automática. Isso significa que você vê apenas os objetos (catálogos, esquemas, tabelas, colunas etc.) que você tem privilégios para acessar no Catálogo do Unity. Se seus privilégios mudarem, o que você vê no esquema de informações muda adequadamente. Por exemplo, quando você consulta information_schema.tables, apenas as linhas de tabelas que você tem permissão para ver são retornadas.

Assim como todas as outras tabelas do sistema, você precisa de USE e SELECT permissões explícitas para acessar e consultar o esquema de informações.

Diagrama de relacionamento de entidade do esquema de informações

O diagrama de ER (relacionamento de entidade) a seguir fornece uma visão geral de um subconjunto das exibições de esquema de informações e como elas se relacionam entre si.

Diagrama ER do esquema de informações

Visualizações do esquema de informações

Nome Descrição
CATALOG_PRIVILEGES Lista as entidades de segurança que têm privilégios nos catálogos.
CATALOG_PROVIDER_SHARE_USAGE Descreve o compartilhamento de provedor montado em catálogos.
CATALOG_TAGS Contém etiquetas que foram aplicadas aos catálogos.
CATALOGS Descreve os catálogos.
CHECK_CONSTRAINTS Reservado para uso futuro.
COLUMN_MASKS Descreve as máscaras de coluna nas colunas de tabela no catálogo.
COLUMN_TAGS Contém metadados de marcação das colunas dentro de uma tabela.
COLUMNS Descreve as colunas de tabelas e exibições no catálogo.
CONNECTION_PRIVILEGES Lista entidades que têm privilégios nas conexões com o exterior.
CONNECTIONS Descreve conexões externas.
CONSTRAINT_COLUMN_USAGE Descreve as restrições que fazem referência a colunas no catálogo.
CONSTRAINT_TABLE_USAGE Descreve as restrições que fazem referência a tabelas no catálogo.
CREDENTIAL_PRIVILEGES Lista as entidades de segurança que têm privilégios nas credenciais.
CREDENTIALS Descreve as credenciais.
EXTERNAL_LOCATION_PRIVILEGES Lista as entidades de segurança que têm privilégios nos locais externos.
EXTERNAL_LOCATIONS Descreve locais externos.
INFORMATION_SCHEMA_CATALOG_NAME Retorna o nome do catálogo deste esquema de informações.
KEY_COLUMN_USAGE Lista as colunas das restrições de chave primária ou estrangeira no catálogo.
METASTORE_PRIVILEGES Lista as entidades de segurança que têm privilégios no metastore atual.
METASTORES Descreve o metastore atual.
PARAMETERS Descreve os parâmetros de rotinas (funções) no catálogo.
PROVIDERS Descreve provedores.
RECIPIENT_ALLOWED_IP_RANGES Lista intervalos de IP permitidos para destinatários.
RECIPIENT_TOKENS Lista tokens para destinatários.
RECIPIENTS Descreve os destinatários.
REFERENTIAL_CONSTRAINTS Descreve restrições referenciais (chave estrangeira) definidas no catálogo.
ROUTINE_COLUMNS Descreve colunas de resultados de funções com valor de tabela.
ROUTINE_PRIVILEGES Lista as entidades de segurança que têm privilégios nas rotinas do catálogo.
ROUTINES Descreve as rotinas (funções) no catálogo.
ROW_FILTERS Descreve os filtros de linha nas tabelas no catálogo.
SCHEMA_PRIVILEGES Lista as entidades de segurança que têm privilégios nos esquemas do catálogo.
SCHEMA_TAGS Contém metadados de marcação de esquema dentro do esquema.
SCHEMA_SHARE_USAGE Descreve os esquemas referenciados em compartilhamentos.
SCHEMATA Descreve os esquemas do catálogo.
SHARE_RECIPIENT_PRIVILEGES Descreve os destinatários que receberam acesso aos compartilhamentos.
SHARES Descreve compartilhamentos.
STORAGE_CREDENTIAL_PRIVILEGES [Obsoleto] Lista princípios que têm privilégios nas credenciais de armazenamento.
STORAGE_CREDENTIALS [Obsoleto] Descreve as credenciais de armazenamento.
TABLE_CONSTRAINTS Descreve metadados de todas as restrições de chave primária e estrangeira no catálogo.
TABLE_PRIVILEGES Lista as entidades de segurança que têm privilégios nas tabelas e nas exibições do catálogo.
TABLE_SHARE_USAGE Descreve as tabelas referenciadas em compartilhamentos.
TABLE_TAGS Contém metadados de marcação de tabela em uma tabela.
TABLES Descreve as tabelas e exibições definidas no catálogo.
VIEWS Descreve informações específicas sobre as exibições no catálogo.
VOLUMES Descreve volumes definidos no catálogo.
VOLUME_PRIVILEGES Lista as entidades de segurança que têm privilégios nos volumes do catálogo.
VOLUME_TAGS Contém metadados de marcação de volume aplicados a um volume.

Observações

  • O esquema de informações implementa a filtragem com reconhecimento de privilégios. Você verá automaticamente apenas os objetos que você tem permissões do Catálogo do Unity para acessar. Veja como as tabelas do sistema de esquema de informações lidam com permissões.
  • Uma sincronização manual usando REPAIR TABLE pode ser necessária para que algumas alterações de metadados de catálogo sejam refletidas no esquema de informações. Para obter mais informações, consulte REPAIR TABLE.
  • Todos os identificadores, exceto nomes de colunas e marcas, são armazenados no esquema de informações como STRING em minúsculas. Para o desempenho da consulta, evite usar funções como LOWER() ou UPPER() na coluna do identificador. Em vez disso, compare os identificadores diretamente usando valores minúsculos.
  • Para evitar tempos limite de consulta, aplique filtros seletivos ao consultar o esquema de informações (por exemplo WHERE table_catalog = 'main' AND table_schema = 'default'). Consulte a documentação acima para obter uma lista completa de colunas que podem ser usadas como filtros para cada tabela esquema de informações.
    • Observe que não há suporte para pushdown LIMITno momento, portanto, embora ele possa truncar os resultados, ele não melhorará o desempenho.

Exemplos

> SELECT table_name, column_name
    FROM information_schema.columns
    WHERE data_type = 'DOUBLE'
      AND table_schema = 'information_schema';

Veja a seguir exemplos de fluxos de trabalho que usam as tabelas de esquema de informações no nível do sistema.

Se quiser ver todas as tabelas que foram criadas nas últimas 24 horas, sua consulta será semelhante à seguinte.

> SELECT table_name, table_owner, created_by, last_altered, last_altered_by, table_catalog
    FROM system.information_schema.tables
    WHERE  datediff(now(), last_altered) < 1;

Se quiser ver quantas tabelas você tem em cada esquema, veja o exemplo a seguir.

> SELECT table_schema, count(table_name)
    FROM system.information_schema.tables
    WHERE table_schema = 'tpch'
    GROUP BY table_schema
    ORDER BY 2 DESC