CREATE SEMANTIC VIEW¶
Erstellt eine neue semantische Ansicht im aktuellen/angegebenen Schema.
Die semantische Ansicht muss /user-guide/views-semantic/validation-rules`diesen Validierungsregeln entsprechen.
- Siehe auch::
ALTER SEMANTIC VIEW, DESCRIBE SEMANTIC VIEW, DROP SEMANTIC VIEW, SHOW SEMANTIC VIEWS, SHOW SEMANTIC DIMENSIONS, SHOW SEMANTIC METRICS, SHOW SEMANTIC DIMENSIONS FOR METRIC, SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML
Syntax¶
CREATE [ OR REPLACE ] SEMANTIC VIEW [ IF NOT EXISTS ] <name>
TABLES ( logicalTable [ , ... ] )
[ RELATIONSHIPS ( relationshipDef [ , ... ] ) ]
[ FACTS ( semanticExpression [ , ... ] ) ]
[ DIMENSIONS ( semanticExpression [ , ... ] ) ]
[ METRICS ( semanticExpression [ , ... ] ) ]
[ COMMENT = '<comment_about_semantic_view>' ]
[ COPY GRANTS ]
Wobei:
Die Parameter für logische Tabellen sind:
logicalTable ::= [ <table_alias> AS ] <table_name> [ PRIMARY KEY ( <primary_key_column_name> [ , ... ] ) ] [ UNIQUE ( <unique_column_name> [ , ... ] ) [ ... ] ] [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ] [ COMMENT = '<comment_about_table>' ]
Die Parameter für Beziehungen sind:
relationshipDef ::= [ <relationship_identifier> AS ] <table_alias> ( <column_name> [ , ... ] ) REFERENCES <ref_table_alias> [ ( <ref_column_name> [ , ... ] ) ]
Die Parameter für Ausdrücke in den Definitionen von Dimensionen sind:
semanticExpression ::= [ PUBLIC ] <table_alias>.<dimension> AS <sql_expr> [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ] [ COMMENT = '<comment_about_the_dimension>' ]
Die Parameter für Ausdrücke in den Definitionen von Fakten und Kennzahlen sind:
semanticExpression ::= [ { PRIVATE | PUBLIC } ] <table_alias>.<fact_or_metric> AS <sql_expr> [ WITH SYNONYMS [ = ] ( '<synonym>' [ , ... ] ) ] [ COMMENT = '<comment_about_the_fact_or_metric>' ]
Sie können eine Kennzahl definieren, die eine Fensterfunktion verwendet (eine Fensterfunktionskennzahl), indem Sie die folgende Syntax verwenden:
windowFunctionMetricDefinition ::= <window_function>( <metric> ) OVER ( [ PARTITION BY { <exprs_using_dimensions_or_metrics> | EXCLUDING <dimensions> } ] [ ORDER BY <exprs_using_dimensions_or_metrics> [ ASC | DESC ] [ NULLS { FIRST | LAST } ] [, ...] ] [ <windowFrameClause> ] )
Weitere Informationen zu dieser Syntax finden Sie unter Parameter für Fensterfunktionskennzahlen.
Bemerkung
Die Reihenfolge der Klauseln ist wichtig. Sie müssen zum Beispiel die FACTS-Klausel vor der DIMENSIONS-Klausel angeben.
Sie können sich auf semantische Ausdrücke beziehen, die in späteren Klauseln definiert werden. Selbst wenn beispielsweise fact_2
nach fact_1
definiert ist, können Sie fact_2
in der Definition von fact_1
verwenden.
Erforderliche Parameter¶
name
Gibt den Namen der semantischen Ansicht an; der Name muss für das Schema, in dem die Tabelle erstellt wird, eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"
). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Informationen dazu finden Sie unter Anforderungen an Bezeichner.
Optionale Parameter¶
COMMENT = 'comment_about_semantic_view'
Gibt einen Kommentar zur semantischen Ansicht an.
COPY GRANTS
Wenn Sie OR REPLACE angeben, um eine bestehende semantische Ansicht durch eine neue semantische Ansicht zu ersetzen, können Sie diesen Parameter so einstellen, dass alle Berechtigungen, die für die bestehende semantische Ansicht gewährt wurden, in die neue semantische Ansicht kopiert werden.
Der Befehl kopiert alle Berechtigungen außer OWNERSHIP aus der bestehenden semantischen Ansicht in die neue semantische Ansicht. Die Rolle, die die Anweisung CREATE SEMANTIC VIEW ausführt, ist Eigentümer der neuen Ansicht.
Die neue semantische Ansicht übernimmt keine zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert werden.
Die Operation zum Kopieren von Berechtigungen erfolgt atomar mit der Anweisung CREATE SEMANTIC VIEW (mit anderen Worten, innerhalb derselben Transaktion).
Wenn Sie COPY GRANTS weglassen, erbt die neue semantische Ansicht keine expliziten Zugriffsrechte, die für die bestehende semantische Ansicht gewährt wurden, aber sie erbt alle zukünftigen Berechtigungen, die für den Objekttyp im Schema definiert sind.
Parameter für logische Tabellen¶
Diese Parameter sind Teil der Syntax für logische Tabellen:
table_alias AS
Gibt einen optionalen Alias für die logische Tabelle an.
Wenn Sie einen Alias angeben, müssen Sie diesen Alias verwenden, wenn Sie sich in Beziehungen, Fakten, Dimensionen und Metriken auf die logische Tabelle beziehen.
Wenn Sie keinen Alias angeben, verwenden Sie den unqualifizierten logischen Tabellennamen, um auf die Tabelle zu verweisen.
table_name
Gibt den Namen der logischen Tabelle an.
PRIMARY KEY ( primary_key_column_name [ , ... ] )
Gibt die Namen von einer oder mehreren Spalten in der logischen Tabelle an, die als Primärschlüssel der Tabelle dienen.
UNIQUE ( unique_column_name [ , ... ] )
Gibt den Namen einer Spalte an, die einen eindeutigen Wert enthält, oder die Namen von Spalten, die eindeutige Kombinationen von Werten enthalten.
Wenn zum Beispiel die Spalte
service_id
eindeutige Werte enthält, geben Sie Folgendes an:TABLES( ... product_table UNIQUE (service_id)
Wenn die Kombination der Werte in den Spalten
product_area_id
undproduct_id
eindeutig ist, geben Sie Folgendes an:TABLES( ... product_table UNIQUE (product_area_id, product_id) ...
Sie können mehrere Spalten und mehrere Kombinationen von Spalten als eindeutig in einer bestimmten logischen Tabelle identifizieren:
TABLES( ... product_table UNIQUE (product_area_id, product_id) UNIQUE (service_id) ...
Bemerkung
Wenn Sie eine Spalte bereits als Primärschlüsselspalte identifiziert haben (indem Sie PRIMARY KEY verwenden), fügen Sie die Klausel UNIQUE für diese Spalte nicht hinzu.
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )
Gibt ein oder mehrere Synonyme für die logische Tabelle an. Im Gegensatz zu Aliasen werden Synonyme nur zu Informationszwecken verwendet. Sie verwenden Synonyme nicht, um in Beziehungen, Dimensionen, Metriken und Fakten auf die logische Tabelle zu verweisen.
COMMENT = 'comment_about_table'
Gibt einen Kommentar zu der logischen Tabelle an.
Parameter für Beziehungen¶
Diese Parameter sind Teil der Syntax für Beziehungen:
relationship_identifier AS
Gibt einen optionalen Bezeichner für die Beziehung an.
table_alias ( column_name [ , ... ] )
Gibt eine der logischen Tabellen und eine oder mehrere ihrer Spalten an, die sich auf Spalten in einer anderen logischen Tabelle beziehen.
ref_table_alias [ ( ref_column_name [ , ... ] ) ]
Gibt die andere logische Tabelle und eine oder mehrere ihrer Spalten an, die von der ersten logischen Tabelle referenziert werden.
Die Spalten müssen als PRIMARY KEY oder UNIQUE in der logischen Tabellendefinition gekennzeichnet sein.
Parameter für Fakten, Dimensionen und Metriken¶
In einer semantischen Ansicht müssen Sie mindestens eine Dimension oder Metrik definieren, was bedeutet, dass Sie mindestens eine DIMENSIONS- oder METRICS-Klausel angeben müssen.
Diese Parameter sind Teil der Syntax zur Definition von Fakten, Dimensionen oder Kennzahlen:
{ PRIVATE | PUBLIC }
Gibt an, ob ein Fakt oder eine Kennzahl privat oder öffentlich ist. Fakten und Kennzahlen, die als privat gekennzeichnet sind, können nicht abgefragt oder in einer Abfragebedingung verwendet werden.
Bemerkung
Sie können eine Dimension nicht als privat markieren. Dimensionen sind immer öffentlich. Bei einer Dimension ist die Wirkung dieselbe, egal ob Sie PUBLIC angeben oder weglassen.
Wenn Sie PRIVATE und PUBLIC weglassen, ist die Dimension, der Fakt oder die Kennzahl standardmäßig öffentlich.
table_alias.semantic_expression_name AS sql_expr
Gibt einen Namen für eine Dimension, einen Fakt oder eine Metrik und den SQL-Ausdruck für die Berechnung dieser Dimension, dieses Fakts oder dieser Metrik an.
Siehe Wie Snowflake semantische Ansichten validiert für die Regeln zur Definition einer gültigen semantischen Ansicht.
WITH SYNONYMS [ = ] ( 'synonym' [ , ... ] )
Gibt ein oder mehrere optionale Synonyme für die Dimension, den Fakt oder die Metrik an. Beachten Sie, dass die Synonyme nur zu Informationszwecken verwendet werden. Sie können Synonyme nicht verwenden, um sich auf eine Dimension, einen Fakt oder eine Metrik in einer anderen Dimension, einem anderen Fakt oder einer anderen Metrik zu beziehen.
COMMENT = 'comment_about_dim_fact_or_metric'
Gibt einen optionalen Kommentar zu der Dimension, dem Fakt oder der Metrik an.
Parameter für Fensterfunktionskennzahlen¶
Diese Parameter sind Teil der Syntax zur Definition von Fensterfunktionskennzahlen:
metric
Gibt einen metrischen Ausdruck für diese Fensterfunktion an. Sie können eine Kennzahl oder einen beliebigen gültigen metrischen Ausdruck angeben, den Sie verwenden können, um eine Kennzahl in dieser Entität zu definieren.
PARTITION BY ...
Gruppiert Zeilen in Partitionen. Sie können entweder nach einer bestimmten Menge von Ausdrücken oder nach allen in der Abfrage angegebenen Dimensionen (außer ausgewählten Dimensionen) partitionieren:
PARTITION BY exprs_using_dimensions_or_metrics
Gruppiert Zeilen nach SQL-Ausdrücken in Partitionen. Im SQL-Ausdruck:
Alle Dimensionen im Ausdruck müssen von derselben Entität aus zugänglich sein, die die Fensterfunktionskennzahl definiert.
Alle Kennzahlen müssen zu derselben Tabelle gehören, in der diese Kennzahl definiert ist.
Sie können keine Aggregate, Fensterfunktionen oder Unterabfragen angeben.
PARTITION BY EXCLUDING dimensions
Gruppiert Zeilen in Partitionen nach allen in der SEMANTIC_VIEW-Klausel der Abfrage angegebenen Dimensionen, mit Ausnahme der durch
dimensions
angegebenen Dimensionen.dimensions
darf sich nur auf Dimensionen beziehen, die von der Entität aus zugänglich sind, die die Fensterfunktionskennzahl definiert.Angenommen, Sie schließen beispielsweise die Dimension
table_1.dimension_1
von der Partitionierung aus:CREATE SEMANTIC VIEW sv ... METRICS ( table_1.metric_2 AS SUM(table_1.metric_1) OVER (PARTITION BY EXCLUDING table_l.dimension_1 ORDER BY table_1.dimension_2) ) ...
Angenommen, Sie führen eine Abfrage aus, die die Dimension
table_1.dimension_1
angibt:SELECT * FROM SEMANTIC VIEW( sv METRICS ( table_1.metric_2 ) DIMENSIONS ( table_1.dimension_1, table_1.dimension_2, table_1.dimension_3 );
In der Abfrage wird die Kennzahl
table_1.metric_2
wie folgt ausgewertet:SUM(table_1.metric_1) OVER ( PARTITION BY table_1.dimension_2, table_1.dimension_3 ORDER BY table_1.dimension_2 )
Beachten Sie, dass
table_1.dimension_1
von der PARTITION BY-Klausel ausgeschlossen wird.Bemerkung
Sie können EXCLUDING außerhalb von Kennzahldefinitionen in semantischen Ansichten nicht verwenden. EXCLUDING wird in Fensterfunktionsaufrufen in jedem anderen Kontext nicht unterstützt.
ORDER BY exprs_using_dimensions_or_metrics [ ASC | DESC ] [ NULLS FIRST | LAST ] [, ... ]
Sortiert die Zeilen innerhalb jeder Partition. Im SQL-Ausdruck:
Alle Dimensionen im Ausdruck müssen von derselben Entität aus zugänglich sein, die die Fensterfunktionskennzahl definiert.
Alle Kennzahlen müssen zu derselben Tabelle gehören, in der diese Kennzahl definiert ist.
Sie können keine Aggregate, Fensterfunktionen oder Unterabfragen angeben.
windowFrameClause
Weitere Informationen zu den Parametern für Fensterfunktionen und Beispiele finden Sie unter Fensterfunktionsmetriken definieren und abfragen.
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
---|---|---|
CREATE SEMANTIC VIEW |
Schema |
Erforderlich, um eine neue semantische Ansicht zu erstellen. |
SELECT |
Tabelle, Ansicht |
Erforderlich für alle in der Definition der semantischen Ansicht verwendeten Tabellen und/oder Ansichten. |
USAGE-Berechtigung für die übergeordnete Datenbank und das Schema ist erforderlich, um Operationen an einem beliebigen Objekt in einem Schema durchzuführen.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Die semantische Ansicht muss gültig sein und den unter Wie Snowflake semantische Ansichten validiert beschriebenen Regeln folgen .
Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.