Tratando novas colunas na saída do comando SHOW e nas exibições do Snowflake

Periodicamente, novas colunas são introduzidas na saída dos comandos SHOW <objetos> e nas exibições do Snowflake (como as do esquema ACCOUNT_USAGE no banco de dados SNOWFLAKE e as do esquema INFORMATION_SCHEMA).

Se você tem um script ou código que depende do conjunto de resultados que inclui um número específico de colunas ou que depende da ordem das colunas, a introdução de uma nova coluna pode afetar esse script ou código.

Solução alternativa de um problema introduzido por uma nova coluna

Se o seu script ou código encontrar problemas devido à introdução de novas colunas, seu administrador do Snowflake (um usuário a quem foi concedida a função ACCOUNTADMIN) pode alterar as colunas que são retornadas para execuções de um comando SHOW específico ou de consultas SELECT * de uma exibição do Snowflake. Essas colunas são chamadas de colunas padrão.

Substituindo as colunas padrão em um comando SHOW

Para excluir colunas recém-introduzidas da saída de um comando SHOW, chame a função SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND, especificando o tipo de objeto e a lista de colunas que devem ser retornados.

Suponha que uma nova coluna direction foi introduzida na saída do comando SHOW NOTIFICATION INTEGRATIONS. Para impedir que a nova coluna direction seja incluída na saída do comando, chame SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND, especificando 'NOTIFICATION INTEGRATIONS' como o tipo de objeto. Passe uma lista separada por vírgulas das colunas que devem ser retornadas na saída (uma lista que exclui direction):

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

Quando alguém em sua conta executar o comando SHOW NOTIFICATION INTEGRATIONS, a nova coluna direction não será retornada na saída.

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 |
+--------------------------------+---------+--------------+---------+---------+-------------------------------+

Redefinindo as colunas padrão de um comando SHOW

Se você precisar desfazer uma chamada SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND e retornar todas as colunas no comando SHOW para um tipo de objeto específico, chame a função SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND, especificando o tipo de objeto. Por exemplo:

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

Obtendo a lista de colunas padrão para um comando SHOW

Se você precisa determinar se SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND foi chamado para um tipo de objeto específico e quer a lista de colunas que serão retornadas na saída do comando, chame a função SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND, especificando o tipo de objeto. Por exemplo:

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         |
+-------------------------------------------------------+

Se SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND ainda não foi chamado ou se SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND foi chamado, a função retorna uma cadeia de caracteres vazia.

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'                         |
| )                                                     |
|-------------------------------------------------------|
|                                                       |
+-------------------------------------------------------+

Substituindo as colunas padrão em uma exibição do Snowflake

Para excluir colunas recém-introduzidas dos resultados de uma consulta SELECT * de uma exibição do Snowflake, chame a função SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT, especificando o tipo de objeto, o banco de dados e o esquema que contêm a exibição, o nome da exibição e a lista de colunas que devem ser retornadas.

Suponha que uma nova coluna replicable_with_failover_groups foi introduzida na exibição DATABASES no esquema ACCOUNT_USAGE. Para impedir que a nova coluna replicable_with_failover_groups seja retornada nos resultados de uma consulta SELECT * da exibição, chame SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT, especificando 'VIEW' como o tipo de objeto, 'SNOWFLAKE' como o banco de dados, 'ACCOUNT_USAGE' como o esquema e 'TABLES' como a exibição. Passe uma lista separada por vírgulas das colunas que devem ser retornadas na saída (uma lista que exclui 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

O exemplo usa o operador || para construir uma cadeia de caracteres com a lista de colunas separadas por vírgulas.

Quando alguém em sua conta realiza uma consulta SELECT * da exibição DATABASES, a nova coluna replicable_with_failover_groups não é retornada na saída.

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              |
+-------------+---------------+----------------+--------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+----------------+----------+-----------------+-------------------+

Se você precisa chamar essa função para uma exibição INFORMATION_SCHEMA, passe uma cadeia de caracteres vazia no lugar do nome do banco de dados. Por exemplo, para excluir a coluna replicable_with_failover_groups dos resultados das consultas SELECT * da exibição DATABASES no esquema 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

Redefinindo as colunas padrão em uma exibição do Snowflake

Se você precisa desfazer uma chamada SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT anterior e retornar todas as colunas em uma consulta SELECT * de uma exibição do Snowflake, chame a função SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT, especificando o tipo de objeto, o banco de dados e o esquema que contêm a exibição, e o nome da exibição. Por exemplo:

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

Se você precisa chamar essa função para uma exibição INFORMATION_SCHEMA, passe uma cadeia de caracteres vazia no lugar do nome do banco de dados. Por exemplo:

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

Obtendo a lista de colunas padrão em uma exibição do Snowflake

Se você precisa determinar se SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT foi chamado para uma exibição específica e quer a lista das colunas que serão retornadas em uma consulta SELECT * dessa exibição, chame a função SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT, especificando o tipo de objeto, o banco de dados e o esquema que contêm a exibição, e o nome da exibição. Por exemplo:

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 |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+

Se você precisa chamar essa função para uma exibição INFORMATION_SCHEMA, passe uma cadeia de caracteres vazia no lugar do nome do banco de dados. Por exemplo:

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 |
+------------------------------------------------------------------------------------------------------------+

Se SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT ainda não foi chamado ou se SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT foi chamado, a função retorna uma cadeia de caracteres vazia.

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'                                          |
| )                                                      |
|--------------------------------------------------------|
|                                                        |
+--------------------------------------------------------+

Obtendo a lista de colunas de todas as chamadas anteriores para comandos SHOW e exibições do Snowflake

Para obter a lista de colunas substituídas para todos os comandos SHOW e as exibições do Snowflake, chame a função SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES. Por exemplo:

SELECT SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES();
Copy

A função retorna uma cadeia de caracteres com uma matriz de objetos JSON. Cada objeto representa a lista de colunas para um comando SHOW específico ou uma exibição do Snowflake. Por exemplo:

+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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"}] |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Para ver uma explicação dos pares nome/valor em cada objeto, consulte SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES.

Atualizando scripts e código para impedir problemas quando novas colunas são introduzidas

Para impedir a ocorrência de problemas devido à introdução de novas colunas, seus scripts e código devem selecionar colunas específicas da saída dos comandos SHOW e ao consultar as exibições do Snowflake.

Para selecionar colunas específicas da saída dos comandos SHOW, você pode usar o operador de canal. Consulte o exemplo em Selecione uma lista de colunas para a saída de um comando SHOW.