|dcm|でサポートされているオブジェクト型¶
DEFINEステートメントは、|dcm-object|定義ファイルでのみ使用される特別なコマンドです。その構文は:doc:`CREATE OR ALTER </sql-reference/sql/create-or-alter>`コマンドと似ていますが、次の重要な違いがあります。
DEFINEステートメントの順序とロケーションは関係ありません。Snowflakeは、プロジェクトの実行中に、すべての定義ファイルからすべてのステートメントを収集し、ソートします。
以前にデプロイされたDEFINEステートメントを削除すると、Snowflakeは次にプロジェクトをデプロイしたときに、対応するオブジェクトをドロップします。以前にデプロイされた後に削除されるGRANTおよびATTACHステートメントにも同じことが適用されます。
Snowflakeオブジェクト型のサブセットのみがサポートされています。
すべてのオブジェクトは完全修飾名(
database.schema.object_name)で定義する必要があります。他のオブジェクトへの参照には、完全修飾名を使用する必要があります。
次のオブジェクト型は、DEFINE、GRANT、またはATTACHステートメントを使用する|dcm|定義ファイルでネイティブにサポートされています。
データベース¶
制限:
以下を含め、すべての`CREATE OR ALTER DATABASEの制限事項<https://docs.snowflake.com/sql-reference/sql/create-database#create-or-alter-database-usage-notes>`__が適用されます。
データベースの名前変更
スキーマ¶
制限:
以下を含め、すべての`CREATE OR ALTER SCHEMAの制限事項<https://docs.snowflake.com/sql-reference/sql/create-schema#create-or-alter-schema-usage-notes>`__が適用されます。
スキーマの名前変更
テーブル¶
制限:
以下を含め、すべての`CREATE OR ALTER TABLEの制限事項<https://docs.snowflake.com/sql-reference/sql/create-table#create-or-alter-table-usage-notes>`__が適用されます。
テーブルの名前変更
列の名前の変更
列の並べ替え
列の型から互換性のない型への変更
テーブルまたは列への検索最適化の追加
テーブルまたは列へのタグおよびポリシーの追加
ビュー¶
制限:
以下を含め、すべての`CREATE OR ALTER VIEWの制限事項<https://docs.snowflake.com/sql-reference/sql/create-view#create-or-alter-view-usage-notes>`__が適用されます。
ビューの名前変更
列の並べ替え
動的テーブル¶
サポートされている変更:
フルリフレッシュなし
ウェアハウス
ターゲットラグ
再初期化またはフルリフレッシュを行う場合:
リフレッシュモード
以下を含む本体の変更:
列のドロップ
末尾への列の追加
不変の引数:
INITIALIZE
制限:
以下を含め、すべての`CREATE OR ALTER DYNAMIC TABLEの制限事項<https://docs.snowflake.com/sql-reference/sql/create-dynamic-table#create-or-alter-dynamic-table-usage-notes>`__が適用されます。
列の並べ替え
動的テーブルの名前変更
タスク¶
既に開始されているタスクに定義の変更がデプロイされると、Snowflakeは自動的にそのタスク(またはそのルートタスク)を一時的に中断し、変更を適用してから、再開します。
新しくデプロイされたタスクは、デフォルトで一時停止されます。
制限:
すべての`CREATE OR ALTER TASKの制限事項<https://docs.snowflake.com/sql-reference/sql/create-task#create-or-alter-task-usage-notes>`__が適用されます。
ファイル形式¶
制限:
すべての`CREATE OR ALTER FILE FORMATの制限事項<https://docs.snowflake.com/sql-reference/sql/create-file-format#create-or-alter-file-format-usage-notes>`__が適用されます。
内部ステージ¶
サポートされている変更:
ディレクトリテーブル
コメント
不変の属性:
暗号化タイプ
制限:
すべての`CREATE OR ALTER STAGEの制限事項<https://docs.snowflake.com/sql-reference/sql/create-stage#create-or-alter-stage-usage-notes>`__が適用されます。
SQL 関数¶
制限:
すべての`CREATE OR ALTER FUNCTIONの制限事項<https://docs.snowflake.com/sql-reference/sql/create-function#create-or-alter-function-usage-notes>`__が適用されます。
データメトリック関数¶
データメトリック関数(DMFs)を使用すると、データ品質の期待値を定義し、その期待値をテーブルに添付できます。既存のシステムDMFsから選択するか、独自のユーザー定義データメトリック関数(UDMFs)を記述することができます。その後、多対多の関係でテーブル、ビュー、および動的テーブルにアタッチできます。詳細については、 SQLを使用したデータメトリック関数の設定 をご参照ください。
データメトリック関数をアタッチするには、まず各テーブル、動的テーブル、またはビューの定義に``DATA_METRIC_SCHEDULE``を追加する必要があります。例: DATA_METRIC_SCHEDULE = TRIGGER_ON_CHANGES。``TRIGGER_ON_CHANGES``スケジュールはビューでは使用できません。
期待値のユーザー定義名は、プロジェクトおよびアタッチメントごとに一意である必要があります。
テーブル列にDMFsをアタッチする場合、期待値の定義はオプションですが、推奨されます。期待値が設定されていないアタッチ済みのDMFsは、``EXECUTE DCM PROJECT <my_project> TEST ALL``の実行時に考慮されません。
サポートされている変更:
UDMFs(ユーザー定義データメトリック関数)の定義
|dcm-object|の内部および外部のテーブル、ビュー、または動的テーブルへのシステムDMFsおよびUDMFsのアタッチ
テーブル列のデータ期待値の定義
例:
UDMFを定義する例
期待値を持つシステムDMFのアタッチの例
期待値を持つUDMFのアタッチの例
利用可能なすべてのシステムDMFsを表示するには、``SHOW DATA METRIC FUNCTIONS IN DATABASE SNOWFLAKE``をクエリします。
ウェアハウス¶
不変の属性:
INITIALLY_SUSPENDED
制限:
すべての`CREATE OR ALTER WAREHOUSEの制限事項<https://docs.snowflake.com/sql-reference/sql/create-warehouse#create-or-alter-warehouse-usage-notes>`__が適用されます。
ロールおよびデータベースロール¶
サポートされていない型:
アプリケーションロール
Grant¶
|dcm|内で各オブジェクトを1回だけ定義できるのと同様に、各権限と被付与者の関係はすべての|dcm|全体で1回のみ定義できます。
以前にデプロイされたGRANT OWNERSHIPステートメントを削除する場合、|dcm|は現在の所有者ロールを使用して、所有権を|dcm-object|の所有者に戻そうとします。プロジェクトの所有者ロールがオブジェクトの所有者ロールを保持していない場合、所有権は|dcm|の外部で手動で元に戻す必要があります。
|dcm|は、|dcm|を介して定義およびデプロイされた付与のみを認識します。|dcm|の外部で追加された付与は共存し、|dcm|はそれらを削除しません。
サポートされていないGRANTの型:
APPLICATION ROLE付与
CALLER付与
タグ¶
サポートされていない属性:
伝播
制限:
すべての`CREATE OR ALTER TAGの制限事項<https://docs.snowflake.com/sql-reference/sql/create-tag#create-or-alter-tag-usage-notes>`__が適用されます。
認証ポリシー¶
制限:
すべての`CREATE OR ALTER AUTHENTICATION POLICYの制限事項<https://docs.snowflake.com/sql-reference/sql/create-authentication-policy#usage-notes>`__が適用されます。