Verwendung von SQL-Befehlen zum Erstellen und Verwalten semantischer Ansichten¶
In diesem Thema wird erklärt, wie die folgenden SQL-Befehle zum Erstellen und Verwalten von semantische Ansichten verwendet werden:
In diesem Thema wird außerdem erläutert, wie die folgende gespeicherte Prozedur und Funktion aufgerufen werden, um aus einer YAML-Spezifikation eine semantische Ansicht zu erstellen und die Spezifikation für eine semantische Ansicht abzurufen.
Erforderliche Berechtigungen zum Erstellen oder Ersetzen einer semantischen Ansicht¶
Um eine semantische Ansicht zu erstellen oder zu ersetzen, müssen Sie eine Rolle mit den folgenden Berechtigungen verwenden:
CREATE SEMANTIC VIEW in dem Schema, in dem Sie die semantische Ansicht erstellen.
USAGE für die Datenbank und das Schema, in dem Sie die semantische Ansicht erstellen.
SELECT für die in der semantischen Ansicht verwendeten Tabellen und Ansichten.
Informationen zu den Berechtigungen, die für die Abfrage einer semantischen Ansicht erforderlich sind, finden Sie unter Erforderliche Berechtigungen für die Abfrage einer semantischen Ansicht.
Erstellen einer semantischen Ansicht unter Verwendung des Befehls CREATE SEMANTIC VIEW¶
Um eine semantische Ansicht zu erstellen, verwenden Sie den Befehl CREATE SEMANTIC VIEW.
Bemerkung
Um eine semantischen Ansicht anhand einer YAML-Spezifikation zu erstellen, rufen Sie die gespeicherte Prozedur SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML auf.
Die semantische Ansicht muss gültig sein. Siehe Wie Snowflake semantische Ansichten validiert.
Im folgenden Beispiel werden die TPC-H-Beispieldaten verwendet, die in Snowflake verfügbar sind. Dieses Datenset enthält Tabellen, die ein vereinfachtes Geschäftsszenario mit Kunden, Bestellungen und Einzelposten darstellen.
In diesem Beispiel wird eine semantische Ansicht mit dem Namen tpch_rev_analysis erstellt, die die Tabellen im Datensatz TPC-H verwendet. Die semantische Ansicht definiert:
Drei logische Tabellen (
orders,customers, undline_items).Eine Beziehung zwischen den Tabellen
ordersundcustomers.Eine Beziehung zwischen den Tabellen
line_itemsundorders.Fakten, die zur Berechnung der Metriken verwendet werden.
Dimensionen für den Kundennamen, das Bestelldatum und das Jahr, in dem die Bestellung aufgegeben wurde.
Metriken für den durchschnittlichen Wert einer Bestellung und die durchschnittliche Anzahl von Einzelposten in einer Bestellung.
In den nächsten Abschnitten wird dieses Beispiel ausführlicher erläutert:
Bemerkung
Ein vollständiges Beispiel finden Sie unter Beispiel für die Verwendung von SQL zur Erstellung einer semantischen Ansicht.
Definieren der logischen Tabellen¶
Verwenden Sie im Befehl CREATE SEMANTIC VIEW die Klausel TABLES, um die logischen Tabellen in der Ansicht zu definieren. In dieser Klausel können Sie:
Geben Sie den Namen der physischen Tabelle und einen optionalen Alias an.
Identifizieren Sie die folgenden Spalten in der logischen Tabelle:
Spalten, die als Primärschlüssel dienen.
Spalten, die eindeutige Werte enthalten (andere als die Primärschlüsselspalten).
Sie können diese Spalten verwenden, um Beziehungen in dieser semantischen Ansicht zu definieren.
Fügen Sie Synonyme für die Tabelle hinzu (für eine bessere Auffindbarkeit).
Fügen Sie einen beschreibenden Kommentar hinzu.
In dem zuvor vorgestellten Beispiel definiert die Klausel TABLES drei logische Tabellen:
Eine Tabelle
orders, die die Bestellinformationen aus der Tabelle TPC-Hordersenthält.Eine Tabelle
customers, die die Kundeninformationen aus der Tabelle TPC-Hcustomersenthält.Eine Tabelle
line_items, die die Einzelposten in Bestellungen aus der Tabelle TPC-Hlineitementhält.
In dem Beispiel wird die PRIMARY KEY-Klausel verwendet, um die Spalten zu identifizieren, die als Primärschlüssel für jede logische Tabelle verwendet werden sollen. Primärschlüssel und eindeutige Werte helfen bei der Bestimmung der Typen von Beziehungen zwischen den Tabellen (z. B. viele-zu-eins oder eins-zu-eins).
Das Beispiel enthält auch Synonyme und Kommentare, die die logischen Tabellen beschreiben und die Daten leichter auffindbar machen.
Identifizierung der Beziehungen zwischen logischen Tabellen¶
Verwenden Sie im Befehl CREATE SEMANTIC VIEW die RELATIONSHIPS-Klausel, um die Beziehungen zwischen den Tabellen in der Ansicht zu identifizieren. Für jede Beziehung geben Sie Folgendes an:
Einen optionalen Namen für die Beziehung.
Den Namen der logischen Tabelle, die den Fremdschlüssel enthält.
Die Spalten in dieser Tabelle, die den Fremdschlüssel definieren.
Den Namen der logischen Tabelle, die den Primärschlüssel oder Spalten mit eindeutigen Werten enthält.
Die Spalten in dieser Tabelle, die den Primärschlüssel definieren oder eindeutige Werte enthalten.
Wenn Sie in der Klausel TABLES bereits PRIMARY KEY für die logische Tabelle angegeben haben, müssen Sie die Primärschlüsselspalte in der Beziehung nicht angeben.
Wenn es in der Klausel TABLES ein einziges UNIQUE-Schlüsselwort für die logische Tabelle gibt, müssen Sie die entsprechenden Spalten in der Beziehung nicht angeben.
Sie können auch ein Datum, eine Uhrzeit, einen Zeitstempel oder eine numerische Spalte angeben, wenn Sie die Spalten eines Bereichs verknüpfen möchten.
In dem zuvor vorgestellten Beispiel gibt die Klausel RELATIONSHIPS zwei Beziehungen an:
Eine Beziehung zwischen den Tabellen
ordersundcustomers. In der Tabelleordersisto_custkeyder Fremdschlüssel, der sich auf den Primärschlüssel in der Tabellecustomers(c_custkey) bezieht.Eine Beziehung zwischen den Tabellen
line_itemsundorders. In der Tabelleline_itemsistl_orderkeyder Fremdschlüssel, der sich auf den Primärschlüssel in der Tabelleorders(o_orderkey) bezieht.
Verwenden eines Datums, einer Uhrzeit, eines Zeitstempels oder eines Zahlenbereichs zum Verknüpfen logischer Tabellen¶
Wenn Sie eine Beziehung zwischen zwei logischen Tabellen angeben, werden die Tabellen standardmäßig mit einer Gleichheitsbedingung verknüpft.
Wenn Sie zwei logische Tabellen über einen Datums-, Uhrzeit-, Zeitstempel- oder Zahlenbereich verknüpfen müssen (wobei die Werte in einer Spalte einer Tabelle im gleichen Bereich liegen müssen wie die Werte in einer Spalte einer anderen Tabelle), können Sie das ASOF-Schlüsselwort mit dem Spaltennamen in der REFERENCES-Klausel angeben:
Eine Abfrage der oben definierten semantischen Ansicht erzeugt einen ASOF JOIN, der den >= Vergleichsoperator in der MATCH_CONDITION-Klausel verwendet. Dadurch werden die beiden Tabellen so verknüpft, dass die Werte in col_table_1 größer als die Werte in col_table_2 oder gleich sind:
Bemerkung
In der MATCH_CONDITION-Klausel wird kein anderer Vergleichsoperator unterstützt.
Sie können das ASOF-Schlüsselwort für Spalten desselben Typs verwenden, den Sie auch für ASOF JOIN nutzen.
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.
Angenommen, Sie haben Tabellen mit Kunden-, Kundenadress- und Bestelldaten:
In diesem Beispiel hat die Tabelle customer_address hat die Spalte ca_start_date, die angibt, seit wann die Kundin oder der Kunde an der angegebenen Adresse ansässig ist. Die Tabelle orders hat die Spalte o_ord_date mit dem Datum der Bestellung.
Angenommen, Sie möchten Informationen zu Kundenaufträgen abfragen und die Postleitzahlen abrufen, die dem Standort der Kundin/des Kunden zum Zeitpunkt der Auftragsausführung entsprechen.
Sie können eine semantische Ansicht definieren, die eine ASOF-Verknüpfung zwischen den Spalten ca_start_date und o_ord_date angibt:
Angenommen, Sie führen eine Abfrage dieser semantischen Ansicht durch, um die Summe der Bestellbeträge pro Monat für jede Postleitzahl zu ermitteln:
Die Abfrage verwendet im Endeffekt einen ASOF JOIN zur Verknüpfung der Tabellen über die Datumsspalten, wobei das Bestelldatum nicht vor dem Startdatum der Adresse liegen darf:
Verknüpfen logischer Tabellen, die Wertebereiche enthalten¶
Sie können eine Bereichsverknüpfung verwenden, wenn Sie eine Tabelle mit einer anderen Tabelle verknüpfen möchten, die einen Bereich von möglichen Werten in der ersten Tabelle definiert. Angenommen, eine Tabelle repräsentiert die Kundenaufträge und enthält eine Spalte mit dem Zeitstempel, wann die Bestellung erteilt wurde. Angenommen, eine andere Tabelle repräsentiert die Geschäftsquartale und enthält die unterschiedlichen Zeitbereiche, die diese Quartale darstellen. Sie können eine semantische Ansicht erstellen, die die beiden Tabellen so verknüpft, dass die Zeile für einen Auftrag das Geschäftsquartal enthält, in dem der Auftrag erteilt wurde.
In der Tabelle, die die Bereiche enthält, muss jeder Bereich eindeutig sein. Es können sich keine zwei Bereiche überschneiden.
Wenn Sie in den Tabellendaten den niedrigstmöglichen Wert für den Bereich oder den höchstmöglichen Wert für den Bereich angeben möchten, verwenden Sie NULL.
Die folgende Tabelle definiert zum Beispiel eine Menge von Zeitbereichen, die sich nicht überschneiden:
Die erste Zeile deckt den Bereich ab, der alles bis (aber nicht einschließlich) zum 1. Januar 2024 umfasst.
Die letzte Zeile deckt den Bereich ab, der alles ab dem 20. März 2024 umfasst.
Bemerkung
In den Start- und Ende-Spalten darf jeweils höchstens eine Zeile den Wert NULL enthalten.
Für Fälle wie diese können Sie eine semantische Ansicht einrichten, die Bereichsverknüpfungsabfragen unterstützt. Wenn Sie die semantische Ansicht erstellen, müssen Sie Folgendes tun:
Definieren Sie für die logische Tabelle, die die Start- und Endzeiten eines Zeitraums enthält, eine Einschränkung, die angibt, dass sich keine zwei Bereiche überlappen können.
Geben Sie der TABLE-Klausel des Befehls CREATE SEMANTIC VIEW die CONSTRAINT-Klausel in der Definition der logischen Tabelle an. Die Syntax finden Sie in der Dokumentation für CONSTRAINT im Thema zu CREATE SEMANTIC VIEW.
Definieren Sie eine Beziehung zwischen der Spalte, die den Zeitstempel in einer Tabelle enthält, und den Spalten für Start- und Endzeit in der anderen Tabelle.
Verwenden Sie in der RELATIONSHIPS-Klausel des Befehls CREATE SEMANTIC VIEW die BETWEEN-Klausel, um die Spalten anzugeben, die die Start- und Endzeiten enthalten. Die Syntax finden Sie in der Dokumentation für RELATIONSHIP im Thema zu CREATE SEMANTIC VIEW.
Angenommen, die Tabelle my_time_periods definiert bestimmte Zeiträume:
Angenommen, die Tabelle my_events erfasst Ereignisse, die innerhalb dieser Zeiträume aufgetreten sind:
Sie können eine semantische Ansicht definieren, die die Tabellen verknüpft. Zeilen in my_events werden mit Zeilen in my_time_periods verknüpft, wobei der Wert in Spalte event_timestamp in``my_events`` innerhalb des durch die Spalten start_time und end_time in my_time_periods angegebene Bereichs liegt.
Die folgende Abfrage veranschaulicht, wie die Zeilen verknüpft werden:
Wie in den Beispielen gezeigt, ist die dim_time_period_name-Dimension für jede Zeile in den Ergebnissen der Name des Zeitraums, in den die dim_event_timestamp-Dimension fällt.
Definition von Fakten, Dimensionen und Metriken¶
Verwenden Sie im Befehl CREATE SEMANTIC VIEW die Klauseln FACTS, DIMENSIONS und METRICS, um die Fakten, Dimensionen und Metriken in der semantischen Ansicht zu definieren.
Sie müssen mindestens eine Dimension oder Metrik in der semantischen Ansicht definieren.
Für jeden Fakt, jede Dimension oder Metrik, geben Sie an:
Die logische Tabelle, zu der sie gehört.
Bemerkung
Wenn Sie eine abgeleitete Metrik definieren möchten (eine Metrik, die nicht für eine logische Tabelle spezifisch ist), müssen Sie den Namen der logischen Tabelle weglassen. Siehe Abgeleitete Metriken definieren.
Einen Namen für den Fakt, die Dimension oder die Metrik.
Den SQL-Ausdruck, um ihn zu berechnen.
Bemerkung
Für Dimensionen können Sie einen Cortex Search Service </user-guide/snowflake-cortex/cortex-search/cortex-search-overview>`angeben, der für die Dimension verwendet werden soll. Weitere Informationen dazu finden Sie unter :ref:`label-semantic_views_create_cortex_search_service_dimension.
Optionale Synonyme und Kommentare.
Bemerkung
Wenn eine Metrik nicht über bestimmte Dimensionen hinweg aggregiert werden soll, sollten Sie angeben, dass diese Dimensionen nicht additiv sein sollen.
Weitere Informationen dazu finden Sie unter Identifizieren der Dimensionen, die für eine Metrik nicht additiv sein sollen.
Das zuvor vorgestellte Beispiel definiert mehrere Fakten, Dimensionen und Metriken:
Bemerkung
Weitere Richtlinien zum Definieren von Metriken, die Fensterfunktionen verwenden, finden Sie unter Fensterfunktionsmetriken definieren und abfragen.
Definieren einer Dimension, die einen Cortex Search Service verwendet¶
Um eine Dimension zu definieren, die einen Cortex Search Service verwendet, legen Sie die WITH CORTEX SEARCH SERVICE-Klausel auf den Namen des Cortex Search Service fest. Wenn sich der Dienst in einer anderen Datenbank oder einem anderen Schema befindet, qualifizieren Sie den Namen des Dienstes. Beispiel:
Abgeleitete Metriken definieren¶
Wenn Sie eine Metrik definieren, geben Sie den Namen der logischen Tabelle an, zu der die Metrik gehört. Dies ist die logische Tabelle, in der die Metrik aggregiert wird.
Wenn Sie eine Metrik auf der Grundlage von Metriken aus verschiedenen logischen Tabellen definieren möchten, können Sie eine abgeleitete Metrik definieren. Eine abgeleitete Metrik ist eine Metrik, die auf die semantische Ansicht (und nicht auf eine bestimmte logische Tabelle) beschränkt ist. Eine abgeleitete Metrik kann Metriken aus mehrere logischen Tabellen kombinieren.
Lassen Sie bei der Definition einer abgeleiteten Metrik den Namen der logischen Tabelle weg.
Angenommen, Sie möchten die Metrik my_derived_metric_1 definieren, die die Summe der Metriken table_1.metric_1 und table_2.metric_2 ist. Wenn Sie my_derived_metric_1 definieren, qualifizieren Sie den Namen nicht mit einem logischen Tabellennamen:
Sie können andere abgeleitete Metriken in dem Ausdruck verwenden. Beispiel:
Beachten Sie die folgenden Einschränkungen, wenn Sie eine abgeleitete Metrik definieren:
Sie können für eine abgeleitete Metrik und eine reguläre Metrik nicht denselben Namen verwenden.
Der Ausdruck für eine abgeleitete Metrik kann Folgendes verwenden:
Aggregationen von Dimensionen und Fakten, die in einer beliebigen logischen Tabelle in der semantischen Ansicht definiert sind.
Skalare Ausdrücke von Metriken, die in einer beliebigen logischen Tabelle in der semantischen Ansicht definiert sind.
Andere abgeleitete Metriken.
Im folgenden Beispiel:
Verwendet
derived_metric_1einen skalaren Ausdruck mit zwei Metriken.Verwendet
derived_metric_2eine Aggregation einer Dimension.Fügt
derived_metric_3eine Aggregation einer Dimension zu einer anderen abgeleiteten Metrik hinzu.
Sie müssen den Namen einer Metrik, Dimension oder eines Fakts im Ausdruck nicht qualifizieren, wenn der Name eindeutig ist. Beispiel:
Beachten Sie, dass
metric_1durchtable_1qualifiziert werden muss, da es zwei Metriken mit dem Namenmetric_1gibt. Allerdings mussmy_unique_metric_namenicht qualifiziert werden, da der Name eindeutig ist.Im Ausdruck für eine abgeleitete Metrik können Sie Folgendes nicht verwenden:
Aggregationen von Metriken.
Fensterfunktionen
Verweise auf physische Spalten.
Verweise auf Fakten oder Dimensionen, die nicht aggregiert sind.
Sie können eine abgeleitete Metrik im Ausdruck nicht für eine reguläre Metrik, reguläre Dimension oder regulären Fakt verwenden. Nur eine andere abgeleitete Metrik kann eine abgeleitete Metrik in ihrem Ausdruck verwenden.
Angeben der Beziehung für eine Metrik, wenn mehrere Beziehungspfade existieren¶
In einigen Fällen können zwischen zwei bestimmten logischen Tabellen in einer semantischen Ansicht mehrere Beziehungspfade existieren. In diesen Fällen müssen Sie bei der Definition einer Metrik den zu verwendenden Beziehungspfad angeben.
Das Problem mit mehreren Beziehungspfaden¶
Angenommen, Sie haben zwei Tabellen, die Informationen zu Flügen und Flughäfen enthalten:
Angenommen, Sie definieren eine semantische Ansicht, die Informationen über die Gesamtzahl der Flüge bereitstellt, die von einer bestimmten Stadt abfliegen und dort ankommen:
Die semantische Ansicht gibt zwei verschiedene Beziehungen zwischen der Tabelle flights und der Tabelle airports (flight_departure_airport und``flight_arrival_airport``) an. Da es mehrere Beziehungspfade zwischen den Tabellen gibt, schlägt das Abfragen der m_flight_count-Metrik und das Auswählen der airports.city_name-Dimension (oder einer beliebige Dimension in der Tabelle airports) fehl:
Weil es mehrere Pfade zwischen den Tabellen flights und airports``gibt, schlägt die Abfrage fehl. Wenn die Abfrage keine Dimension aus der Tabelle ``airports ausgewählt hat, wäre die Abfrage erfolgreich.
Angeben der zu verwendenden Beziehung¶
In der Metrikdefinition im Befehl CREATE SEMANTIC VIEW können Sie angeben, welche Beziehung in der USING-Klausel verwendet werden soll:
Bemerkung
Jede Beziehung, die Sie angeben, muss mit der logischen Tabelle beginnen, die die Metrik enthält. Angenommen, Sie möchten Folgendes angeben:
Die Beziehung
table_a_to_table_bmuss vontable_aaus beginnen:Sie können keine Sequenz von Beziehungen (z. B.``table_a_to_table_b`` und
table_b_to_table_c) angeben. Jede Beziehung muss mit der logischen Tabelle beginnen, die die Metrik enthält.Wenn Sie die Beziehungen zwischen der logischen Tabelle, die die Metrik enthält, zu verschiedenen Tabellen identifizieren müssen, können Sie die Beziehungen in der USING-Klausel angeben. Angenommen, Sie möchten, dass die Metriken anhand bestimmter Beziehungen von
table_azutable_bund vontable_azutable_cberechnet wird. In diesem Fall geben Sie beide Beziehungen in der USING-Klausel an:Sie können die USING-Klausel nicht in einer abgeleiteten Metrik angeben.
Die folgende Anweisung definiert zum Beispiel zwei zusätzliche Metriken, die bestimmte Beziehungen verwenden:
m_flight_departure_count, die dieflight_departure_airport-Beziehung verwendet.m_flight_arrival_count, die dieflight_arrival_airport-Beziehung verwendet.
Wenn Sie diese Ansicht abfragen, können Sie die beiden neuen Metriken angeben, die bestimmte Beziehungen verwenden:
Hinzufügen von Dimensionen, die auf denselben Beziehungen beruhen¶
Die Abfrage im vorherigen Beispiel hat die airports.city_name-Dimension verwendet, die sich in der logischen Tabelle airports befindet, auf der die Beziehungen basieren.
Wenn Sie der Ansicht eine Dimension für eine andere logische Tabelle hinzufügen, profitieren Abfragen dieser Dimension von den zuvor angegebenen Beziehungen.
Angenommen, Sie erstellen eine Tabelle mit dem Namen regions mit zusätzlichen Informationen zu den Flughafenregionen, die in der Spalte airport_region_code der airports Tabelle angegeben sind:
Sie können die zuvor definierte semantische Ansicht erweitern, um den Namen der Region zurückzugeben:
Fügen Sie eine neue logische Tabelle für die Tabelle
regionshinzu.Fügen Sie eine Beziehung zwischen den Tabellen
regionsundairportshinzu.Fügen Sie eine Dimension für den Namen der Region hinzu.
Sie müssen keine weiteren Änderungen an der USING-Klausel für die Metriken vornehmen, da es nur eine einzige Beziehung zwischen den Tabellen regions und airports gibt.
Wenn Sie die Ansicht unter Verwendung der region_name-Dimension abfragen und eine Mehrdeutigkeit darüber besteht, welche Beziehung verwendet werden soll, bestimmt die USING-Klausel die zu verwendenden Beziehungen:
Angeben von Beziehungen zu verschiedenen Tabellen¶
Wenn die semantische Ansicht Dimensionen aus mehreren Tabellen verwendet und Sie die Beziehungen angeben müssen, die für diese Dimensionen verwendet werden sollen, können Sie in der USING-Klausel mehrere Beziehungen angeben.
Angenommen, Sie erstellen eine Tabelle mit dem Namen weather mit Wetterinformationen zu den Flughäfen in der Tabelle airports:
Sie können die zuvor definierte semantische Ansicht erweitern, um die Wetterbedingung zurückzugeben:
Fügen Sie eine neue logische Tabelle für die Tabelle
weatherhinzu.Fügen Sie zwei Beziehungen zwischen den Tabellen
weatherund``flights`` hinzu (eine für abfliegende und eine für ankommende Flüge).Fügen Sie eine Dimension für die Wetterinformationen hinzu.
Geben Sie an, dass die Metriken auch die beiden neuen Beziehungen zwischen den Tabellen
weatherundflightsverwenden sollen.
Wenn Sie die Ansicht abfragen und die weather_condition-Dimension angeben, bestimmt die USING-Klausel die verwendeten Beziehungen:
Definieren von abgeleiteten Metriken basierend auf Metriken, die bestimmte Beziehungen verwenden¶
Obwohl Sie die USING-Klausel nicht in einer abgeleiteten Metrik angeben können, können Sie eine abgeleitete Metrik definieren, die Metriken verwendet, die die USING-Klausel angeben.
Die folgende semantische Ansicht definiert zum Beispiel zwei abgeleitete Metriken:
global_m_departure_arrival_ratioglobal_m_departure_arrival_sum
Die Definitionen dieser abgeleiteten Metriken verwenden die Metriken flights.m_flight_departure_count und flights.m_flight_arrival_count, die beide die USING-Klausel angeben:
Identifizieren der Dimensionen, die für eine Metrik nicht additiv sein sollen¶
In manchen Fällen sollte eine Metrik nicht über bestimmte Dimensionen hinweg aggregiert werden. In diesen Fällen können Sie die Dimensionen als nicht additiv markieren.
Erläuterungen zum Problem der Aggregation von Metriken über bestimmte Dimensionen hinweg¶
Angenommen, Sie haben eine Tabelle, die die Kontosalden der Giro- und Sparkonten der einzelnen Kunden für einen bestimmten Tag enthält.
Angenommen, Sie möchten eine semantische Ansicht definieren, die Folgendes enthält:
Die folgenden Dimensionen:
Customer ID
Account type
Year
Month
Day
Eine Metrik für den Gesamtsaldo.
Die folgende Anweisung erstellt eine semantische Ansicht, die die oben aufgeführten Dimensionen und Metriken enthält:
Wenn Sie den Gesamtsaldo der Giro- und Sparkonten für jeden Kunden zum Jahresende abrufen möchten, können Sie die semantische Ansicht für die m_account_balance-Metrik abfragen und die customer_id_dim- und year_dim-Dimensionen angeben.
Die m_account_balance-Metrik ist jedoch der tägliche Gesamtsaldo für jeden Kunden, da die Metrik nach den Datumsdimensionen aggregiert wird.
Im obigen Beispiel ist für cust-001 im Jahr 2024 910 der Gesamtsaldo für jeden Tag (100 + 110 + 140 + 150 + 200 + 210).
Verhindern, dass eine Metrik über bestimmte Dimensionen aggregiert wird¶
Um zu verhindern, dass die Metrik durch die Datumsdimensionen aggregiert wird, geben Sie die Datumsdimensionen in derNON ADDITIVE BY-Klausel beim Erstellen der semantischen Ansicht an:
Bemerkung
Wenn Sie die NON ADDITIVE BY-Klausel in einer Metrik angeben, können Sie sich in den Definitionen von Metriken, die nicht abgeleitet sind, nicht auf diese Metrik beziehen. Nur abgeleitete Metriken können sich auf Metriken beziehen, die nicht additive Dimensionen angeben.
Durch Angeben der NON ADDITIVE BY-Klausel wird die Kennzahl zu einer semi-additiven Kennzahl.
Wenn Sie diese semantische Ansicht abfragen, wird die m_account_balance-Metrik nicht mehr nach den Datumsdimensionen aggregiert. Die Abfrage aggregiert die Kontensalden am Ende des Zeitraums in jeder Gruppe von abgefragten Dimensionen.
Im obigen Beispiel ist für cust-001 im Jahr 2024 210 der Gesamtsaldo von Giro- und Sparkonten für den letzten Tag des Jahres, das Daten enthält:
Der letzte Tag im Jahr 2024, der Daten enthält, ist der
2024-03-30.Es gibt keine Zeile mit diesem Datum für das Giro-Konto, sodass die resultierende Metrik der Saldo des Sparkontos ist (
210).
Wenn Sie als weiteres Beispiel nur den Gesamtsaldo des Kontos für alle Kunden am Ende des Jahres wünschen, können Sie die year_dim-Dimension angeben.
Da die Datumsdimensionen als nicht additiv markiert sind, summiert die Abfrage die Werte am Ende des Zeitraums (nach Datum) für die Salden der Giro- und Sparkonten jedes Kunden.
Während der Abfrageverarbeitung werden die Zeilen nach den nicht additiven Dimensionen sortiert, und die Werte aus den letzten Zeilen (die neuesten Snapshots der Werte) werden aggregiert, um die Metrik zu berechnen.
Bemerkung
Da die Zeilen nach den nicht additiven Dimensionen sortiert sind, ist die Reihenfolge, in der Sie die Dimensionen angeben, wichtig. Dies ist vergleichbar mit der Reihenfolge, in der Sie die Spalten in der ORDER BY-Klausel angeben.
Festlegen der Sortierreihenfolge von nicht additiven Dimensionen¶
Wie im Beispiel gezeigt, aggregiert die Metrik die Werte der Salden der Giro- und Sparkonten für jeden Kunden am Ende eines Zeitraums. Wenn Sie die Sortierreihenfolge ändern möchten, können Sie das Schlüsselwort ASC oder DESC neben dem Dimensionsnamen angeben. Beispiel:
In diesem Beispiel ergibt die Metrik den frühesten Zeitpunkt, der durch year_dim, month_dim und day_dim angegeben wurde.
Wenn die Dimension NULL-Werte enthält, können Sie die Schlüsselwerte NULLS FIRST oder NULLS LAST verwenden, um anzugeben, obNULL-Werte in den Ergebnissen zuerst oder zuletzt sortiert werden :
Tatsache oder Metrik als privat markieren¶
Wenn Sie einen Fakt oder eine Kennzahl nur zur Verwendung in Berechnungen in der semantischen Ansicht definieren und nicht möchten, dass der Fakt oder die Kennzahl in einer Abfrage zurückgegeben werden, können Sie das Schlüsselwort PRIVATE angeben, um die Tatsache oder Kennzahl als privat zu markieren. Beispiel:
Bemerkung
Sie können eine Dimension nicht als privat markieren. Dimensionen sind immer öffentlich.
Wenn Sie eine semantische Ansicht abfragen, die private Fakten oder Metriken enthält, können Sie in den folgenden Klauseln keine privaten Fakten oder Metriken angeben:
Die SELECT-Liste
FACTS in der SEMANTIC_VIEW-Klausel
METRICS in der SEMANTIC_VIEW-Klausel
METRICS
WHERE in der SELECT-Anweisung oder SEMANTIC_VIEW-Klausel
Einige Befehle und Funktionen beinhalten private Fakten und Kennzahlen:
Private Fakten und Kennzahlen werden nicht in der Ausgabe des DESCRIBE SEMANTIC VIEW-Befehls angezeigt. Die Zeilen für private Fakten und Metriken zeigen
PRIVATEin deraccess_modifier-Spalte.Private Fakten und Metriken werden im Rückgabewert eines GET_DDL-Funktionsaufrufs aufgeführt, wie unter Abrufen der SQL-Anweisung für eine semantische Ansicht erwähnt.
Einige Befehle und Funktionen enthalten private Fakten und Metriken nur unter bestimmten Bedingungen:
Private Fakten und Metriken sind unter INFORMATION_SCHEMA SEMANTIC_FACTS und SEMANTIC_METRICS-Ansichten aufgeführt. Dies gilt nur, wenn Sie eine Rolle verwenden, die die Berechtigung gewährt hat fürREFERENCES oder OWNERSHIP. Diese muss für die semantische Ansicht gelten.
Andernfalls werden in diesen Ansichten nur die öffentlichen Fakten und Metriken aufgelistet.
Andere Befehle und Funktionen enthalten keine privaten Fakten und Metriken:
Private Fakten werden nicht in der Ausgabe des Befehls SHOW SEMANTIC FACTS angezeigt.
Private Metriken werden nicht in der Ausgabe des Befehls SHOW SEMANTIC METRICS angezeigt.
Bereitstellung kundenspezifischer Anweisungen für Cortex Analyst¶
In einer semantischen Ansicht können Sie Anweisungen für Cortex Analyst angeben, die Folgendes erklären:
SQL-Anweisung generieren
Fragen klassifizieren und zusätzliche Informationen einfordern
Um diese benutzerdefinierten Anweisungen bereitzustellen, verwenden Sie die folgenden Klauseln:
Für eine Anleitung zum Generieren der SQL-Anweisung verwenden Sie die AI_SQL_GENERATION-Klausel im Befehl CREATE SEMANTIC VIEW.
Um zum Beispiel Cortex Analyst anzuweisen, die SQL-Anweisung zu generieren, sodass alle numerischen Spalten auf zwei Dezimalstellen gerundet werden, geben Sie Folgendes an:
Für eine Anleitung zum Klassifizieren von Fragen verwenden Sie die AI_QUESTION_CATEGORIZATION-Klausel.
Um zum Beispiel Cortex Analyst anzuweisen, Fragen zu Benutzern abzulehnen, geben Sie Folgendes an:
Sie können auch Anweisungen geben, nach weiteren Details zu fragen, wenn die Frage nicht klar ist. Beispiel:
Semantischen Ansicht aus einer YAML-Spezifikation erstellen¶
Um eine semantischen Ansicht anhand einer YAML-Spezifikation zu erstellen, können Sie die gespeicherte Prozedur SYSTEM$CREATE_SEMANTIC_VIEW_FROM_YAML aufrufen.
Übergeben Sie zuerst TRUE als drittes Argument, um zu verifizieren, ob Sie die semantische Ansicht aus derYAML-Spezifikation erstellen können.
Das folgende Beispiel bestätigt, dass Sie eine bestimmte Spezifikation eines semantischen Modells in YAML verwenden können, um eine semantische Ansicht namens tpch_analysis in der Datenbank my_db und im Schema my_schema zu erstellen:
Wenn die Spezifikation gültig ist, gibt die gespeicherte Prozedur die folgende Meldung zurück:
Wenn die YAML-Syntax ungültig ist, löst die gespeicherte Prozedur eine Ausnahme aus. Wenn zum Beispiel ein Doppelpunkt fehlt:
Die gespeicherte Prozedur löst eine Ausnahme aus, die anzeigt, dass die YAML-Syntax ungültig ist:
Wenn sich die Spezifikation auf eine physische Tabelle bezieht, die nicht existiert, löst die gespeicherte Prozedur eine Ausnahme aus:
In ähnlicher Weise löst der gespeicherte Prozess eine Ausnahme aus, wenn sich die Spezifikation auf eine Primärschlüsselspalte bezieht, die nicht existiert:
Sie können dann den gespeicherten Prozess aufrufen, ohne das dritte Argument zu übergeben, um die semantische Ansicht zu erstellen.
Im folgenden Beispiel wird eine semantische Ansicht namens tpch_analysis in der Datenbank my_db und im Schema my_schema erstellt:
Kommentar für eine bestehende semantische Ansicht ändern¶
Um den Kommentar für eine bestehende semantische Ansicht zu ändern, führen Sie den Befehl ALTER SEMANTIC VIEW aus. Beispiel:
Bemerkung
Sie können den Befehl ALTER SEMANTIC VIEW verwenden, um andere Eigenschaften als den Kommentar zu ändern. Um andere Eigenschaften der semantischen Ansicht zu ändern, ersetzen Sie die semantische Ansicht. Siehe Ersetzen einer bestehenden semantischen Ansicht.
Sie können auch den Befehl COMMENT verwenden, um einen Kommentar für eine semantische Ansicht festzulegen:
Ersetzen einer bestehenden semantischen Ansicht¶
Um eine bestehende semantische Ansicht zu ersetzen (z. B. um die Definition der Ansicht zu ändern), geben Sie OR REPLACE an, wenn Sie CREATE SEMANTIC VIEW ausführen. Wenn Sie die Berechtigungen für die bestehende semantische Ansicht beibehalten wollen, geben Sie COPY GRANTS an. Beispiel:
Auflistung semantischer Ansichten¶
Um semantische Ansichten im aktuellen Schema oder in einem bestimmten Schema aufzulisten, führen Sie den Befehl SHOW SEMANTIC VIEWS aus. Beispiel:
Die Ausgabe des Befehls SHOW OBJECTS enthält semantische Ansichten. In der Spalte kind wird der Objekttyp als VIEW aufgeführt. Beispiel:
Sie können auch die Ansichten für semantische Ansichten in den Schemas ACCOUNT_USAGE und INFORMATION_SCHEMA abfragen.
Dimensionen, Fakten und Metriken auflisten¶
Um die Dimensionen, Fakten und Metriken aufzulisten, die in einer Ansicht, einem Schema, einer Datenbank oder einem Konto verfügbar sind, können Sie die folgenden Befehle ausführen:
Standardmäßig listen die Befehle die Dimensionen, Fakten und Metriken auf, die in semantischen Ansichten verfügbar sind, die im aktuellen Schema definiert sind:
Die folgenden Beispiele zeigen, wie Sie die Dimensionen, Fakten und Metriken für semantische Ansichten mit unterschiedlichen Geltungsbereichen auflisten:
Auflisten der Dimensionen, Fakten und Metriken in semantischen Ansichten der aktuellen Datenbank:
Auflisten der Dimensionen, Fakten und Metriken in semantischen Ansichten in einem bestimmten Schema oder einer bestimmten Datenbank:
Auflisten der Dimensionen, Fakten und Metriken in semantischen Ansichten im Konto:
Auflisten der Dimensionen, Fakten und Metriken in einer bestimmten semantischen Ansicht:
Wenn Sie eine semantische Ansicht abfragen, können Sie den Befehl SHOW SEMANTIC DIMENSIONS FOR METRIC verwenden, um zu bestimmen, welche Dimensionen Sie bei Angabe einer bestimmten Kennzahl zurückgeben können. Weitere Details dazu finden Sie unter Auswahl der Dimensionen, die Sie für eine bestimmte Metrik zurückgeben können.
Wenn Sie den Befehl SHOW COLUMNS für eine semantische Ansicht ausführen, enthält die Ausgabe die Dimensionen, Fakten und Metriken der semantischen Ansicht. Die Spalte kind zeigt an, ob die Zeile eine Dimension, ein Fakt oder eine Metrik darstellt.
Beispiel:
Details zu einer semantischen Ansicht anzeigen¶
Um die Details einer semantischen Ansicht anzuzeigen, führen Sie den Befehl DESCRIBE SEMANTIC VIEW aus. Beispiel:
Abrufen der SQL-Anweisung für eine semantische Ansicht¶
Sie können die Funktion GET_DDL aufrufen, um die DDL-Anweisung abzurufen, mit der eine semantische Ansicht erstellt wurde.
Bemerkung
Um diese Funktion für eine semantische Ansicht aufzurufen, müssen Sie eine Rolle verwenden, der die folgenden Berechtigungen gewährt wurden: REFERENCES oder OWNERSHIP. Dies muss in der semantischen Ansicht erfolgen.
Wenn Sie GET_DDL aufrufen, geben Sie 'SEMANTIC_VIEW' als Objekttyp an. Beispiel:
Der Rückgabewert enthält private Fakten und Metriken (Fakten und Metriken, die mit dem Schlüsselwort PRIVATE markiert sind).
YAML-Spezifikation für eine semantische Ansicht abrufen¶
Um die YAML-Spezifikation für eine semantische Ansicht zu erhalten, rufen Sie die Funktion SYSTEM$READ_YAML_FROM_SEMANTIC_VIEW auf.
Das folgende Beispiel gibt die YAML-Spezifikation für die semantische Ansicht namens``tpch_analysis`` in der Datenbank my_db und im Schema my_schema zurück:
Exportieren einer semantischen Ansicht in eine Datei der Tableau-Datenquelle (TDS)¶
Um eine semantische Ansicht in eine Datei der Tableau-Datenquelle (TDS) zu exportieren, rufen Sie die SYSTEM$EXPORT_TDS_FROM_SEMANTIC_VIEW-Funktion auf.
Das folgende Beispiel gibt den Inhalt der TDS-Datei für die semantische Ansicht my_sv_for_export zurück:
Kopieren Sie das XML in eine .tds-Datei, und öffnen Sie die Datei in Tableau Desktop.
Tableau Desktop zeigt für jede logische Tabelle in der Ordnerliste auf der linken Seite einen Ordner an. Die Namen der Ordner verwenden Leerzeichen anstelle von Unterstrichen, und jedes Wort beginnt mit einem Großbuchstaben. Beispiel: Der Name des Ordners für die logische Tabelle date_dim ist Date Dim.
Jeder Ordner enthält Tableau-Dimensionen und -Kennzahlen, die den Dimensionen, Fakten und Metriken in der semantischen Ansicht entsprechen.
In den nächsten Abschnitten finden Sie weitere Details und die Beschränkungen für den Konvertierungsprozess:
Über die Konvertierung¶
Die Funktion konvertiert Dimensionen, Fakten und Metriken in der semantischen Ansicht in die folgenden Äquivalenten in der Tableau-TDS-Datei.
Element in der semantischen Ansicht |
Tableau-Äquivalent (Dimension oder Kennzahl) |
Wie die Daten aggregiert werden |
|---|---|---|
Dimension |
|
|
Numerischer Fakt |
Maßnahme |
SUM |
Nicht-numerischer Fakt |
Dimension |
|
Numerische Metrik |
Maßnahme |
In der TDS-Datei wird anstelle der Metrik ein berechnetes Feld verwendet. Das berechnete Feld übergibt den Wert der Metrik an die AGG-Funktion von Snowflake. |
Nicht-numerische Metrik |
Dimension |
|
Numerische abgeleitete Metrik |
Maßnahme |
In der TDS-Datei wird anstelle der Metrik ein berechnetes Feld verwendet. Das berechnete Feld übergibt den Wert der Metrik an die AGG-Funktion von Snowflake. |
Nicht-numerische abgeleitete Metrik |
Dimension |
|
Die folgenden Snowflake-Datentypen werden den entsprechenden Tableau-TDS-Datentypen zugeordnet:
Snowflake-Datentyp |
Äquivalenter Tableau-Datentyp |
|---|---|
NUMBER/FIXED (wenn die Skalierung größer als 0 ist) |
real |
NUMBER/FIXED (wenn die Skalierung 0 oder null ist) |
Ganzzahl |
FLOAT oder DECFLOAT |
real |
STRING oder BINARY |
string |
BOOLEAN |
boolean |
TIME |
time |
DATE |
date |
DATETIME oder TIMESTAMP |
datetime |
GEOGRAPHY |
spatial |
Semistrukturiert (VARIANT, OBJECT, ARRAY), strukturiert (ARRAY, OBJECT, MAP), unstrukturiert (FILE), GEOMETRY, UUID, VECTOR |
string |
Die TDS-Datei weist die folgenden Funktionen, die für die Verbindung zu Snowflake angepasst sind:
Name der Anpassung |
Wert |
Auswirkung der Anpassung |
|---|---|---|
|
|
Verhindert, dass Tableau tatsächlich eine Abfrage wie |
|
|
Verhindert, dass Tableau eine Anweisung „vorbereitet“ (sie an Snowflake sendet, um sie ohne Ausführung zu parsen), um Datentypen zu ermitteln. |
|
|
Verhindert, dass Tableau eine |
|
|
Erzwingt, dass Tableau die ODBC-Standardfunktion |
|
|
Verhindert, dass Tableau bei der Suche nach dem Datenbanknamen Unterstriche mit Escapezeichen maskiert. |
Beschränkungen bei der Verwendung einer semantischen Ansicht in Tableau Desktop¶
Die folgenden Beschränkungen gelten für semantische Ansichten in Tableau Desktop:
Sie können keinen Extrakt aus einer semantischen Ansicht erstellen.
Wenn Sie Ihre Verbindung von Live in Extract ändern, schlägt Tableau Desktop mit dem folgenden Fehler fehl:
Sie können das Feld Measure Values nicht in einer semantischen Ansicht verwenden.
Wenn Sie das Feld Measure Values in einer semantischen Ansicht auswählen, meldet Tableau Desktop den folgenden Fehler:
Sie können das Feld Count nicht in einer semantischen Ansicht auswählen.
Wenn Sie SemanticViewName(Count) auswählen, meldet Tableau Desktop den folgenden Fehler:
Tableau Desktop kann die Anzahl der Zeilen in der semantischen Ansicht nicht zurückgeben, da die Anzahl der Zeilen abhängig von den in der Abfrage angegebenen Dimensionen, Fakten und Metriken variieren kann.
Sie können einen Kennzahl selbst nicht ziehen.
Wenn Sie einen Kennzahl ziehen, meldet Tableau Desktop den folgenden Fehler:
Sie können eine nicht-numerische Metrik nicht direkt verwenden.
SYSTEM$EXPORT_TDS_FROM_SEMANTIC_VIEW konvertiert nicht-numerische Metriken in Dimensionen in Tableau. Wenn Sie versuchen, eine dieser Dimensionen zu verwenden, meldet Tableau Desktop den folgenden Fehler:
Um dies zu umgehen, konvertieren Sie die Dimension in einen Kennzahl:
Klicken Sie mit der rechten Maustaste auf die Dimension, und wählen Sie Convert to Measure aus.
Dies konvertiert die Dimension unter Verwendung der Standardaggregation Count (Distinct) in eine Kennzahl.
Um eine andere Aggregation zu verwenden, klicken Sie mit der rechten Maustaste auf die konvertierten Kennzahl, wählen Sie Default Properties`|ra|:extui:`Aggregations und dann die Aggregation aus, die Sie verwenden möchten.
Semantische Ansicht umbenennen¶
Um eine semantische Ansicht umzubenennen, führen Sie ALTER SEMANTIC VIEW … RENAME TO … aus. Beispiel:
Entfernen einer semantischen Ansicht¶
Um eine semantische Ansicht zu entfernen, führen Sie den Befehl DROP SEMANTIC VIEW aus. Beispiel:
Erteilung von Berechtigungen für semantische Ansichten¶
Berechtigungen für semantische Ansichten listet die Berechtigungen auf, die Sie für eine semantische Ansicht gewähren können.
Die folgenden Berechtigungen für eine semantische Ansicht sind erforderlich, um mit der Ansicht zu arbeiten:
Jede Berechtigung (z. B. MONITOR, REFERENCES oder SELECT) für eine Ansicht muss den Befehl DESCRIBE SEMANTIC VIEW in der Ansicht ausführen.
Für eine Ansicht sind alle Berechtigungen erforderlich, um diese Ansicht in der Ausgabe des Befehls SHOW SEMANTIC VIEWS anzuzeigen.
SELECT ist erforderlich, um die semantische Ansicht abzufragen.
Bemerkung
Um eine semantische Ansicht abzufragen, benötigen Sie die SELECT-Berechtigung für die in der semantischen Ansicht verwendeten Tabellen nicht. Sie benötigen die SELECT-Berechtigung nur für die semantische Ansicht selbst.
Dieses Verhalten ist konsistent mit den Berechtigungen, die zum Abfragen von Standardansichten erforderlich sind.
Um eine semantische Ansicht zu verwenden, die Sie nicht in Cortex Analyst besitzen, müssen Sie eine Rolle verwenden, die über die Berechtigungen REFERENCES und SELECT für diese Ansicht verfügt.
Um die Berechtigungen REFERENCES und SELECT für eine semantische Ansicht zu erteilen, verwenden Sie den Befehl GRANT <Berechtigungen> … TO ROLE. Um z. B. die Berechtigungen REFERENCES und SELECT für die semantische Ansicht namens my_semantic_view der Rolle my_analyst_role zuzuweisen, können Sie die folgende Anweisung ausführen:
Wenn Sie ein Schema haben, das semantische Ansichten enthält, die Sie mit Cortex Analyst-Benutzern gemeinsam nutzen möchten, können Sie zukünftige Berechtigungen verwenden, um die Berechtigungen für jede semantische Ansicht zu gewähren, die Sie in diesem Schema erstellen. Beispiel: