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 DIMENSIONS FOR METRIC , SHOW SEMANTIC FACTS , SHOW SEMANTIC METRICS , SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML
Syntax¶
Wobei:
Die Parameter für logische Tabellen sind:
Die Parameter für Beziehungen sind:
Die Parameter für Ausdrücke in den Definitionen von Fakten sind:
Die Parameter für Ausdrücke in den Definitionen von Dimensionen sind:
Die Parameter für Ausdrücke in den Definitionen von Kennzahlen sind:
Sie können eine Kennzahl definieren, die eine Fensterfunktion verwendet (eine Fensterfunktionskennzahl), indem Sie die folgende Syntax verwenden:
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¶
nameGibt 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.
AI_SQL_GENERATION 'instructions_for_sql_generation'Gibt Anweisungen für Cortex Analyst an, die erklären, wie die SQL-Anweisung generiert wird.
Weitere Informationen dazu finden Sie unter Bereitstellung kundenspezifischer Anweisungen für Cortex Analyst.
AI_QUESTION_CATEGORIZATION 'instructions_for_question_categorization'Gibt Anweisungen für Cortex Analyst an, die erklären, wie Fragen klassifiziert werden.
Weitere Informationen dazu finden Sie unter Bereitstellung kundenspezifischer Anweisungen für Cortex Analyst.
COPY GRANTSWenn 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 ASGibt 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_nameGibt 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_ideindeutige Werte enthält, geben Sie Folgendes an:Wenn die Kombination der Werte in den Spalten
product_area_idundproduct_ideindeutig ist, geben Sie Folgendes an:Sie können mehrere Spalten und mehrere Kombinationen von Spalten als eindeutig in einer bestimmten logischen Tabelle identifizieren:
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.
CONSTRAINT [ constraint_name ].DISTINCT RANGE BETWEEN start_column AND end_column EXCLUSIVE-
Gibt eine Einschränkung für eine Bereichsverknüpfung an.
constraint_nameGibt einen optionalen Namen für die Einschränkung an.
Wenn Sie diesen Namen weglassen, verwendet der Befehl einen vom System generierten Namen für die Einschränkung.
DISTINCT RANGE BETWEEN start_column AND end_column EXCLUSIVEgibt an, dass in jeder Zeile der Bereich zwischenstart_columnundend_columnein eindeutiger Bereich ist:Der Bereich ist ein halboffenes Intervall, wobei der Bereich auf der linken Seite (
start_column) geschlossen ist und auf der rechten Seite (end_column) geöffnet ist.Mit anderen Worten: Die Zeit auf der linken Seite ist im Bereich enthalten, aber die Zeit auf der rechten Seite ist aus dem Bereich ausgeschlossen.
Beispiel: Für eine Zeile in dieser Tabelle, wenn der Wert in
start_column2024-01-15 00:00:00.000ist, und der Wert inend_column2024-02-01 00:00:00.000ist, lautet der Bereich folgendermaßen:2024-01-15 00:00:00.000 <= timestamp_from_other_table < 2024-02-01 00:00:00.000Der Zeitstempel
2024-01-15 00:00:00.000ist in diesem Bereich enthalten, aber der Zeitstempel2024-02-01 00:00:00.000ist nicht enthalten.start_columnundend_columnmüssen physische Spalten aus derselben Tabelle oder Fakten oder Dimensionen aus derselben Tabelle sein.
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 ASGibt 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 [ ( ... ) ]Gibt die andere logische Tabelle an, auf die die erste logische Tabelle verweist.
Sie können eine der folgenden Möglichkeiten in Klammern angeben, je nachdem, wie Sie die Tabellen verknüpfen möchten:
ref_column_name [ , ... ]Gibt eine Spalte an, die mit dem PRIMARY KEY oder der UNIQUE-Einschränkung in der Definition der logischen Tabelle identifiziert wird.
ASOF ref_column_name [ , ... ] )Gibt für eine ASOF-Verknüpfung eine Spalte mit einem der unterstützten Typen an.
Bemerkung
Sie können höchstens ein ASOF-Schlüsselwort in der Definition einer bestimmten Beziehung angeben. Sie können dieses Schlüsselwort vor jeder Spalte in der Liste angeben.
BETWEEN start_column AND end_column EXCLUSIVE-
Gibt für eine Bereichsverknüpfung den Bereich der möglichen Werte in der ersten Tabelle an.
start_column.end_columnGibt die Spalten an, die den Anfang und das Ende des Bereichs definieren.
Sie müssen eine Einschränkung für diese Spalten definieren.
Sie können nicht dieselbe Spalte für
start_columnundend_columnverwenden.Wenn Sie dieselbe Spalte verwenden möchten, verwenden Sie eine ASOF-Beziehung.
Bemerkung
column_namemuss einen Datentyp haben, der umgewandelt werden kann in die Datentypen fürstart_columnundend_column.
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 die DIMENSIONS-Klausel oder die 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_nameGibt einen Namen für eine Dimension, einen Fakt oder eine Kennzahl an.
USING relationship_name [ , ... ]-
Gibt bei Definitionen für die Kennzahl die Beziehung an, die für die Verknüpfung der Tabellen und die Berechnung der Kennzahl verwendet werden soll, wenn es mehrere Beziehungspfade zwischen zwei logischen Tabellen gibt.
Um eine abgeleitete Metrik (eine Metrik, die mehrere Metriken aus verschiedenen logischen Tabellen kombiniert) zu definieren, lassen Sie
table_alias.aus Namen weg.Siehe Wie Snowflake semantische Ansichten validiert für die Regeln zur Definition einer gültigen semantischen Ansicht.
NON ADDITIVE BY ( dimension [ { ASC | DESC } ] [ NULLS { FIRST | LAST } ] [ , ... ] )Gibt eine Liste von Dimensionen an, die bei der Summe der Kennzahl nicht verwendet werden sollen.
Stattdessen werden die Zeilen während der Abfrageverarbeitung nach den nicht additiven Dimensionen sortiert, und die Werte der letzten Zeilen (die neuesten Snapshots der Werte) werden aggregiert, um die Kennzahl zu berechnen.
{ ASC | DESC }Sortiert optional die Werte der nicht additiven Dimensionen in aufsteigender Reihenfolge (niedrigster bis höchster Wert) oder absteigender Reihenfolge (höchster bis niedrigster Wert), wodurch der letzte Snapshot bestimmt wird.
Standard: ASC
NULLS { FIRST | LAST }Gibt optional an, ob anhand der Sortierreihenfolge (ASC oder DESC) NULL-Werte vor bzw. nach Nicht-NULL-Werten sortiert werden. Die Sortierreihenfolge bestimmt, was der letzte Snapshot ist.
Standard: Hängt von der Sortierreihenfolge (ASC oder DESC) ab; siehe Nutzungshinweise in der ORDER BY-Dokumentation.
Durch Angeben der NON ADDITIVE BY-Klausel wird die Kennzahl zu einer semi-additiven Kennzahl.
Weitere Informationen dazu finden Sie unter Identifizieren der Dimensionen, die für eine Metrik nicht additiv sein sollen.
AS sql_exprGibt den SQL-Ausdruck zur Berechnung der Dimension, des Fakts oder der Kennzahl an.
Siehe Definition von Fakten, Dimensionen und Metriken. Die Validierungsregeln für diese Ausdrücke finden Sie unter Wie Snowflake semantische Ansichten validiert.
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.
WITH CORTEX SEARCH SERVICE search_service_name [ USING search_service_column_name ]Gibt den Cortex Search Service an, der für diese Dimension verwendet werden soll.
Sie können diesen Parameter nur für Dimensionen angeben (und nicht für Fakten oder Metriken).
Wenn sich der Cortex Search Service in einer anderen Datenbank oder einem anderen Schema befindet, qualifizieren Sie den Namen des Dienstes (z. B.
my_db.my_schema.my_service).Sie können dazu die optionale USING-Klausel auf den Namen der Spalte im Cortex Search Service festlegen.
Parameter für Fensterfunktionskennzahlen¶
Diese Parameter sind Teil der Syntax zur Definition von Fensterfunktionskennzahlen:
metricGibt 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_metricsGruppiert 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 dimensionsGruppiert Zeilen in Partitionen nach allen in der SEMANTIC_VIEW-Klausel der Abfrage angegebenen Dimensionen, mit Ausnahme der durch
dimensionsangegebenen Dimensionen.dimensionsdarf 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_1von der Partitionierung aus:Angenommen, Sie führen eine Abfrage aus, die die Dimension
table_1.dimension_1angibt:In der Abfrage wird die Kennzahl
table_1.metric_2wie folgt ausgewertet:Beachten Sie, dass
table_1.dimension_1von 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. |
Für das Ausführen von Operationen auf einem Objekt in einem Schema ist mindestens eine Berechtigung für die übergeordnete Datenbank und mindestens eine Berechtigung für das übergeordnete Schema erforderlich.
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.
Beispiele¶
Siehe Erstellen einer semantischen Ansicht unter Verwendung des Befehls CREATE SEMANTIC VIEW.
