Unterstützte Objekttypen in DCM Projects

Die DEFINE-Anweisung ist ein spezieller Befehl, der ausschließlich in DCM project-Definitionsdateien verwendet wird. Seine Syntax ist ähnlich wie beim Befehl CREATEORALTER, jedoch mit den folgenden wesentlichen Unterschieden:

  • Die Reihenfolge und der Speicherort von DEFINE-Anweisungen spielt keine Rolle. Snowflake sammelt und sortiert während der Ausführung des Projekts alle Anweisungen aus allen Definitionsdateien.

  • Wenn Sie eine DEFINE-Anweisung entfernen, die zuvor bereitgestellt wurde, löscht Snowflake das entsprechende Objekt, wenn Sie das Projekt das nächste Mal bereitstellen. Das Gleiche gilt für GRANT- und ATTACH-Anweisungen, die nach ihrer vorherigen Bereitstellung entfernt werden.

  • Es wird nur eine Teilmenge der Snowflake-Objekttypen unterstützt.

  • Alle Objekte müssen mit einem voll qualifizierten Namen definiert werden (database.schema.object_name).

  • Verweise auf andere Objekte müssen mit vollqualifizierten Namen versehen sein.

Die folgenden Objekttypen werden in DCM Projects-Definitionsdateien mit DEFINE-, GRANT- oder ATTACH-Anweisungen nativ unterstützt.

Datenbank

🚫 Nicht unterstützte Änderungen:

Schema

🚫 Nicht unterstützte Änderungen:

Tabelle

🚫 Nicht unterstützte Änderungen:

Dynamische Tabelle

Unterstützte Änderungen:

Ohne vollständige Aktualisierung:

  • Warehouse

  • Zielverzögerung

Bei Neuinitialisierung oder vollständiger Aktualisierung:

  • Aktualisierungsmodus

  • Alle Änderungen des Textkörpers, einschließlich:

    • Löschen von Spalten

    • Hinzufügen von Spalten am Ende

⚠️ Unveränderliche Argumente:

  • INITIALIZE

🚫 Nicht unterstützte Änderungen:

Ansicht

🚫 Nicht unterstützte Änderungen:

Interner Stagingbereich

Unterstützte Änderungen:

  • Verzeichnistabelle

  • Kommentar

⚠️ Unveränderliche Attribute:

  • Verschlüsselungstyp

Warehouse

⚠️ Unveränderliche Attribute:

  • INITIALLY_SUSPENDED

Rolle und Datenbankrolle

🚫 Nicht unterstützte Typen:

  • Anwendungsrolle

Grant

🚫 Nicht unterstützte GRANT-Typen:

  • APPLICATION ROLE-Zuweisungen

  • CALLER-Zuweisungen

Bemerkung

Beim Entfernen einer GRANT OWNERSHIP-Anweisung, die zuvor bereitgestellt wurde, versucht DCM Projects, die aktuelle Eigentümerrolle zu verwenden, um die Eigentümerschaft wieder an den DCM project-Eigentümer zurückzugeben. Wenn die Rolle des Projekteigentümers nicht die Eigentümerrolle des Objekts enthält, muss die Eigentümerschaft manuell außerhalb von DCM Projects zurückübertragen werden.

DCM Projects kennt nur Berechtigungen, die über DCM Projects definiert und bereitgestellt wurden. Alle Berechtigungen, die außerhalb von DCM Projects hinzugefügt wurden, koexistieren und werden von DCM Projects nicht entfernt.

Datenmetrikfunktion

Mit Datenmetrikfunktionen (DMFs) können Sie Erwartungen an die Datenqualität definieren und diese Erwartungen mit Tabellen verknüpfen. Sie können aus den bestehenden System-DMFs auswählen oder Ihre eigenen benutzerdefinierten Datenmetrikfunktionen (UDMFs) schreiben. Sie können sie dann mit einer Viele-zu-eins-Beziehung an Tabellen, Ansichten und dynamische Tabellen anhängen. Weitere Informationen dazu finden Sie unter Verwenden von SQL zum Einrichten von Datenmetrikfunktionen.

Um Datenmetrikfunktionen anzuhängen, müssen Sie zunächst einen DATA_METRIC_SCHEDULE zu jeder Tabelle, dynamischen Tabelle oder Ansichtsdefinition hinzufügen. Beispiel: DATA_METRIC_SCHEDULE = TRIGGER_ON_CHANGES. Der TRIGGER_ON_CHANGES-Zeitplan ist für Ansichten nicht verfügbar.

Die benutzerdefinierten Namen von Erwartungen müssen pro Projekt und Anhang eindeutig sein.

Das Definieren von Erwartungen ist optional, wird aber empfohlen, wenn Sie DMFs an Tabellenspalten anhängen. Angehängte DMFs ohne gesetzte Erwartungen werden bei der Ausführung von EXECUTE DCM PROJECT <my_project> TEST ALL nicht berücksichtigt.

Unterstützte Änderungen:

  • Definieren von UDMFs (benutzerdefinierte Datenmetrikfunktionen)

  • Anhängen von System-DMFs und UDMFs für Tabellen, Ansichten oder dynamische Tabellen innerhalb und außerhalb eines DCM project

  • Definieren der Datenerwartungen für Tabellenspalten

Beispiel:

Ein Beispiel für die Definition einer 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
$$;

Beispiel für das Anhängen einer System-DMF mit einer Erwartung:

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

Beispiel für das Anhängen einer UDMF mit einer Erwartung:

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);

Um alle verfügbaren System-DMFs zu sehen, fragen Sie SHOW DATA METRIC FUNCTIONS IN DATABASE SNOWFLAKE ab.

Aufgabe

  • Wenn Definitionsänderungen für eine bereits gestartete Aufgabe vorgenommen werden, hält Snowflake diese Aufgabe (oder deren Stammaufgabe) automatisch vorübergehend an, wendet die Änderung an und setzt sie dann wieder fort.

  • Neu bereitgestellte Aufgaben sind standardmäßig angehalten.

🚫 Nicht unterstützte Änderungen:

Beschränkungen in CREATE OR ALTER TASK-Anweisungen Weitere Informationen dazu finden Sie unter CREATE TASK.

Funktion SQL

🚫 Nicht unterstützte Änderungen:

Beschränkungen in CREATE OR ALTER-Anweisungen Weitere Informationen dazu finden Sie unter CREATE FUNCTION.

Tag

🚫 Nicht unterstützte Attribute:

  • Weitergabe

Anhängen von Tags, Maskierungsrichtlinien und Zeilenzugriffsrichtlinien (nicht unterstützt)

Tags, Maskierungsrichtlinien und Zeilenzugriffsrichtlinien können nicht zu DCM Projects-Tabellenspaltendefinitionen hinzugefügt werden.

  • Sie können Maskierungs- und Zeilenzugriffsrichtlinien manuell außerhalb von DCM Projects anhängen.

  • DCM Projects-Definitionen für Tabellenobjekte ignorieren alle damit verbundenen Maskierungs- oder Zeilenzugriffsrichtlinien. Sie werden nicht durch die erneute Bereitstellung von Tabellendefinitionen widerrufen, auch wenn diese Definitionen nicht die Richtlinien enthalten.