SHOW コマンド出力とSnowflakeビューでの新しい列の処理

SHOW <オブジェクト> コマンドの出力とSnowflakeビュー(SNOWFLAKE データベースACCOUNT_USAGE スキーマ および INFORMATION_SCHEMA スキーマ のビューなど)に定期的に新しい列が導入されます。

特定の数の列を含む結果セットに依存するスクリプトやコードがある場合、または列の順序に依存するスクリプトやコードがある場合は、新しい列の導入により、そのスクリプトやコードに影響が生じる可能性があります。

新しい列によって導入された問題の一時的な回避

新しい列の導入によってスクリプトまたはコードに問題が発生した場合、Snowflake管理者(ACCOUNTADMIN ロールが付与されたユーザー)は、特定の SHOW コマンドまたはSnowflakeビューの SELECT * クエリの実行に対して返される列を変更できます。これらの列は、デフォルト列 と呼ばれます。

SHOW コマンドのデフォルト列の上書き

新しく導入された列を SHOW コマンドの出力から除外するには、 SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 関数を呼び出し、オブジェクトの型と返される必要のある列のリストを指定します。

新しい direction 列が SHOW NOTIFICATION INTEGRATIONS コマンド出力に導入されたとします。コマンドの出力に新しい direction 列が含まれるのを防ぐには、 SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND を呼び出し、 'NOTIFICATION INTEGRATIONS' をオブジェクトの型として指定します。出力で返される必要がある列のコンマ区切りリストを渡します(direction を除外したリスト):

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

アカウントのユーザーが SHOWNOTIFICATIONINTEGRATIONS コマンドを実行すると、新しい direction 列は出力に返されません。

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

SHOW コマンドのデフォルト列のリセット

以前の SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 呼び出しを取り消して、特定のオブジェクトの型について SHOW コマンドのすべての列を返す必要がある場合は、オブジェクトの型を指定して SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 関数を呼び出します。例:

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

SHOW コマンドのデフォルト列のリストの取得

特定のオブジェクトの型に対して SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND が呼び出されたかどうかを確認し、コマンドの出力で返される列のリストが必要な場合は、オブジェクトの型を指定して SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 関数を呼び出します。例:

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

SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND が以前に呼び出されなかったか、 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND が呼び出された場合、関数は空の文字列を返します。

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

Snowflakeビューのデフォルト列の上書き

Snowflakeビュー SELECT * クエリの結果から新しく導入された列を除外するには、 SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 関数を呼び出し、オブジェクトの型、ビューを含むデータベースとスキーマ、ビューの名前、返される必要のある列のリストを指定します。

ACCOUNT_USAGE スキーマ</sql-reference/account-usage/databases>` 内の DATABASES ビューに新しい ``replicable_with_failover_groups` 列が導入されたとします。ビューの SELECT * クエリの結果に新しい replicable_with_failover_groups 列が返されないようにするには、オブジェクトの型として 'VIEW'、データベースとして 'SNOWFLAKE'、スキーマとして 'ACCOUNT_USAGE'、ビューとして 'TABLES' を指定して、 SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT を呼び出します。出力で返される必要がある列のコンマ区切りリストを渡します(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

この例では、 || 演算子を使用して、コンマ区切りリストを含む文字列を構築します。

アカウント内の誰かが DATABASES ビューの SELECT * クエリを実行しても、新しい replicable_with_failover_groups 列は出力に返されません。

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

INFORMATION_SCHEMA ビューに対してこの関数を呼び出す必要がある場合、データベース名に空の文字列を渡します。たとえば、 INFORMATION_SCHEMA スキーマ</sql-reference/info-schema/databases>` の DATABASES ビューの :code:`SELECT * クエリの結果から replicable_with_failover_groups 列を除外するには、次のようにします。

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

Snowflakeビューのデフォルト列のリセット

以前の SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 呼び出しを元に戻してSnowflakeビューの SELECT * クエリ内のすべての列を返す場合、 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 関数を呼び出し、オブジェクトの型、ビューを含むデータベースとスキーマ、ビューの名前を指定します。例:

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

INFORMATION_SCHEMA ビューに対してこの関数を呼び出す必要がある場合、データベース名に空の文字列を渡します。例:

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

Snowflakeビューのデフォルト列のリスト取得

特定のビューに対して SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT が呼び出されたかどうかを確認し、そのビューの SELECT * クエリで返される列のリストが必要な場合は、オブジェクトの型、ビューを含むデータベースとスキーマ、およびビューの名前を指定して SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 関数を呼び出します。例:

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

INFORMATION_SCHEMA ビューに対してこの関数を呼び出す必要がある場合、データベース名に空の文字列を渡します。例:

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

SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT が以前に呼び出されなかったか、 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT が呼び出された場合、関数は空の文字列を返します。

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

SHOW コマンドとSnowflakeビューの以前のすべての呼び出しからの列のリスト取得

すべての SHOW コマンドとSnowflakeビューに対して上書きされる列のリストを取得するには、 SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES 関数を呼び出します。例:

SELECT SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES();
Copy

関数は、オブジェクトの JSON 配列を含む文字列を返します。各オブジェクトは、特定の SHOW コマンドまたは Snowflakeビュー列のリストを表します。例:

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

各オブジェクトの名前/値のペアの説明については、 SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES をご参照ください。

新しい列が導入されたときに問題を防ぐためのスクリプトとコードの更新

新しい列の導入によって問題が発生しないようにするには、スクリプトとコードで、 SHOW コマンドの出力から、およびSnowflakeビューをクエリするときに特定の列を選択する必要があります。

SHOW コマンドの出力から特定の列を選択するには パイプ演算子 を使用できます。SHOW コマンドの出力用に列のリストを選択する の例をご参照ください。