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 を除外したリスト):
アカウントのユーザーが SHOWNOTIFICATIONINTEGRATIONS コマンドを実行すると、新しい direction 列は出力に返されません。
SHOW コマンドのデフォルト列のリセット¶
以前の SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 呼び出しを取り消して、特定のオブジェクトの型について SHOW コマンドのすべての列を返す必要がある場合は、オブジェクトの型を指定して SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 関数を呼び出します。例:
SHOW コマンドのデフォルト列のリストの取得¶
特定のオブジェクトの型に対して SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND が呼び出されたかどうかを確認し、コマンドの出力で返される列のリストが必要な場合は、オブジェクトの型を指定して SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND 関数を呼び出します。例:
SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND が以前に呼び出されなかったか、 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SHOW_COMMAND が呼び出された場合、関数は空の文字列を返します。
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 を除外したリスト):
この例では、 || 演算子を使用して、コンマ区切りリストを含む文字列を構築します。
アカウント内の誰かが DATABASES ビューの SELECT * クエリを実行しても、新しい replicable_with_failover_groups 列は出力に返されません。
INFORMATION_SCHEMA ビューに対してこの関数を呼び出す必要がある場合、データベース名に空の文字列を渡します。たとえば、 INFORMATION_SCHEMA スキーマ</sql-reference/info-schema/databases>` の DATABASES ビューの :code:`SELECT * クエリの結果から replicable_with_failover_groups 列を除外するには、次のようにします。
Snowflakeビューのデフォルト列のリセット¶
以前の SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 呼び出しを元に戻してSnowflakeビューの SELECT * クエリ内のすべての列を返す場合、 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 関数を呼び出し、オブジェクトの型、ビューを含むデータベースとスキーマ、ビューの名前を指定します。例:
INFORMATION_SCHEMA ビューに対してこの関数を呼び出す必要がある場合、データベース名に空の文字列を渡します。例:
Snowflakeビューのデフォルト列のリスト取得¶
特定のビューに対して SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT が呼び出されたかどうかを確認し、そのビューの SELECT * クエリで返される列のリストが必要な場合は、オブジェクトの型、ビューを含むデータベースとスキーマ、およびビューの名前を指定して SYSTEM$GET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT 関数を呼び出します。例:
INFORMATION_SCHEMA ビューに対してこの関数を呼び出す必要がある場合、データベース名に空の文字列を渡します。例:
SYSTEM$SET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT が以前に呼び出されなかったか、 SYSTEM$UNSET_DEFAULT_COLUMNS_OVERRIDE_FOR_SYSTEM_OBJECT が呼び出された場合、関数は空の文字列を返します。
SHOW コマンドとSnowflakeビューの以前のすべての呼び出しからの列のリスト取得¶
すべての SHOW コマンドとSnowflakeビューに対して上書きされる列のリストを取得するには、 SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES 関数を呼び出します。例:
関数は、オブジェクトの JSON 配列を含む文字列を返します。各オブジェクトは、特定の SHOW コマンドまたは Snowflakeビュー列のリストを表します。例:
各オブジェクトの名前/値のペアの説明については、 SYSTEM$GET_ALL_DEFAULT_COLUMNS_OVERRIDES をご参照ください。
新しい列が導入されたときに問題を防ぐためのスクリプトとコードの更新¶
新しい列の導入によって問題が発生しないようにするには、スクリプトとコードで、 SHOW コマンドの出力から、およびSnowflakeビューをクエリするときに特定の列を選択する必要があります。
SHOW コマンドの出力から特定の列を選択するには パイプ演算子 を使用できます。SHOW コマンドの出力用に列のリストを選択する の例をご参照ください。