|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|定義ファイルでネイティブにサポートされています。

データベース

🚫 サポートされていない変更:

スキーマ

🚫 サポートされていない変更:

テーブル

🚫 サポートされていない変更:

動的テーブル

サポートされている変更

フルリフレッシュなし

  • ウェアハウス

  • ターゲットラグ

再初期化またはフルリフレッシュを行う場合:

  • リフレッシュモード

  • 以下を含む本体の変更:

    • 列のドロップ

    • 末尾への列の追加

⚠️ 不変の引数:

  • INITIALIZE

🚫 サポートされていない変更:

ビュー

🚫 サポートされていない変更:

内部ステージ

サポートされている変更

  • ディレクトリテーブル

  • コメント

⚠️ 不変の属性:

  • 暗号化タイプ

ウェアハウス

⚠️ 不変の属性:

  • INITIALLY_SUSPENDED

ロールおよびデータベースロール

🚫 サポートされていない型:

  • アプリケーションロール

Grant

🚫 サポートされていないGRANT型:

  • APPLICATION ROLE付与

  • CALLER付与

注釈

以前にデプロイされたGRANT OWNERSHIPステートメントを削除するとき、|dcm|は現在の所有者ロールを使用して、所有権を|dcm-object|所有者に戻そうと試みます。プロジェクトの所有者ロールがオブジェクトの所有者ロールを保持していない場合は、所有権を|dcm|の外部で手動で送り返す必要があります。

|dcm|は、|dcm|を介して定義およびデプロイされた付与のみを認識します。|dcm|の外部で追加された付与は共存し、|dcm|はそれらを削除しません。

データメトリック関数

データメトリック関数(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を定義する例

DEFINE DATA METRIC FUNCTION DCM_DEMO.TESTS.INVENTORY_SPREAD(
  TABLE_NAME TABLE(
    COLUMN_VALUE number
  )
)
  RETURNS number
AS
$$
  SELECT
    MAX(COLUMN_VALUE) - MIN(COLUMN_VALUE)
  FROM
    TABLE_NAME
  WHERE
    COLUMN_VALUE IS NOT NULL
$$;

期待値を持つシステムDMFのアタッチの例

ATTACH DATA METRIC FUNCTION SNOWFLAKE.CORE.MIN
  TO TABLE DCM_PROJECT_{{db}}.RAW.INVENTORY
  ON (IN_STOCK)
  EXPECTATION MIN_10_ITEMS_INVENTORY (value > 10);

期待値を持つUDMFのアタッチの例

ATTACH DATA METRIC FUNCTION DCM_DEMO.TESTS.INVENTORY_SPREAD
  TO TABLE DCM_PROJECT_{{db}}.RAW.INVENTORY
  ON (IN_STOCK)
  EXPECTATION EVEN_ITEM_INVENTORY (VALUE < 50);

利用可能なすべてのシステムDMFsを表示するには、``SHOW DATA METRIC FUNCTIONS IN DATABASE SNOWFLAKE``をクエリします。

タスク

  • 既に開始されているタスクに定義の変更がデプロイされると、Snowflakeは自動的にそのタスク(またはそのルートタスク)を一時的に中断し、変更を適用してから、再開します。

  • 新しくデプロイされたタスクは、デフォルトで一時停止されます。

🚫 サポートされていない変更:

CREATE OR ALTER TASKステートメントの制限詳細については、 CREATE TASK をご参照ください。

SQL 関数

🚫 サポートされていない変更:

CREATE OR ALTERステートメントの制限詳細については、 CREATE FUNCTION をご参照ください。

タグ

🚫 サポートされていない属性:

  • 伝播

タグ、マスキングポリシー、および行アクセスポリシーのアタッチ(サポート対象外)

タグ、マスキングポリシー、および行アクセスポリシーは、|dcm|テーブル列の定義に追加できません。

  • |dcm|の外部で、マスキングと行アクセスポリシーを手動でアタッチできます。

  • テーブルオブジェクトの|dcm|定義は、アタッチされたマスキングまたは行アクセスポリシーを無視します。テーブル定義を再デプロイしても取り消されません。それらの定義にポリシーが含まれていない場合でも同様です。