Semantische Ansichten abfragen¶
Um eine semantische Ansicht abzufragen, können Sie eine Standard-SELECT-Anweisung verwenden. Innerhalb dieser Anweisung können Sie einen der folgenden Ansätze verwenden:
Geben Sie die SEMANTIC_VIEW-Klausel in der FROM-Klausel an. Beispiel:
Weitere Informationen dazu finden Sie unter Festlegen der SEMANTIC_VIEW-Klausel in der FROM-Klausel.
Geben Sie den Namen der semantischen Ansicht in der FROM-Klausel an. Beispiel:
Weitere Informationen dazu finden Sie unter Angabe des Namens der semantischen Ansicht in der FROM-Klausel.
Erforderliche Berechtigungen für die Abfrage einer semantischen Ansicht¶
Wenn Sie eine Rolle verwenden, die nicht Eigentümer der semantischen Ansicht ist, müssen Sie über die Berechtigung SELECT für diese semantische Ansicht verfügen, um diese 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.
Informationen über die Erteilung von Berechtigungen für semantische Ansichten finden Sie unter Erteilung von Berechtigungen für semantische Ansichten.
Festlegen der SEMANTIC_VIEW-Klausel in der FROM-Klausel¶
Um eine semantische Ansicht abzufragen, können Sie die SEMANTIC_VIEW-Klausel in der FROM-Klausel angeben.
Im folgenden Beispiel werden die Dimension``customer_market_segment`` und die Metrik order_average_value von der semantischen Ansicht``tpch_analysis`` ausgewählt, die Sie zuvor definiert haben:
Beachten Sie, dass Sie einen Alias für eine Dimension oder Metrik definieren können, indem Sie den Alias nach dem Namen der Dimension oder Metrik angeben. Sie können auch das optionale Schlüsselwort AS vor dem Alias angeben. Im folgenden Beispiel wird dieselbe Abfrage ausgeführt, es werden jedoch die Aliasse segment und average für die Dimension und Metrik verwendet, die in den Ergebnissen zurückgegeben werden.
Im folgenden Beispiel wählen die Dimension customer_name``und der Fakt``c_customer_order_count aus der semantischen Ansicht tpch_analysis aus:
Richtlinien für die Angabe der SEMANTIC_VIEW-Klausel¶
Bei Angabe der SEMANTIC_VIEW-Klausel befolgen Sie folgende Richtlinien:
Sie müssen in der SEMANTIC_VIEW-Klausel mindestens eine der folgenden Klauseln angeben:
METRICS
DIMENSIONS
FACTS
Sie können nicht alle diese Klauseln aus der SEMANTIC_VIEW-Klausel weglassen.
Wenn Sie eine Kombination dieser Klauseln angeben, ist Folgendes zu beachten:
Sie können FACTS und METRICS nicht in der gleichenSEMANTIC_VIEW-Klausel angeben.
Sie können jedoch sowohl FACTS als auchDIMENSIONS in einer Abfrage angeben. Sie sollten dies nur tun, wenn die Dimensionen die Fakten eindeutig bestimmen können.
Die Abfrage gruppiert die Ergebnisse nach Dimensionen: Wenn die Fakten nicht von den Dimensionen abhängen, können die Ergebnisse nicht-deterministisch sein.
Wenn Sie FACTS und DIMENSIONS angeben, müssen alle in der Abfrage verwendeten Fakten und Dimensionen (einschließlich diejenigen, die in der WHERE-Klausel angegeben sind), in der gleichen logischen Tabelle definiert sein.
Wenn Sie eine Dimension und eine Metrik angeben, muss die logische Tabelle für die Dimension mit der logischen Tabelle für die Metrik in Beziehung gesetzt werden.
Außerdem muss die logische Tabelle für die Dimension eine gleiche oder geringere Granularität aufweisen als die logische Tabelle für die Metrik.
Um festzustellen, welche Dimensionen diese Kriterien erfüllen, können Sie den SHOW SEMANTIC DIMENSIONS FOR METRIC-Befehl ausführen.
Weitere Details dazu finden Sie unter Auswahl der Dimensionen, die Sie für eine bestimmte Metrik zurückgeben können.
In der DIMENSIONS-Klausel können Sie einen Ausdruck angeben, der sich auf einen Fakt bezieht. Ähnlich verhält es sich mit der FACTS-Klausel, in der Sie einen Ausdruck angeben können, der sich auf eine Dimension bezieht. Beispiel:
Einer der Hauptunterschiede zwischen der Verwendung von DIMENSIONS und FACTS besteht darin, dass die Abfrage die Ergebnisse nach den Dimensionen und Ausdrücken gruppiert, die in derDIMENSIONS-Klausel angegeben sind.
In der METRICS-Klausel können Sie einen Ausdruck angeben, der Folgendes enthält:
Einen skalaren Ausdruck, der sich auf Metriken bezieht.
Eine Aggregation von Dimensionen oder Fakten.
Geben Sie die METRICS-, DIMENSIONS- und FACTS-Klauseln in der Reihenfolge an, in der sie in den Ergebnissen erscheinen sollen.
Wenn Sie möchten, dass die Abmessungen zuerst in den Ergebnissen erscheinen, geben Sie DIMENSIONS vor METRICS an. Andernfalls geben Sie zuerst METRICS an.
Nehmen wir zum Beispiel an, dass Sie zuerst die METRICS-Klausel angeben:
In der Ausgabe ist die erste Spalte die metrische Spalte (
customer_order_count) und die zweite Spalte ist die Dimensionsspalte (customer_name):Wenn Sie stattdessen zuerst die DIMENSIONS-Klausel angeben:
In der Ausgabe ist die erste Spalte die Dimensionsspalte (
customer_name) und die zweite Spalte ist die metrische Spalte (customer_order_count):Sie können die durch eine SEMANTIC_VIEW-Klausel definierte Beziehung in anderen SQL-Konstrukten verwenden, einschließlich JOIN, PIVOT, UNPIVOT, GROUP BY und allgemeinen Tabellenausdrücken (CTEs).
Die Spaltenüberschriften der Ausgabe verwenden die unqualifizierten Namen der Metriken und Dimensionen.
Wenn Sie mehrere Metriken und Dimensionen mit denselben Namen haben, verwenden Sie einen Tabellenalias, um den Spaltenüberschriften unterschiedliche Namen zuzuweisen. Siehe Behandlung doppelter Spaltennamen in der Ausgabe.
Um alle Metriken oder Dimensionen in einer gegebenen logischen Tabelle zurückzugeben, verwenden Sie ein Sternchen als Platzhalter, qualifiziert durch den Namen der logischen Tabelle. Beispielsweise, um alle in der logischen Tabelle``customer`` definierten Metriken und Dimensionen zurückzugeben:
Beispiele für die Angabe der SEMANTIC_VIEW-Klausel¶
Die folgenden Beispiele verwenden die Ansicht tpch_analysis, die in Beispiel für die Verwendung von SQL zur Erstellung einer semantischen Ansicht definiert ist:
Metrik abrufen¶
Die folgende Anweisung ruft die Gesamtzahl der Kunden ab, indem sie eine Metrik abfragt:
Gruppierung metrischer Daten nach einer Dimension¶
Die folgende Anweisung gruppiert metrische Daten (order_average_value) nach einer Dimension (customer_market_segment):
Verwendung der Subklausel SEMANTIC_VIEW mit anderen Konstrukten¶
Das folgende Beispiel zeigt, wie Sie die Dimensionen und Metriken in der Subklausel SEMANTIC_VIEW mit anderen SQL-Konstrukten verwenden können, um Ergebnisse zu filtern, zu sortieren und einzuschränken:
Angabe von skalaren Ausdrücken, die Dimensionen verwenden¶
Im folgenden Beispiel wird ein skalarer Ausdruck verwendet, der sich auf eine Dimension in der DIMENSIONS-Klausel bezieht:
Angabe der WHERE-Klausel¶
Im folgenden Beispiel wird eine WHERE-Klausel angegeben, die sich auf eine Dimension in der DIMENSIONS-Klausel bezieht:
Fakten in WHERE-Klausel abrufen¶
Im folgenden Beispiel wird der Fakt region.r_name in einer Bedingung in der WHERE-Klausel verwendet:
Angabe des Namens der semantischen Ansicht in der FROM-Klausel¶
Sie können den Namen der semantischen Ansicht in der FROM-Klausel einer SELECT-Anweisung angeben, wie Sie es tun würden, wenn Sie eine Standard-SQL-Ansicht abfragen:
Intern wird diese Anweisung als SELECT-Anweisung umgeschrieben, welche die SEMANTIC_VIEW-Klausel verwendet:
Die Ausdrücke, die Sie in der GROUP BY-Klausel angeben, werden in die DIMENSIONS-Klausel in der SEMANTIC_VIEW-Klausel umgeschrieben.
Wenn Sie in der SELECT-Anweisung einen Ausdruck verwenden, der nicht in der GROUP BY-Klausel ist (z. B. ein Dimensionsausdruck in der SELECT-Liste), verwendet die Neufassung diesen Ausdruck in der FACTS-Klausel in der SEMANTIC_VIEW-Klausel.
When you refer to a metric that is defined in a semantic view, you must pass the metric to the AGG function.
Sie können Ad-hoc-Kennzahlen auswählen, indem Sie eine Dimension oder einen Fakt an eine beliebige Aggregatfunktion übergeben.
Alle anderen berechneten Werte, die nicht in die ersten beiden Kategorien fallen, werden als Faktenreferenzen betrachtet.
In den nächsten Abschnitten werden diese Anforderungen näher erläutert:
Anforderungen an Dimensionen und Kennzahlen in einer SELECT-Anweisung¶
In der SELECT-Anweisung können Sie nur auf Dimensionen und Kennzahlen verweisen, die eindeutige Namen haben und sich nicht durch ihren logischen Tabellennamen unterscheiden. Angenommen, eine semantische Ansicht hat zwei Dimensionen mit nicht qualifiziertem Namen name:
In der SELECT-Anweisung wird bei Angabe des qualifizierten Namens einer Dimension oder Kennzahl der Qualifizierer als Name der semantischen Ansicht interpretiert, nicht als Name einer logischen Tabelle:
Auswählen von Metriken¶
If you want to select a metric that is defined in a semantic view, you must pass the metric to the AGG function, which is a special aggregate function for metrics in semantic views.
Beispiel:
Bemerkung
The AGG function has no effect on the metric because the function evaluates one value of the metric.
in der SELECT-Liste können Sie einen Ausdruck angeben, der eine Metrik verwendet. Beispiel:
Sie können auch Ad-hoc-Kennzahlen definieren und auswählen, indem Sie eine Dimension oder eine Fakten- an eine beliebige Aggregatfunktion übergeben. Beispiel:
Auswählen von Dimensionen¶
Wenn die SELECT-Liste Dimensionen enthält, müssen Sie diese Dimensionen in der GROUP BY-Klausel angeben. Beispiel:
In der SELECT-Liste und in der GROUP BY-Klausel können Sie eine Dimension oder einen skalaren Ausdruck angeben, der eine Dimension oder einen Fakt verwendet. Beispiel:
Angabe der WHERE-Klausel¶
In der WHERE-Klausel können Sie nur bedingte Ausdrücke verwenden, die sich auf Dimensionen oder Fakten beziehen. Beispiel:
Die Dimensionen müssen für jede in der Abfrage verwendete Metrik erreichbar sein.
Angabe der HAVING-Klausel¶
In der HAVING-Klausel können Sie nur Kennzahlen angeben und müssen diese an eine der unter Auswählen von Metriken aufgeführten Aggregatfunktionen übergeben. Beispiel:
Einschränkungen bei der Angabe des Namens der semantischen Ansicht in der FROM-Klausel¶
Folgendes kann in der SELECT-Anweisung nicht angegeben werden:
Erweiterungen der FROM-Klausel, einschließlich:
PIVOT
UNPIVOT
MATCH_RECOGNIZE
LATERAL
Joins
Aufrufe von Fensterfunktionen
QUALIFY
Unterabfragen
Auswahl der Dimensionen, die Sie für eine bestimmte Metrik zurückgeben können¶
Wenn Sie eine Dimension und eine Metrik angeben, die zurückgegeben werden soll, muss die Basistabelle für die Dimension mit der Basistabelle für die Metrik in Beziehung stehen. Außerdem muss die Basistabelle für die Dimension eine gleiche oder geringere Granularität aufweisen als die Basistabelle für die Metrik.
Angenommen, Sie fragen die semantische Ansicht tpch_analysis ab, die Sie unter Beispiel für die Verwendung von SQL zur Erstellung einer semantischen Ansicht erstellt haben, und Sie möchten die orders.order_date-Dimension und die customer.customer_order_count-Metrik zurückgeben:
Diese Abfrage schlägt fehl, weil die Tabelle orders für die Dimension order_date eine höhere Granularität als die Tabelle``customer`` für die Metrik customer_order_count hat:
Um die Dimensionen aufzulisten, die Sie mit einer bestimmten Metrik zurückgeben können, führen Sie den Befehl SHOW SEMANTIC DIMENSIONS FOR METRIC aus. Beispiel:
Behandlung doppelter Spaltennamen in der Ausgabe¶
Die Ausgabespalten verwenden die unqualifizierten Namen der Metriken und Dimensionen. Wenn Sie mehrere Metriken und Dimensionen mit demselben Namen haben, werden mehrere Spalten denselben Namen verwenden.
Um dies zu umgehen, verwenden Sie einen Tabellenalias, um den Spalten andere Namen zuzuweisen.
Nehmen wir zum Beispiel an, dass Sie die folgende semantische Ansicht definieren, die die Dimensionen nation.name und region.name definiert:
Wenn Sie diese Ansicht abfragen und diese beiden Dimensionen auswählen, enthält die Ausgabe zwei Spalten mit dem Namen name ohne Qualifizierer:
Um die Spalten eindeutig zuzuordnen, verwenden Sie einen Tabellenalias, um verschiedene Spaltennamen zu vergeben (zum Beispiel nation_name und region_name):
Fensterfunktionsmetriken definieren und abfragen¶
Sie können Metriken festlegen, die Fensterfunktionen abrufen und aggregierte Werte übergeben. Diese Metriken werden Fensterfunktions-Metriken genannt.
Die folgenden Beispiele veranschaulichen den Unterschied zwischen einer Metrik einer Fensterfunktion und einer Metrik, die einen Ausdruck auf Zeilenebene an eine Fensterfunktion übergibt:
Die folgende Metrik ist eine Fensterfunktionsmetrik:
In diesem Beispiel nimmt die SUM-Fensterfunktion eine andere Metrik (
table_1.metric_3) als Argument.Die folgende Metrik ist auch eine Fensterfunktionsmetrik:
In diesem Beispiel nimmt die SUM-Fensterfunktion einen gültigen metrischen Ausdruck (
SUM(table_1.column_1)) als Argument.Die folgende Metrik ist keine Fensterfunktionsmetrik:
In diesem Beispiel nimmt die SUM-Fensterfunktion eine Spalte (
table_1.column_1) als Argument. Das Ergebnis dieses Fensterfunktionsaufrufs wird an einen separaten aggregierten SUM-Funktionsaufruf übergeben.
In den folgenden Abschnitten wird erklärt, wie Sie Fensterfunktionsmetriken definieren und abfragen:
Fensterfunktions-Metriken definieren¶
Verwenden Sie bei der Angabe eines Fensterfunktionsaufrufs diese Syntax, die in Parameter für Fensterfunktionskennzahlen beschrieben wird.
Das folgende Beispiel erstellt eine semantische Ansicht, die die Definitionen mehrerer Fensterfunktions-Metriken enthält. Das Beispiel verwendet Tabellen aus der TPC-DS-Beispieldatenbank. Weitere Informationen zum Zugriff auf diese Datenbank finden Sie unter Den TPC-DS-Datensatz zu Ihrem Konto hinzufügen.
Sie können in der Metrikdefinition auch andere Metriken aus derselben logischen Tabelle verwenden. Beispiel:
Bemerkung
Sie können Fensterfunktions-Metriken nicht in Berechnungen auf Zeilenebene (Fakten und Dimensionen) oder in den Definitionen anderer Metriken verwenden.
Fensterfunktionsmetriken abfragen¶
Wenn Sie eine semantische Ansicht abfragen und die Abfrage eine Fensterfunktionsmetrik zurückgibt, müssen Sie auch die Dimensionen zurückgeben, die in PARTITION BY dimension, PARTITION BY EXCLUDING dimension und ORDER BY dimension in der CREATE SEMANTIC VIEW-Anweisung für die semantische Ansicht angegeben werden.
Angenommen, Sie geben die Dimensionen date.date und date.year in den Klauseln PARTITION BY EXCLUDING und ORDER BY in der Definition der Metrik store_sales.avg_7_days_sales_quantity an:
Wenn Sie die Metrik store_sales.avg_7_days_sales_quantity in einer Abfrage zurückgeben, müssen Sie auch die Dimensionen date.date und date.year zurückgeben:
Wenn Sie die Dimensionen date.date und date.year auslassen, tritt ein Fehler auf.
Um festzustellen, welche Dimensionen Sie in der Abfrage angeben müssen, führen Sie den Befehl SHOW SEMANTIC DIMENSIONS FOR METRIC aus. Um beispielsweise die Dimensionen zu bestimmen, die Sie beim Abrufen der Metrik store_sales.avg_7_days_sales_quantity angeben müssen, führen Sie diesen Befehl aus:
In der Ausgabe des Befehls steht in der Spalte required true für die Dimensionen, die Sie in der Abfrage angeben müssen.
Die weiteren folgenden Beispiele fragen die Fensterfunktionsmetriken ab, die in Fensterfunktions-Metriken definieren definiert sind. Beachten Sie, dass die DIMENSIONS-Klausel die Dimensionen umfasst, die in den Klauseln PARTITION BY EXCLUDING und ORDER BY in den Metrikdefinitionen angegeben sind.
Das folgende Beispiel gibt die Umsatzmenge vor 30 Tagen zurück:
Das folgende Beispiel gibt den laufenden 7-Tage-Durchschnitt des Gesamtumsatzes von 30 Tagen zurück: