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 vollqualifizierte Namen verwenden.

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

Datenbank

Einschränkungen:

Alle CREATE OR ALTER DATABASE-Beschränkungen gelten, einschließlich:

  • Umbenennen der Datenbank

Schema

Einschränkungen:

Alle CREATE OR ALTER SCHEMA-Beschränkungen gelten, einschließlich:

  • Umbenennen des Schemas

Tabelle

Einschränkungen:

Alle CREATE OR ALTER TABLE-Beschränkungen gelten, einschließlich:

  • Umbenennen von Tabellen

  • Umbenennen von Spalten

  • Neuordnen von Spalten

  • Ändern von Spaltentypen in inkompatible Typen

  • Hinzufügen einer Suchoptimierung zu einer Tabelle oder Spalten

  • Hinzufügen von Tags und Richtlinien zu einer Tabelle oder Spalten

Ansicht

Einschränkungen:

Alle CREATE OR ALTER VIEW-Beschränkungen gelten, einschließlich:

  • Umbenennen von Ansichten

  • Neuordnen von Spalten

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

Einschränkungen:

Alle CREATE OR ALTER DYNAMIC TABLE-Beschränkungen gelten, einschließlich:

  • Neuordnen von Spalten

  • Umbenennen von dynamischen Tabellen

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.

Einschränkungen:

Dateiformat

Einschränkungen:

Interner Stagingbereich

Unterstützte Änderungen:

  • Verzeichnistabelle

  • Kommentar

Unveränderliche Attribute:

  • Verschlüsselungstyp

Einschränkungen:

Funktion SQL

Einschränkungen:

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.

Warehouse

Unveränderliche Attribute:

  • INITIALLY_SUSPENDED

Einschränkungen:

Rolle und Datenbankrolle

Nicht unterstützte Typen:

  • Anwendungsrolle

Grant

So wie jedes Objekt in DCM Projects nur einmal definiert werden kann, kann jede Berechtigung/Berechtigungsempfänger-Beziehung nur einmal für alle DCM Projects definiert werden.

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.

Nicht unterstützte GRANT-Typen:

  • APPLICATION ROLE-Zuweisungen

  • CALLER-Zuweisungen

Tag

Nicht unterstützte Attribute:

  • Weitergabe

Einschränkungen:

Authentifizierungsrichtlinie

Einschränkungen:

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| 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.