Gestion des nouvelles colonnes dans la sortie d’une commande SHOW et les vues Snowflake

Périodiquement, de nouvelles colonnes seront introduites dans la sortie des commandes SHOW <objets> et dans les vues Snowflake (telles que les vues dans le schéma ACCOUNT_USAGE dans la base de données SNOWFLAKE et les vues dans le schéma INFORMATION_SCHEMA).

Si vous avez un script ou un code qui dépend du jeu de résultats, y compris un nombre spécifique de colonnes ou qui dépend de l’ordre des colonnes, l’introduction d’une nouvelle colonne peut affecter ce script ou ce code.

Solution temporaire à un problème introduit par une nouvelle colonne

Si votre script ou votre code rencontre des problèmes dus à l’introduction de nouvelles colonnes, votre administrateur Snowflake (un utilisateur qui a obtenu le rôle ACCOUNTADMIN) peut modifier les colonnes qui sont renvoyées pour les exécutions d’une commande SHOW spécifique ou de requêtes SELECT * d’une vue Snowflake. Ces colonnes sont appelées colonnes par défaut.

Remplacement des colonnes par défaut d’une commande SHOW

Pour exclure les colonnes nouvellement introduites depuis la sortie d’une commande SHOW, appelez la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND en spécifiant le type d’objet et la liste des colonnes à renvoyer.

Supposons qu’une nouvelle colonne direction a été introduite dans la sortie de la commande SHOW NOTIFICATION INTEGRATIONS. Pour éviter que la nouvelle colonne direction soit incluse dans la sortie de la commande, appelez SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND en spécifiant 'NOTIFICATION INTEGRATIONS' comme type d’objet. Transmettez une liste, séparée par des virgules, des colonnes qui doivent être retournées dans la sortie (une liste qui exclut les direction) :

SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
  'NOTIFICATION INTEGRATIONS',
  'name, type, category, enabled, comment, created_on'
);
Copy

Lorsque quelqu’un de votre compte exécute la commande SHOW NOTIFICATION INTEGRATIONS, la nouvelle colonne direction ne sera pas renvoyée dans la sortie.

SHOW NOTIFICATION INTEGRATIONS;
Copy
+--------------------------------+---------+--------------+---------+---------+-------------------------------+
| name                           | type    | category     | enabled | comment | created_on                    |
|--------------------------------+---------+--------------+---------+---------+-------------------------------|
| SLACK_NOTIFICATION_INTEGRATION | WEBHOOK | NOTIFICATION | true    | NULL    | 2025-07-02 06:14:53.859 -0700 |
+--------------------------------+---------+--------------+---------+---------+-------------------------------+

Réinitialisation des colonnes par défaut d’une commande SHOW

Si vous devez annuler un appel SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND précédent et renvoyer toutes les colonnes dans la commande SHOW pour un type d’objet spécifique, appelez la fonction SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND, spécifiant le type d’objet. Par exemple :

SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
  'NOTIFICATION INTEGRATIONS'
);
Copy

Obtention de la liste des colonnes par défaut pour une commande SHOW

Si vous devez déterminer si la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND a été appelée pour un type d’objet spécifique et que vous voulez que la liste des colonnes soit retournée dans la sortie de la commande, appelez la fonction SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND en spécifiant le type d’objet. Par exemple :

SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
  'NOTIFICATION INTEGRATIONS'
);
Copy
+-------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND( |
|   'NOTIFICATION INTEGRATIONS'                         |
| )                                                     |
|-------------------------------------------------------|
| name,type,category,enabled,comment,created_on         |
+-------------------------------------------------------+

Si la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND n’a pas été appelée auparavant ou si la fonction SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND a été appelée, la fonction renvoie une chaîne vide.

SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
  'NOTIFICATION INTEGRATIONS'
);

SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
  'NOTIFICATION INTEGRATIONS'
);
Copy
+-------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND( |
|   'NOTIFICATION INTEGRATIONS'                         |
| )                                                     |
|-------------------------------------------------------|
|                                                       |
+-------------------------------------------------------+

Remplacement des colonnes par défaut pour une vue Snowflake

Pour exclure les colonnes nouvellement introduites des résultats d’une requête SELECT * d’une vue Snowflake, appelez la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT en spécifiant le type d’objet, la base de données et le schéma contenant la vue, le nom de la vue et la liste des colonnes à renvoyer.

Supposons qu’une nouvelle colonne replicable_with_failover_groups a été introduite dans la vue DATABASES dans le schéma ACCOUNT_USAGE. Pour éviter que la nouvelle colonne replicable_with_failover_groups soit renvoyée dans les résultats d’une requête SELECT * de la vue, appelez SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT en spécifiant 'VIEW' comme type d’objet, 'SNOWFLAKE' comme base de données, 'ACCOUNT_USAGE' comme schéma et 'TABLES' comme vue. Transmettez une liste, séparée par des virgules, des colonnes qui doivent être retournées dans la sortie (une liste qui exclut les replicable_with_failover_groups) :

SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  'SNOWFLAKE',
  'ACCOUNT_USAGE',
  'DATABASES',
  'database_id, database_name, database_owner, is_transient, ' ||
  'comment, created, last_altered, deleted, retention_time, '  ||
  'resource_group, type, owner_role_type, object_visibility'
);
Copy

L’exemple utilise opérateur || pour construire une chaîne qui contient la liste des colonnes séparées par des virgules.

Lorsqu’un utilisateur de votre compte effectue une requête SELECT * de la vue DATABASES, la nouvelle colonne replicable_with_failover_groups ne sera pas renvoyée dans la sortie.

SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.DATABASES;
Copy
+-------------+---------------+----------------+--------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+----------------+----------+-----------------+-------------------+
| DATABASE_ID | DATABASE_NAME | DATABASE_OWNER | IS_TRANSIENT | COMMENT | CREATED                       | LAST_ALTERED                  | DELETED                       | RETENTION_TIME | RESOURCE_GROUP | TYPE     | OWNER_ROLE_TYPE | OBJECT_VISIBILITY |
|-------------+---------------+----------------+--------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+----------------+----------+-----------------+-------------------|
|          55 | MY_DATABASE   | NULL           | NO           | NULL    | 2025-07-16 15:17:55.990 -0700 | 2025-07-17 15:19:52.305 -0700 | 2025-07-16 15:18:32.973 -0700 |              1 | NULL           | STANDARD | NULL            | NULL              |
+-------------+---------------+----------------+--------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+----------------+----------+-----------------+-------------------+

Si vous devez appeler cette fonction pour une vue INFORMATION_SCHEMA, transmettez une chaîne vide pour le nom de la base de données. Par exemple, pour exclure la colonne replicable_with_failover_groups des résultats des requêtes SELECT * de la vue DATABASES dans le schéma INFORMATION_SCHEMA :

SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  '',
  'INFORMATION_SCHEMA',
  'DATABASES',
  'database_name, database_owner, is_transient, comment, ' ||
  'created, last_altered, retention_time, type, '          ||
  'owner_role_type'
);
Copy

Réinitialisation des colonnes par défaut d’une vue Snowflake

Si vous devez annuler un appel de la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT précédent et renvoyer toutes les colonnes dans une requête SELECT * d’une vue Snowflake, appelez la fonction SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT en spécifiant le type d’objet, la base de données et le schéma contenant la vue, ainsi que le nom de la vue. Par exemple :

SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  'SNOWFLAKE',
  'ACCOUNT_USAGE',
  'DATABASES'
);
Copy

Si vous devez appeler cette fonction pour une vue INFORMATION_SCHEMA, transmettez une chaîne vide pour le nom de la base de données. Par exemple :

SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  '',
  'INFORMATION_SCHEMA',
  'DATABASES'
);
Copy

Obtenir la liste des colonnes par défaut pour une vue Snowflake

Si vous devez déterminer si la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT a été appelée pour une vue spécifique et si vous souhaitez obtenir la liste des colonnes qui seront renvoyées dans une requête SELECT * de cette vue, appelez la fonction SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT en spécifiant le type d’objet, la base de données et le schéma contenant la vue, ainsi que le nom de la vue. Par exemple :

SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  'SNOWFLAKE',
  'ACCOUNT_USAGE',
  'DATABASES'
);
Copy
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(                                                                                                          |
|   'VIEW',                                                                                                                                                       |
|   'SNOWFLAKE',                                                                                                                                                  |
|   'ACCOUNT_USAGE',                                                                                                                                              |
|   'DATABASES'                                                                                                                                                   |
| )                                                                                                                                                               |
|-----------------------------------------------------------------------------------------------------------------------------------------------------------------|
| DATABASE_ID,DATABASE_NAME,DATABASE_OWNER,IS_TRANSIENT,COMMENT,CREATED,LAST_ALTERED,DELETED,RETENTION_TIME,RESOURCE_GROUP,TYPE,OWNER_ROLE_TYPE,OBJECT_VISIBILITY |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+

Si vous devez appeler cette fonction pour une vue INFORMATION_SCHEMA, transmettez une chaîne vide pour le nom de la base de données. Par exemple :

SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  '',
  'INFORMATION_SCHEMA',
  'DATABASES'
);
Copy
+------------------------------------------------------------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(                                                     |
|   'VIEW',                                                                                                  |
|   '',                                                                                                      |
|   'INFORMATION_SCHEMA',                                                                                    |
|   'DATABASES'                                                                                              |
| )                                                                                                          |
|------------------------------------------------------------------------------------------------------------|
| DATABASE_NAME,DATABASE_OWNER,IS_TRANSIENT,COMMENT,CREATED,LAST_ALTERED,RETENTION_TIME,TYPE,OWNER_ROLE_TYPE |
+------------------------------------------------------------------------------------------------------------+

Si la fonction SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT n’a pas été appelée auparavant ou si la fonction SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT a été appelée, la fonction renvoie une chaîne vide.

SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  'SNOWFLAKE',
  'ACCOUNT_USAGE',
  'DATABASES'
);

SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
  'VIEW',
  'SNOWFLAKE',
  'ACCOUNT_USAGE',
  'DATABASES'
);
Copy
+--------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT( |
|   'VIEW',                                              |
|   'SNOWFLAKE',                                         |
|   'ACCOUNT_USAGE',                                     |
|   'DATABASES'                                          |
| )                                                      |
|--------------------------------------------------------|
|                                                        |
+--------------------------------------------------------+

Obtention de la liste des colonnes de tous les appels précédents pour les commandes SHOW et les vues Snowflake

Pour obtenir la liste des colonnes qui sont remplacées pour toutes les commandes SHOW et les vues Snowflake, appelez la fonction SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES. Par exemple :

SELECT SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES();
Copy

La fonction renvoie une chaîne contenant un tableau JSON d’objets. Chaque objet représente la liste des colonnes pour une commande SHOW spécifique ou une vue Snowflake. Par exemple :

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES()                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| [{"domain":"VIEW","isShowCommand":false,"dbName":"","schemaName":"INFORMATION_SCHEMA","objectName":"DATABASES","serializedDefaultColumns":"DATABASE_NAME,DATABASE_OWNER,IS_TRANSIENT,COMMENT,CREATED,LAST_ALTERED,RETENTION_TIME,TYPE,OWNER_ROLE_TYPE"},{"domain":"VIEW","isShowCommand":false,"dbName":"SNOWFLAKE","schemaName":"ACCOUNT_USAGE","objectName":"DATABASES","serializedDefaultColumns":"DATABASE_ID,DATABASE_NAME,DATABASE_OWNER,IS_TRANSIENT,COMMENT,CREATED,LAST_ALTERED,DELETED,RETENTION_TIME,RESOURCE_GROUP,TYPE,OWNER_ROLE_TYPE,OBJECT_VISIBILITY"},{"isShowCommand":true,"showCommandType":"NOTIFICATION INTEGRATIONS","serializedDefaultColumns":"name,type,category,enabled,comment,created_on"}] |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Pour une explication des paires nom/valeur de chaque objet, voir SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES.

Mise à jour des scripts et du code pour éviter les problèmes lors de l’introduction de nouvelles colonnes

Pour éviter que des problèmes ne se produisent suite à l’introduction de nouvelles colonnes, vos scripts et votre code doivent sélectionner des colonnes spécifiques à partir de la sortie des commandes SHOW et lors de l’interrogation de vues Snowflake.

Pour sélectionner des colonnes spécifiques dans la sortie de commandes SHOW, vous pouvez utiliser l’opérateur de canal. Voir l’exemple dans Sélectionner une liste de colonnes pour la sortie d’une commande SHOW .