Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :
Databricks SQL
Databricks Runtime 10.4 LTS et versions ultérieures
Unity Catalog uniquement
Dans le SYSTEM catalogue, le INFORMATION_SCHEMA est un schéma standard SQL qui fournit des métadonnées sur les objets dans tous les catalogues du metastore. Il ne contient pas de métadonnées sur hive_metastore les objets.
Séparément, chaque catalogue créé dans le catalogue Unity inclut également automatiquement une information_schema description des métadonnées relatives aux objets de ce catalogue uniquement.
Les deux types de schémas d’informations filtrent automatiquement les résultats pour inclure uniquement les objets auxquels vous disposez des privilèges de catalogue Unity. Ce comportement diffère des autres tables système Azure Databricks. Découvrez comment les tables système de schéma d’informations gèrent les autorisations.
L’objectif du schéma d’informations est de fournir une API basée sur des privilèges, basée sur SQL et auto-décrivant l’accès aux métadonnées du catalogue.
Comment les tables système de schéma d’information gèrent les autorisations
system.information_schema diffère d’autres tables système dans lesquelles il implémente le filtrage automatique. Cela signifie que vous voyez uniquement les objets (catalogues, schémas, tables, colonnes, etc.) auxquels vous avez des privilèges d’accès dans le catalogue Unity. Si vos privilèges changent, ce que vous voyez dans le schéma d’informations change en conséquence. Par exemple, lorsque vous interrogez information_schema.tables, seules les lignes des tables que vous avez l’autorisation de voir sont retournées.
Comme toutes les autres tables système, vous avez besoin d’autorisations explicites USE et SELECT pour accéder et interroger le schéma d'information.
Diagramme de relations d’entités du schéma d’informations
Le diagramme de relation d'entité (ER) suivant fournit une vue d'ensemble d'un sous-ensemble de vues de schéma d'informations et de la façon dont elles sont liées les unes aux autres.
Vues des schémas d'information
| Nom | Descriptif |
|---|---|
| CATALOG_PRIVILEGES | Répertorie les principaux qui ont des privilèges sur les catalogues. |
| CATALOG_PROVIDER_SHARE_USAGE | Décrit le partage de fournisseur monté sur des catalogues. |
| CATALOG_TAGS | Contient les étiquettes qui ont été appliquées aux catalogues. |
| CATALOGS | Décrit les catalogues. |
| CHECK_CONSTRAINTS | Réservé pour un usage futur. |
| COLUMN_MASKS | Décrit les masques de colonne sur les colonnes de tableau dans le catalogue. |
| COLUMN_TAGS | Contient des métadonnées pour l'étiquetage des colonnes dans une table. |
| COLUMNS | Décrit les colonnes de tables et vues dans le catalogue. |
| CONNECTION_PRIVILEGES | Répertorie les principaux qui ont des privilèges sur les connections étrangères. |
| CONNECTIONS | Décrit les connexions étrangères. |
| CONSTRAINT_COLUMN_USAGE | Décrit les contraintes faisant référence à des colonnes dans le catalogue. |
| CONSTRAINT_TABLE_USAGE | Décrit les contraintes faisant référence à des tables dans le catalogue. |
| CREDENTIAL_PRIVILEGES | Répertorie les principaux qui ont des privilèges sur les informations d’identification. |
| CREDENTIALS | Décrit les informations d’identification. |
| EXTERNAL_LOCATION_PRIVILEGES | Répertorie les utilisateurs principaux qui ont des privilèges sur les emplacements externes. |
| EXTERNAL_LOCATIONS | Décrit les emplacements externes. |
| INFORMATION_SCHEMA_CATALOG_NAME | Retourne le nom du catalogue de ce schéma d'information. |
| KEY_COLUMN_USAGE | Liste les colonnes des contraintes de clé primaire ou étrangère dans le catalogue. |
| METASTORE_PRIVILEGES | Répertorie les principaux qui ont des privilèges sur le metastore actuel. |
| METASTORES | Décrit le metastore actuel. |
| PARAMETERS | Décrit les paramètres de routines (fonctions) dans le catalogue. |
| PROVIDERS | Décrit les fournisseurs. |
| RECIPIENT_ALLOWED_IP_RANGES | Répertorie les plages d’adresses IP autorisées pour les destinataires. |
| RECIPIENT_TOKENS | Répertorie les jetons pour les destinataires. |
| RECIPIENTS | Décrit les destinataires. |
| REFERENTIAL_CONSTRAINTS | Décrit les contraintes référentielles (clé étrangère) définies dans le catalogue. |
| ROUTINE_COLUMNS | Décrit les colonnes de résultat des fonctions table. |
| ROUTINE_PRIVILEGES | Répertorie les entités qui ont des privilèges sur les routines du catalogue. |
| ROUTINES | Décrit les routines (fonctions) fournies dans le catalogue. |
| ROW_FILTERS | Décrit les filtres de lignes sur les tables du catalogue. |
| SCHEMA_PRIVILEGES | Répertorie les principaux qui ont des privilèges sur les schémas dans le catalogue. |
| SCHEMA_TAGS | Contient les métadonnées d’étiquetage de schéma dans le schéma. |
| SCHEMA_SHARE_USAGE | Décrit les schémas référencés dans les partages. |
| SCHEMATA | Décrit les schémas dans le catalogue. |
| SHARE_RECIPIENT_PRIVILEGES | Décrit les destinataires auxquels l’accès aux partages a été accordé. |
| SHARES | Décrit les partages. |
| STORAGE_CREDENTIAL_PRIVILEGES | [Déconseillé] Répertorie les principaux qui ont des privilèges sur les informations d'identification de stockage. |
| STORAGE_CREDENTIALS | [Déconseillé] Décrit les informations d’identification de stockage. |
| TABLE_CONSTRAINTS | Décrit les métadonnées pour toutes les contraintes de clé primaire et étrangère dans le catalogue. |
| TABLE_PRIVILEGES | Répertorie les principaux qui ont des privilèges sur les tables et vues du catalogue. |
| TABLE_SHARE_USAGE | Décrit les tables référencées dans les partages. |
| TABLE_TAGS | Contient les métadonnées d’étiquetage de table dans une table. |
| TABLES | Décrit les tables et les vues définies dans le catalogue. |
| VIEWS | Décrit les informations propres aux vues du catalogue. |
| VOLUMES | Décrit les volumes définis dans le catalogue. |
| VOLUME_PRIVILEGES | Répertorie les entités principales qui possèdent des privilèges sur les volumes du catalogue. |
| VOLUME_TAGS | Contient les métadonnées de balise de volume appliquées au volume. |
Remarques
- Le schéma d’informations implémente le filtrage prenant en compte les privilèges. Vous voyez automatiquement uniquement les objets pour lesquels vous avez des autorisations dans Unity Catalog. Découvrez comment les tables système de schéma d’informations gèrent les autorisations.
- Une synchronisation manuelle à l’aide
REPAIR TABLEpeut être nécessaire pour que certaines modifications de métadonnées de catalogue soient reflétées dans le schéma d’informations. Pour plus d’informations, consultez REPAIR TABLE. - Tous les identificateurs , à l’exception des noms de colonne et de balise, sont stockés dans le schéma d’informations en minuscules
STRING. Pour les performances des requêtes, évitez d’utiliser des fonctions telles queLOWER()ouUPPER()sur la colonne d’identificateur. Au lieu de cela, comparez les identificateurs directement à l’aide de valeurs minuscules. - Pour empêcher les délais d’expiration des requêtes, appliquez des filtres sélectifs lors de l’interrogation du schéma d’informations (par exemple
WHERE table_catalog = 'main' AND table_schema = 'default'). Reportez-vous à la documentation ci-dessus pour obtenir la liste complète des colonnes qui peuvent être utilisées comme filtres pour chaque table de schéma d’informations.- Notez que la fonctionnalité pushdown
LIMITn’est pas prise en charge actuellement. Par conséquent, bien qu’elle puisse tronquer les résultats, cela n’améliorera pas les performances.
- Notez que la fonctionnalité pushdown
Exemples
> SELECT table_name, column_name
FROM information_schema.columns
WHERE data_type = 'DOUBLE'
AND table_schema = 'information_schema';
Voici des exemples de workflows qui utilisent des tables de schéma d’informations au niveau du système.
Si vous souhaitez voir toutes les tables qui ont été créées au cours des dernières 24 heures, votre requête peut ressembler à la suivante.
> 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;
Si vous souhaitez voir le nombre de tables qui se trouvent dans chaque schéma, considérez l’exemple suivant.
> SELECT table_schema, count(table_name)
FROM system.information_schema.tables
WHERE table_schema = 'tpch'
GROUP BY table_schema
ORDER BY 2 DESC