Entitäten angeben¶
In der Datei mit der snowflake.yml
-Definition können Sie mehrere Entitäten angeben. Jede Entität wird durch einen eindeutigen Schlüssel identifiziert. Das folgende Beispiel gibt zwei Entitäten mit den Schlüsseln entity_a
und entity_b
an:
entities:
entity_a:
...
entity_b:
...
Jede Entität muss einen Typ angeben. Derzeit werden folgende Typen unterstützt:
Bezeichner für Entitäten¶
Sie können mehrere Entitäten desselben Typs in der snowflake.yml
-Datei angeben. Sie können Entitäten auf die folgenden Arten benennen:
Verwenden Sie einen eindeutigen Schlüssel in der Liste der Entitäten.
Das folgende Beispiel zeigt die Verwendung von
entity_a
undentity_b
als eindeutige Schlüssel:entities: entity_a: ... entity_b: ...
Geben Sie für jede Entität einen
identifier
-Namen an.Das folgende Beispiel fügt Bezeichnernamen zu den Entitäten
entity_a
undentity_b
hinzu:entities: entity_a: identifier: entity_a_name ... entity_b: identifier: name: entity_a_name
Fügen Sie zu jeder Entität ein
identifier
-Objekt hinzu.Mit Bezeichnerobjekten können Sie für jede Entität einen Namen, eine Datenbank und ein Schema angeben, wie im folgenden Beispiel gezeigt:
entities: entity_b: identifier: name: entity_a_name schema: public database: DEV
Projekt-Mixins¶
In vielen Fällen kann es sinnvoll sein, projektweite Standardwerte festzulegen. Mixins bieten eine Möglichkeit, gemeinsame Attribute aus einzelnen Entitäten zu extrahieren. Sie können mehrere Mixins angeben. Sie müssen angeben, welche Mixins von jeder Entität verwendet werden sollen, indem Sie die meta.use_mixins
-Eigenschaft verwenden.
Wenn Sie Mixins mit einer Entität verwenden, müssen Sie sicherstellen, dass alle Eigenschaften eines Mixins auf diese Entität angewendet werden können. Die Anwendung einer Eigenschaft, die auf einer Entität nicht verfügbar ist, verursacht einen Fehler. Daher müssen Sie in manchen Fällen mehrere Mixins verwenden.
Bemerkung
Mixin-Werte werden durch explizit deklarierte Attribute für Entitäten überschrieben.
Das folgende Beispiel enthält zwei Mixins: stage_mixin
und snowpark_shared
. Die my_dashboard
-Entität verwendet nur stage_mixin
, während die my_function
-Entität beide Mixins verwendet.
definition_version: 2
mixins:
stage_mixin:
stage: "my_stage"
snowpark_shared:
artifacts: ["app/"]
imports: ["@package_stage/package.zip"]
entities:
my_function:
type: "function"
...
meta:
use_mixins:
- "stage_mixin"
- "snowpark_shared"
my_dashboard:
type: "dashboard"
...
meta:
use_mixins:
- "stage_mixin"
Wenn eine Entität mehrere Mixins verwendet, die dieselbe Eigenschaft angeben, verwendet die Entität den Wert des späteren Mixins. Im folgenden Beispiel lautet der Wert des Schlüssels der foo
: codenowrap:mixin_2_value
-Entität.
mixins:
mixin_1:
key: mixin_1_value
mixin_2:
key: mixin_2_value
entities:
foo:
meta:
use_mixin:
- mixin_1
- mixin_2
Die Verhaltensweise bei der Anwendung von Mixin-Werten hängt vom Wertetyp ab. Für skalare Werte (Zeichenfolgen, Zahlen, boolesche Werte) werden Werte überschrieben.
Mixin-Notation |
Explizites Ergebnis |
---|---|
definition_version: 2
mixins:
mix1:
stage: A
mix2:
stage: B
entities:
test_procedure:
stage: C
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
stage: C
|
Bei Sequenzen werden die Werte zusammengeführt, um eine neue Sequenz zu erstellen. Diese Implementierung vermeidet die Erstellung doppelter Einträge in der Sequenz.
Mixin-Notation |
Explizites Ergebnis |
---|---|
definition_version: 2
mixins:
mix1:
artifacts:
- a.py
mix2:
artifacts:
- b.py
entities:
test_procedure:
artifacts:
- app/
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
artifacts:
- a.py
- b.py
- app/
|
Für die Zuordnung von Werten werden neue Schlüssel hinzugefügt und bestehende Werte aktualisiert. Die Aktualisierung ist rekursiv.
Mixin-Notation |
Explizites Ergebnis |
---|---|
definition_version: 2
mixins:
mix1:
secrets:
secret1: v1
mix2:
secrets:
secret2: v2
entities:
test_procedure:
secrets:
secret3: v3
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
secrets:
secret1: v1
secret2: v2
secret3: v3
|
definition_version: 2
mixins:
mix1:
secrets:
secret_name: v1
mix2:
secrets:
secret_name: v2
entities:
test_procedure:
secrets:
secret_name: v3
meta:
use_mixins:
- mix1
- mix2
|
definition_version: 2
entities:
test_procedure:
secrets:
secret_name: v3
|
definition_version: 2
mixins:
shared:
identifier:
schema: foo
entities:
sproc1:
identifier:
name: sproc
meta:
use_mixins: ["shared"]
sproc2:
identifier:
name: sproc
schema: from_entity
meta:
use_mixins: ["shared"]
|
definition_version: 2
entities:
sproc1:
identifier:
name: sproc
schema: foo
sproc2:
identifier:
name: sproc
schema: from_entity
|