Umgang mit neuen Spalten in SHOW-Befehlsausgaben und Snowflake-Ansichten¶
In regelmäßigen Abständen werden neue Spalten in den Ausgaben von SHOW <Objekte>-Befehlen und in Snowflake-Ansichten (z. B. den Ansichten im ACCOUNT_USAGE-Schema in der SNOWFLAKE-Datenbank und die Ansichten im INFORMATION_SCHEMA-Schema) eingeführt.
Wenn Sie ein Skript oder einen Code verwenden, das/der voraussetzt, dass das Resultset eine bestimmte Anzahl von Spalten enthält oder dass diese in einer festgelegten Reihenfolge vorliegen, kann die Einführung einer neuen Spalte Auswirkungen auf dieses Skript oder diesen Code haben.
Vorübergehende Umgehung eines Problems, das durch eine neue Spalte eingeführt wurde¶
Wenn Ihr Skript oder Code aufgrund der Einführung neuer Spalten auf Probleme stößt, kann die Person mit der Snowflake-Systemrolle (also die Person, der die ACCOUNTADMIN-Rolle erteilt wurde) die Spalten ändern, die für die Ausführung eines bestimmten SHOW-Befehls oder bestimmter SELECT*-Abfragen einer Snowflake-Ansicht zurückgegeben werden. Diese Spalten werden als Standardspalten bezeichnet.
Überschreiben der Standardspalten für einen SHOW-Befehl¶
Um neu eingeführte Spalten von der Ausgabe eines SHOW-Befehls auszuschließen, rufen Sie die SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND-Funktion auf, die den Typ des Objekts und die Liste der Spalten angibt, die zurückgegeben werden sollen.
Angenommen, eine neue direction-Spalte wurde in der Ausgabe des SHOW NOTIFICATION INTEGRATIONS-Befehls eingeführt. Um zu verhindern, dass die neue direction-Spalte in die Ausgabe des Befehls aufgenommen wird, rufen Sie SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND unter Angabe von 'NOTIFICATION INTEGRATIONS' als Typ des Objekts auf. Übergeben Sie eine durch Kommas getrennte Liste der Spalten, die in der Ausgabe zurückgegeben werden sollen (eine Liste, die direction ausschließt):
SELECT SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
'NOTIFICATION INTEGRATIONS',
'name, type, category, enabled, comment, created_on'
);
Wenn jemand in Ihrem Konto den SHOW NOTIFICATION INTEGRATIONS-Befehl ausführt, wird die neue direction-Spalte nicht in der Ausgabe zurückgegeben.
SHOW NOTIFICATION INTEGRATIONS;
+--------------------------------+---------+--------------+---------+---------+-------------------------------+
| name | type | category | enabled | comment | created_on |
|--------------------------------+---------+--------------+---------+---------+-------------------------------|
| SLACK_NOTIFICATION_INTEGRATION | WEBHOOK | NOTIFICATION | true | NULL | 2025-07-02 06:14:53.859 -0700 |
+--------------------------------+---------+--------------+---------+---------+-------------------------------+
Zurücksetzen der Standardspalten für einen SHOW-Befehl¶
Wenn Sie einen früheren SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND-Aufruf rückgängig machen und alle Spalten im SHOW-Befehl für einen bestimmten Objekttyp zurückgeben müssen, rufen Sie die SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND-Funktion auf und geben Sie den Objekttyp an. Beispiel:
SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
'NOTIFICATION INTEGRATIONS'
);
Abrufen der Liste der Standardspalten für einen SHOW-Befehl¶
Wenn Sie feststellen müssen, ob SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND für einen bestimmten Objekttyp aufgerufen wurde und welche Spalten die Ausgabe des Befehls enthält, rufen Sie die SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND-Funktion auf und geben Sie dabei den Objekttyp an. Beispiel:
SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
'NOTIFICATION INTEGRATIONS'
);
+-------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND( |
| 'NOTIFICATION INTEGRATIONS' |
| ) |
|-------------------------------------------------------|
| name,type,category,enabled,comment,created_on |
+-------------------------------------------------------+
Wenn SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND nicht zuvor aufgerufen wurde oder wenn SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND aufgerufen wurde, gibt die Funktion eine leere Zeichenfolge zurück.
SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
'NOTIFICATION INTEGRATIONS'
);
SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND(
'NOTIFICATION INTEGRATIONS'
);
+-------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND( |
| 'NOTIFICATION INTEGRATIONS' |
| ) |
|-------------------------------------------------------|
| |
+-------------------------------------------------------+
Überschreiben der Standardspalten für eine Snowflake-Ansicht¶
Um neu eingeführte Spalten aus den Ergebnissen einer SELECT *- einer Snowflake-Ansicht auszuschließen, rufen Sie die SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT-Funktion auf und geben Sie dabei den Typ des Objekts, die Datenbank und das Schema, die die Ansicht enthalten, den Namen der Ansicht und die Liste der Spalten an, die zurückgegeben werden sollen.
Angenommen, eine neue replicable_with_failover_groups-Spalte wurde in der DATABASES-Ansicht im ACCOUNT_USAGE-Schema eingeführt. Damit die neue replicable_with_failover_groups-Spalte nicht in den Ergebnissen einer SELECT *-Abfrage der Ansicht zurückgegeben wird, rufen Sie SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT unter Angabe von 'VIEW' als Typ des Objekts, 'SNOWFLAKE' als Datenbank, 'ACCOUNT_USAGE' als Schema und 'TABLES' als Ansicht auf. Übergeben Sie eine durch Kommas getrennte Liste der Spalten, die in der Ausgabe zurückgegeben werden sollen (eine Liste, die replicable_with_failover_groups ausschließt):
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'
);
In dem Beispiel wird der ||-Operator verwendet, um eine Zeichenfolge zu erstellen, die die durch Kommas getrennte Liste der Spalten enthält.
Wenn jemand in Ihrem Konto eine SELECT *-Abfrage der DATABASES-Ansicht ausführt, wird die neue replicable_with_failover_groups-Spalte nicht in der Ausgabe zurückgegeben.
SELECT * FROM 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 |
|-------------+---------------+----------------+--------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+----------------+----------+-----------------+-------------------|
| 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 |
+-------------+---------------+----------------+--------------+---------+-------------------------------+-------------------------------+-------------------------------+----------------+----------------+----------+-----------------+-------------------+
Wenn Sie diese Funktion für eine INFORMATION_SCHEMA-Ansicht aufrufen müssen, übergeben Sie eine leere Zeichenfolge für den Datenbanknamen. So schließen Sie beispielsweise die replicable_with_failover_groups-Spalte aus den Ergebnissen von SELECT *-Abfragen der DATABASES-Ansicht im INFORMATION_SCHEMA-Schema aus:
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'
);
Zurücksetzen der Standardspalten für eine Snowflake-Ansicht¶
Wenn Sie einen früheren SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT-Aufruf rückgängig machen und alle Spalten in einer SELECT *-Abfrage einer Snowflake-Ansicht zurückgeben müssen, rufen Sie die SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT-Funktion unter Angabe des Objekttyps, der Datenbank und des Schemas, die die Ansicht enthalten, sowie des Namens der Ansicht auf. Beispiel:
SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
'VIEW',
'SNOWFLAKE',
'ACCOUNT_USAGE',
'DATABASES'
);
Wenn Sie diese Funktion für eine INFORMATION_SCHEMA-Ansicht aufrufen müssen, übergeben Sie eine leere Zeichenfolge für den Datenbanknamen. Beispiel:
SELECT SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
'VIEW',
'',
'INFORMATION_SCHEMA',
'DATABASES'
);
Abrufen der Liste der Standardspalten für eine Snowflake-Ansicht¶
Wenn Sie feststellen müssen, ob SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT für eine bestimmte Ansicht aufgerufen wurde und Sie die Liste der Spalten erhalten möchten, die in einer SELECT *-Abfrage dieser Ansicht zurückgegeben werden, rufen Sie die SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT-Funktion auf und geben Sie dabei den Typ des Objekts, die Datenbank und das Schema, die die Ansicht enthalten, und den Namen der Ansicht an. Beispiel:
SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
'VIEW',
'SNOWFLAKE',
'ACCOUNT_USAGE',
'DATABASES'
);
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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 |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------+
Wenn Sie diese Funktion für eine INFORMATION_SCHEMA-Ansicht aufrufen müssen, übergeben Sie eine leere Zeichenfolge für den Datenbanknamen. Beispiel:
SELECT SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT(
'VIEW',
'',
'INFORMATION_SCHEMA',
'DATABASES'
);
+------------------------------------------------------------------------------------------------------------+
| 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 |
+------------------------------------------------------------------------------------------------------------+
Wenn SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT nicht zuvor aufgerufen wurde oder wenn SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT aufgerufen wurde, gibt die Funktion eine leere Zeichenfolge zurück.
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'
);
+--------------------------------------------------------+
| SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT( |
| 'VIEW', |
| 'SNOWFLAKE', |
| 'ACCOUNT_USAGE', |
| 'DATABASES' |
| ) |
|--------------------------------------------------------|
| |
+--------------------------------------------------------+
Abrufen der Liste der Spalten aus allen vorherigen Aufrufen von SHOW-Befehlen und Snowflake-Ansichten¶
Um die Liste der Spalten abzurufen, die für alle SHOW-Befehle und Snowflake-Ansichten überschrieben werden, rufen Sie die SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES-Funktion auf. Beispiel:
SELECT SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES();
Die Funktion gibt eine Zeichenfolge zurück, die ein JSON-Array von Objekten enthält. Jedes Objekt repräsentiert die Liste der Spalten für einen bestimmten SHOW-Befehl oder eine Snowflake-Ansicht. Beispiel:
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 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"}] |
+--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
Eine Erläuterung der Name/Wert-Paare in jedem Objekt finden Sie unter SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES.
Aktualisieren von Skripten und Code, um Probleme zu vermeiden, wenn neue Spalten eingeführt werden¶
Um Probleme bei der Einführung neuer Spalten zu vermeiden, sollten Ihre Skripte und Ihr Code bestimmte Spalten aus der Ausgabe von SHOW-Befehle und beim Abfragen von Snowflake-Ansichten auswählen.
Um bestimmte Zeilen und Spalten aus der Ausgabe der SHOW-Befehle auszuwählen, können Sie den Pipe-Operator verwenden. Siehe Beispiel unter Liste von Spalten für die Ausgabe eines SHOW-Befehls auswählen.