CREATE SCHEMA¶
現在のデータベースに新しいスキーマを作成します。
このコマンドは次のバリアントをサポートしています。
CREATE OR ALTER SCHEMA: スキーマが存在しない場合はスキーマを作成するか、既存のスキーマを変更します。
CREATE SCHEMA ... CLONE: 既存のスキーマのクローンを、現在の状態で、または過去の特定の時刻/時点で作成します(Time Travelを使用)。スキーマのクローン作成の詳細については、 クローニングに関する考慮事項 をご参照ください。
CREATE SCHEMA ... FROM BACKUP SET (バックアップから新しい名前でスキーマを復元します)
- こちらもご参照ください。
ALTER SCHEMA、 DESCRIBE SCHEMA、 DROP SCHEMA、 SHOW SCHEMAS、 UNDROP SCHEMA
構文¶
復元されたスキーマ(バックアップから)
バリアント構文¶
CREATE OR ALTER SCHEMA¶
スキーマがまだ存在しない場合は新規に作成し、存在する場合は既存のスキーマをステートメントで定義されたスキーマに変換します。CREATE OR ALTER SCHEMA ステートメントは、 CREATE SCHEMA ステートメントの構文ルールに従い、このステートメントには ALTER SCHEMA ステートメントと同じ制限があります。
詳細については、 CREATE OR ALTER SCHEMA の使用上の注意 をご参照ください。
CREATE SCHEMA ... CLONE¶
同じパラメーター値で新しいスキーマを作成します。
詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。
必須パラメーター¶
nameスキーマの識別子を指定します。スキーマが作成されるデータベースに対して一意である必要があります。
また、識別子はアルファベット文字で始まる必要があり、識別子文字列全体が二重引用符で囲まれていない限り、スペースや特殊文字を含めることはできません(例:
"My object")。二重引用符で囲まれた識別子も大文字と小文字が区別されます。詳細については、 識別子の要件 をご参照ください。
オプションのパラメーター¶
TRANSIENTスキーマを一時として指定します。一時スキーマにはFail-safe期間がないため、Time Travelを離れると追加のストレージコストは発生しません。ただし、これは、データが失われた場合にもFail-safeで保護されません。詳細については、 Fail-safeの理解と表示 をご参照ください。
また、定義により、一時的なスキーマで作成されたすべてのテーブルは一時的なものです。一時テーブルの詳細については、 CREATE TABLE をご参照ください。
デフォルト: 値なし(つまり、スキーマは永続的)
CLONE source_schema指定したソーススキーマのクローンを作成することを指定します。スキーマのクローン作成の詳細については、 CREATE <オブジェクト> ... CLONE をご参照ください。
AT | BEFORE ( TIMESTAMP => timestamp | OFFSET => time_difference | STATEMENT => id )スキーマのクローンを作成するとき、 AT | BEFORE 句はTime Travelを使用して過去の特定の時点またはそれ以前のスキーマをクローンすることを指定します。
IGNORE TABLES WITH INSUFFICIENT DATA RETENTIONTime Travelでクローンに利用可能な履歴データがなくなったテーブルを無視します。AT | BEFORE 句で指定された過去の時間が、データベースまたはスキーマ内の子テーブルのデータ保持期間を超えている場合は、子テーブルのクローン作成操作をスキップします。詳細については、 子オブジェクトとデータ保持時間 をご参照ください。
IGNORE HYBRID TABLES無視されたハイブリッド・テーブルはクローンされません。ハイブリッド・テーブルを含むスキーマをクローンするには、このオプションを使用します。クローンされたスキーマは他のオブジェクトを含むが、ハイブリッド・テーブルはスキップします。
このオプションを使用せず、スキーマに1つ以上のハイブリッド・テーブルが含まれている場合、コマンドはハイブリッド・テーブルを無言で無視します。しかし、ハイブリッド・テーブルを含むスキーマのエラー処理は、今後のリリースで変更される予定です。したがって、先手を打ってコマンドにこのパラメータを追加しておくとよいでしょう。
WITH MANAGED ACCESS管理スキーマを指定します。管理アクセススキーマは、スキーマの所有者とともに権限管理を集中化します。
通常のスキーマでは、オブジェクトの所有者(つまり、オブジェクトに対する OWNERSHIP 権限を持つロール)は、オブジェクトに対する追加の権限を他のロールに付与できます。管理スキーマでは、スキーマの所有者が、スキーマ内のオブジェクトに対する 将来の付与 を含むすべての権限付与を管理します。オブジェクト所有者は、オブジェクトに対する OWNERSHIP 権限を保持します。ただし、オブジェクトの権限付与を管理できるのはスキーマ所有者のみです。
DATA_RETENTION_TIME_IN_DAYS = integerスキーマでTime Travelアクション(CLONE および UNDROP)を実行できる日数を指定し、スキーマで作成されたすべてのテーブルのデフォルトのTime Travel保持時間を指定します。詳細については、 Time Travelの理解と使用 をご参照ください。
このオブジェクトレベルパラメーターの詳細な説明、およびオブジェクトパラメーターの詳細については、 パラメーター をご参照ください。テーブルレベルの保持期間の詳細については、 CREATE TABLE および Time Travelの理解と使用 をご参照ください。
値:
Standard Edition:
0または1Enterprise Edition:
永続スキーマの場合は
0~90一時スキーマの場合は
0または1
デフォルト:
Standard Edition:
1Enterprise Edition(またはそれ以上):
1(データベースまたはアカウントレベルで別のデフォルト値が指定されていない場合)
注釈
0の値は、スキーマのTime Travelを効果的に無効にします。MAX_DATA_EXTENSION_TIME_IN_DAYS = integerSnowflakeがスキーマ内のテーブルのデータ保持期間を延長して、テーブル上のストリームが古くなるのを防ぐことができる最大日数を指定するオブジェクトパラメーター。
このパラメーターの詳細については、 MAX_DATA_EXTENSION_TIME_IN_DAYS をご参照ください。
EXTERNAL_VOLUME = external_volume_nameApache Iceberg™ テーブル に使用するデフォルト外部ボリュームを指定するオブジェクトパラメーター。
このパラメーターの詳細については、 EXTERNAL_VOLUME をご参照ください。
CATALOG = catalog_integration_nameApache Iceberg™ テーブル に使用するデフォルトのカタログ統合を指定するオブジェクトパラメーター。
このパラメーターの詳細については、 CATALOG をご参照ください。
ICEBERG_VERSION_DEFAULT = integer-
Icebergテーブルが準拠する|iceberg-tm|テーブル仕様のバージョンを指定します。
- 値:
2:新しいテーブルはIcebergバージョン2に準拠しています。3:新しいテーブルはIcebergバージョン3に準拠しています。
注意
他のエンジンを使用してテーブルプロパティのIcebergテーブルの形式バージョンをv3にアップグレードする前に、まだv3をサポートしていないエンジンやアプリケーションでテーブルが使用されていないことを確認してください。形式バージョンのダウングレードは、Apache Iceberg仕様ではサポートされていません。したがって、すべてのリーダーとライターはv3をサポートしている必要があります。SnowflakeのIcebergテーブルのデフォルトバージョンはv2です。これは、必要に応じてv3に構成できます。Snowflakeを使用したインプレースバージョンアップグレードの実行は、現時点ではサポートされていません。
- デフォルト:
2
このパラメーターの詳細については、 ICEBERG_VERSION_DEFAULT をご参照ください。
ENABLE_ICEBERG_MERGE_ON_READ = { TRUE | FALSE }-
|iceberg-tm|テーブルに対してマージオン読み取り動作を有効にするかどうかを指定します。
- 値:
TRUE:新しいテーブルは、マージオン読み取り動作を使用します。FALSE:新しいテーブルは、コピーオン書き込み動作を使用します。- デフォルト:
TRUE
このパラメーターの詳細な説明については、 ENABLE_ICEBERG_MERGE_ON_READ をご参照ください。Snowflakeにおけるマージオン読み取り動作およびコピーオン書き込み動作に関する詳細については、:ref:`label-tables_iceberg_row_level_deletes`をご参照ください。
REPLACE_INVALID_CHARACTERS = { TRUE | FALSE }Icebergテーブル のクエリ結果で、無効な UTF -8文字をUnicode置換文字(�)で置き換えるかどうかを指定します。このパラメーターを設定できるのは、外部Icebergカタログを使用するテーブルのみです。
TRUEの場合は、無効な UTF -8文字がUnicode置換文字に置き換えられます。FALSEの場合は、無効な UTF -8 文字は変更されません。Parquetデータファイルで無効な UTF -8 文字が検出された場合、Snowflakeはユーザーエラーメッセージを返します。
デフォルト:
FALSE
DEFAULT_DDL_COLLATION = 'collation_specification'スキーマに追加されたすべてのテーブルのデフォルトの 照合仕様 を指定します。デフォルトは、個々のテーブルレベルで上書きできます。
パラメーターの詳細については、 DEFAULT_DDL_COLLATION をご参照ください。
LOG_LEVEL = 'log_level'インジェストされ、アクティブなイベントテーブルで使用できるようにするメッセージの重大度レベルを指定します。指定されたレベル(およびそれよりも重大なレベル)のメッセージがインジェストされます。
レベルの詳細については、 LOG_LEVEL をご参照ください。ログレベルの設定については、 ロギング、メトリクス、トレースのレベル設定 をご参照ください。
TRACE_LEVEL = 'trace_level'トレースイベントがイベントテーブルにインジェストされる方法を制御します。
レベルの詳細については、 TRACE_LEVEL をご参照ください。トレースレベルの設定については、 ロギング、メトリクス、トレースのレベル設定 をご参照ください。
STORAGE_SERIALIZATION_POLICY = { COMPATIBLE | OPTIMIZED }カタログとしてSnowflakeを使用する Apache Iceberg™ テーブル のストレージシリアル化ポリシーを指定します。
COMPATIBLE:Snowflakeはデータファイルのエンコードと圧縮を実行し、サードパーティのコンピューティングエンジンとの相互運用性を確保します。OPTIMIZED:Snowflakeはデータファイルのエンコードと圧縮を実行し、Snowflake内で最高のテーブルパフォーマンスを実現します。
デフォルト:
OPTIMIZED
CLASSIFICATION_PROFILE = 'classification_profile'スキーマと分類プロファイルを関連付け、スキーマ内の機密データが 自動的に分類 されるようにします。
COMMENT = 'string_literal'スキーマのコメントを指定します。
デフォルト: 値なし
CATALOG_SYNC = 'snowflake_open_catalog_integration_name'Snowflake Open Catalog 用に構成されたカタログ統合の名前を指定します。指定すると、Snowflakeはスキーマ内のSnowflake管理 Apache Iceberg™ テーブルを Snowflake Open Catalog アカウントの外部カタログと同期します。Snowflake管理のIcebergテーブルとOpen Catalogの同期に関する情報については、 Snowflakeで管理されたテーブルを Snowflake Open Catalog と同期する をご参照ください。
このパラメーターの詳細については、 CATALOG_SYNC をご参照ください。
デフォルト: 値なし
ENABLE_DATA_COMPACTION = { TRUE | FALSE }SnowflakeがSnowflake管理 Apache Iceberg™ テーブル でデータ圧縮を有効にするかどうかを指定します。
TRUE:Snowflakeはテーブルでデータ圧縮を実行します。FALSE:Snowflakeはテーブルでデータ圧縮を実行しません。
デフォルト:
TRUE詳細については、 ENABLE_DATA_COMPACTION および データ圧縮の設定 をご参照ください。
WITH CONTACT ( purpose = contact [ , purpose = contact ...] )新しいオブジェクトを1つ以上の 連絡先 に関連付けます。
AS句を除く他のすべての句の後に、WITHCONTACT句を指定します(その句がこのコマンドでサポートされている場合)。
TAG ( tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ] )タグ の名前とタグ文字列の値を指定します。
タグ値は常に文字列であり、タグ値の最大文字数は256です。
ステートメントでのタグの指定に関する情報については、 タグの割り当て をご参照ください。
OBJECT_VISIBILITY = PRIVILEGED-
アカウント内のオブジェクトの可視性を指定します。これにより、 :doc:` オブジェクトの検出可能性 </user-guide/ui-snowsight/object-visibility-universal-search>` が制御され、明示的なアクセス権限を持たないユーザーがオブジェクトを検索してアクセスをリクエストできるようになります。例については、 例 をご参照ください。
PRIVILEGED:オブジェクトに対する明示的な権限が付与されている現在のアカウント内のロールのみがオブジェクトを表示できることを指定します。これはSnowflakeのデフォルトの動作です。
例については、 データベースオブジェクトをユニバーサル検索で検出可能にする をご参照ください。
バックアップのパラメーター¶
その FROMBACKUPSET 句は、バックアップからスキーマを復元します。他のスキーマプロパティは、バックアップスキーマにあるものとすべて同じであるため、指定しません。
注釈
FROM SNAPSHOT SET 句は非推奨です。代わりに FROM BACKUP SET を使用してください。
このフォームには CREATEORREPLACE 句がありません。通常は、新しい名前でスキーマを復元して、この新しいスキーマからデータまたはその他のオブジェクトを回復させるか、元のスキーマの名前を変更してから、元の名前でスキーマを復元します。
注釈
復元されたスキーマは、バックアップの元のスキーマから独立しています。復元されたスキーマと元のスキーマの間にクローニング関係はありません。したがって、復元されたスキーマ内のすべてのマイクロパーティションは、そのスキーマによって所有されます。
新しく復元されたスキーマのバックアップを作成する場合は、そのテーブル用に新しいバックアップセットを作成します。
バックアップの詳細については、 障害復旧向けのバックアップと不変ストレージ をご参照ください。
backup_set特定のスキーマ用に作成されたバックアップセットの名前を指定します。SHOW BACKUP SETS コマンドを使用して、適切なバックアップセットを見つけることができます。
backup_idそのバックアップセット内にある特定のバックアップの識別子を指定します。SHOW BACKUPS IN BACKUP SET コマンドを使用して、バックアップの作成日時に基づいて、バックアップセット内で適切な識別子を見つけます。
アクセス制御の要件¶
この操作の実行に使用される ロール には、少なくとも次の 権限 が必要です。
権限 |
オブジェクト |
注意 |
|---|---|---|
CREATE SCHEMA |
データベース |
通常のアクセススキーマと 管理アクセス スキーマの両方を作成できます。 |
CREATE SCHEMA ... CLONE ... WITH MANAGED ACCESS |
オプション |
必要な権限は、ソーススキーマが管理されているか、管理されていないかによって異なります。
|
USAGE |
外部ボリューム、カタログ統合 |
|
MANAGE に VISIBILITY |
アカウント |
OBJECT_VISIBILITY プロパティを設定するために必要です。SECURITYADMIN ロールのみが、デフォルトでこの権限を持っています。権限は、必要に応じて追加のロールに付与できます。 |
MODIFY LOG LEVEL |
アカウント |
スキーマに LOG_LEVEL を設定するために必要です。 |
MODIFY TRACE LEVEL |
アカウント |
スキーマに TRACE_LEVEL を設定するために必要です。 |
OWNERSHIP |
スキーマ |
既存のスキーマに対して CREATE OR ALTER SCHEMA ステートメントを実行する場合にのみ必要です。 OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。
セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。
一般的な使用上の注意¶
スキーマを作成すると、現在のセッション用にアクティブ/現在のスキーマとして自動的に設定されます(スキーマに USE SCHEMA コマンドを使用するのと同等)。
同じ名前のスキーマがデータベースに既に存在する場合、オプションの
OR REPLACEキーワードがコマンドで指定されない限り、エラーが返され、スキーマは作成されません。重要
OR REPLACEを使用することは、既存のスキーマで DROP SCHEMA を使用してから、同じ名前で新しいスキーマを作成することと同等です。ただし、ドロップされたスキーマは、システムから完全に削除された :emph:`` ではありません。代わりに、Time Travelに保持されます。Time Travelでドロップされたスキーマは、アカウントのデータストレージに寄与するため、これは重要です。詳細については、 Time TravelおよびFail-safeのストレージコスト をご参照ください。
OR REPLACE 句と IF NOT EXISTS 句は互いに排他的です。この2つを同じステートメントで使うことはできません。
CREATE OR REPLACE <オブジェクト> ステートメントはアトミックです。つまり、オブジェクトが置き換えられると、単一のトランザクションで、古いオブジェクトが削除されて新しいオブジェクトが作成されます。
管理アクセススキーマでは、スキーマ所有者は含まれるオブジェクト(テーブルまたはビューなど)の許可を管理しますが、オブジェクトに対する他の権限(USAGE、 SELECT、 DROP など)はありません。
:doc:` カタログリンクデータベース </user-guide/tables-iceberg-catalog-linked-database>` で、このコマンドは、リンクされたIceberg REST カタログに名前空間を作成し、Snowflakeデータベースに対応するスキーマを作成します。このユースケースでは、Snowflakeは以下のオプションのみをサポートしています。
CLASSIFICATION_PROFILE
COMMENT
STORAGE_SERIALIZATION_POLICY
TAG
WITH に CONTACT
WITH MANAGED ACCESS
CREATE OR ALTER および CLONE バリアントはサポートされていません。
メタデータについて。
注意
Snowflakeサービスを使用する場合、お客様は、個人データ(ユーザーオブジェクト向け以外)、機密データ、輸出管理データ、またはその他の規制されたデータがメタデータとして入力されていないことを確認する必要があります。詳細については、 Snowflakeのメタデータフィールド をご参照ください。
CREATE OR ALTER SCHEMA の使用上の注意¶
ALTER SCHEMA コマンドのすべての制限が適用されます。
このコマンドは、次のアクションをサポートして いません。
SWAP WITH パラメーターを使用したスキーマの入れ替え。
RENAME TO パラメーターを使用したスキーマの名前変更。
CLONE パラメーターを使用したスキーマのクローン作成。
タグやポリシーの追加や変更。既存のタグとポリシーは保持されます。
TRANSIENT スキーマから TRANSIENT 以外へのスキーマ変換、またはその逆。
例¶
永続スキーマを作成します。
一時スキーマを作成します。
管理アクセススキーマを作成します。
CREATE OR ALTER SCHEMA の例¶
簡単なスキーマを作成する¶
s1 という名前のスキーマを作成します。
スキーマ s1 を作成または変更し、プロパティとパラメーターを設定します。
以前にスキーマに設定されたパラメーターを解除する¶
変更されたスキーマ定義に 以前に設定されたパラメーターがない 場合、そのパラメーターは設定解除されます。次の例では、前の例で作成したスキーマ(s1)の管理アクセスをオフにします。
