Verwendung von SQL-Befehlen zum Erstellen und Verwalten semantischer Ansichten

In diesem Thema wird erklärt, wie Sie die folgenden SQL-Befehle verwenden, um semantische Ansichten zu erstellen und zu verwalten.

Erstellen einer semantischen Ansicht

Um eine semantische Ansicht zu erstellen, führen Sie den Befehl CREATE SEMANTIC VIEW aus. Sie müssen 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 auf die in der semantischen Ansicht verwendeten Tabellen und Ansichten.

Die semantische Ansicht muss gültig sein. Siehe Wie Snowflake semantische Ansichten validiert.

Das Beispiel verwendet die in Snowflake verfügbaren TPC-H Beispieldaten. Dieser Datensatz enthält Tabellen, die ein vereinfachtes Geschäftsszenario mit Kunden, Aufträgen und Einzelposten darstellen.

Datenmodell der in den TPC-H Beispieldaten verwendeten Tabellen

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, und line_items).

  • Eine Beziehung zwischen den Tabellen orders und customers.

  • Eine Beziehung zwischen den Tabellen line_items und orders.

  • 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.

CREATE SEMANTIC VIEW tpch_rev_analysis

  TABLES (
    orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
      PRIMARY KEY (o_orderkey)
      WITH SYNONYMS ('sales orders')
      COMMENT = 'All orders table for the sales domain',
    customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
      PRIMARY KEY (c_custkey)
      COMMENT = 'Main table for customer data',
    line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
      PRIMARY KEY (l_orderkey, l_linenumber)
      COMMENT = 'Line items in orders'
  )

  RELATIONSHIPS (
    orders_to_customers AS
      orders (o_custkey) REFERENCES customers,
    line_item_to_orders AS
      line_items (l_orderkey) REFERENCES orders
  )

  FACTS (
    line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
    orders.count_line_items AS COUNT(line_items.line_item_id),
    line_items.discounted_price AS l_extendedprice * (1 - l_discount)
      COMMENT = 'Extended price after discount'
  )

  DIMENSIONS (
    customers.customer_name AS customers.c_name
      WITH SYNONYMS = ('customer name')
      COMMENT = 'Name of the customer',
    orders.order_date AS o_orderdate
      COMMENT = 'Date when the order was placed',
    orders.order_year AS YEAR(o_orderdate)
      COMMENT = 'Year when the order was placed'
  )

  METRICS (
    customers.customer_count AS COUNT(c_custkey)
      COMMENT = 'Count of number of customers',
    orders.order_average_value AS AVG(orders.o_totalprice)
      COMMENT = 'Average order value across all orders',
    orders.average_line_items_per_order AS AVG(orders.count_line_items)
      COMMENT = 'Average number of line items per order'
  )

  COMMENT = 'Semantic view for revenue analysis';
Copy

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-H orders enthält.

  • Eine Tabelle customers, die die Kundeninformationen aus der Tabelle TPC-H customers enthält.

  • Eine Tabelle line_item, mit den Einzelposten in Bestellungen aus der Tabelle TPC-H lineitem.

Das Beispiel bezeichnet die Spalten, die als Primärschlüssel für jede logische Tabelle verwendet werden sollen, sodass Sie die Beziehungen zwischen den Tabellen erkennen können.

Das Beispiel enthält auch Synonyme und Kommentare, die die logischen Tabellen beschreiben und die Daten leichter auffindbar machen.

TABLES (
  orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
    PRIMARY KEY (o_orderkey)
    WITH SYNONYMS ('sales orders')
    COMMENT = 'All orders table for the sales domain',
  customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
    PRIMARY KEY (c_custkey)
    COMMENT = 'Main table for customer data',
  line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
    PRIMARY KEY (l_orderkey, l_linenumber)
    COMMENT = 'Line items in orders'
Copy

Identifizierung der Beziehungen zwischen logischen Tabellen

Verwenden Sie im Befehl CREATE SEMANTIC VIEW die Klausel RELATIONSHIPS, um die Beziehungen zwischen den Tabellen in der Ansicht zu identifizieren. Für jede Beziehung geben Sie 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.

In dem zuvor vorgestellten Beispiel gibt die Klausel RELATIONSHIPS zwei Beziehungen an:

  • Eine Beziehung zwischen den Tabellen orders und customers. In der Tabelle orders ist o_custkey der Fremdschlüssel, der sich auf den Primärschlüssel in der Tabelle customers (c_custkey) bezieht.

  • Eine Beziehung zwischen den Tabellen line_items und orders. In der Tabelle line_items ist l_orderkey der Fremdschlüssel, der sich auf den Primärschlüssel in der Tabelle orders (o_orderkey) bezieht.

RELATIONSHIPS (
  orders_to_customers AS
    orders (o_custkey) REFERENCES customers (c_custkey),
  line_item_to_orders AS
    line_items (l_orderkey) REFERENCES orders (o_orderkey)
)
Copy

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.

  • Einen Namen für den Fakt, die Dimension oder die Metrik.

  • Den SQL-Ausdruck, um ihn zu berechnen.

  • Optionale Synonyme und Kommentare.

Das zuvor vorgestellte Beispiel definiert mehrere Fakten, Dimensionen und Metriken:

FACTS (
  line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
  orders.count_line_items AS COUNT(line_items.line_item_id),
  line_items.discounted_price AS l_extendedprice * (1 - l_discount)
    COMMENT = 'Extended price after discount'
)

DIMENSIONS (
  customers.customer_name AS customers.c_name
    WITH SYNONYMS = ('customer name')
    COMMENT = 'Name of the customer',
  orders.order_date AS o_orderdate
    COMMENT = 'Date when the order was placed',
  orders.order_year AS YEAR(o_orderdate)
    COMMENT = 'Year when the order was placed'
)

METRICS (
  customers.customer_count AS COUNT(c_custkey)
    COMMENT = 'Count of number of customers',
  orders.order_average_value AS AVG(orders.o_totalprice)
    COMMENT = 'Average order value across all orders',
  orders.average_line_items_per_order AS AVG(orders.count_line_items)
    COMMENT = 'Average number of line items per order'
)
Copy

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:

CREATE OR REPLACE SEMANTIC VIEW tpch_rev_analysis

  TABLES (
    orders AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.ORDERS
      PRIMARY KEY (o_orderkey)
      WITH SYNONYMS ('sales orders')
      COMMENT = 'All orders table for the sales domain',
    customers AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.CUSTOMER
      PRIMARY KEY (c_custkey)
      COMMENT = 'Main table for customer data',
    line_items AS SNOWFLAKE_SAMPLE_DATA.TPCH_SF1.LINEITEM
      PRIMARY KEY (l_orderkey, l_linenumber)
      COMMENT = 'Line items in orders'
  )

  RELATIONSHIPS (
    orders_to_customers AS
      orders (o_custkey) REFERENCES customers,
    line_item_to_orders AS
      line_items (l_orderkey) REFERENCES orders
  )

  FACTS (
    line_items.line_item_id AS CONCAT(l_orderkey, '-', l_linenumber),
    orders.count_line_items AS COUNT(line_items.line_item_id),
    line_items.discounted_price AS l_extendedprice * (1 - l_discount)
      COMMENT = 'Extended price after discount'
  )

  DIMENSIONS (
    customers.customer_name AS customers.c_name
      WITH SYNONYMS = ('customer name')
      COMMENT = 'Name of the customer',
    orders.order_date AS o_orderdate
      COMMENT = 'Date when the order was placed',
    orders.order_year AS YEAR(o_orderdate)
      COMMENT = 'Year when the order was placed'
  )

  METRICS (
    customers.customer_count AS COUNT(c_custkey)
      COMMENT = 'Count of number of customers',
    orders.order_average_value AS AVG(orders.o_totalprice)
      COMMENT = 'Average order value across all orders',
    orders.average_line_items_per_order AS AVG(orders.count_line_items)
      COMMENT = 'Average number of line items per order'
  )

  COMMENT = 'Semantic view for revenue analysis and different comment'
  COPY GRANTS;
Copy

Auflistung semantischer Ansichten

Um semantische Ansichten im aktuellen Schema oder einem bestimmten Schema aufzulisten, führen Sie den Befehl SHOW SEMANTIC VIEWS aus. Beispiel:

SHOW SEMANTIC VIEWS;
Copy
+-------------------------------+-----------------------+---------------+-------------------+----------------------------------------------+-----------------+-----------------+-----------+
| created_on                    | name                  | database_name | schema_name       | comment                                      | owner           | owner_role_type | extension |
|-------------------------------+-----------------------+---------------+-------------------+----------------------------------------------+-----------------+-----------------+-----------|
| 2025-03-20 15:06:34.039 -0700 | MY_NEW_SEMANTIC_MODEL | MY_DB         | MY_SCHEMA         | A semantic model created through the wizard. | MY_ROLE         | ROLE            | ["CA"]    |
| 2025-02-28 16:16:04.002 -0800 | O_TPCH_SEMANTIC_VIEW  | MY_DB         | MY_SCHEMA         | NULL                                         | MY_ROLE         | ROLE            | NULL      |
| 2025-03-21 07:03:54.120 -0700 | TPCH_REV_ANALYSIS     | MY_DB         | MY_SCHEMA         | Semantic view for revenue analysis           | MY_ROLE         | ROLE            | NULL      |
+-------------------------------+-----------------------+---------------+-------------------+----------------------------------------------+-----------------+-----------------+-----------+

Sie können auch die Ansichten für semantische Ansichten in den Schemas ACCOUNT_USAGE und INFORMATION_SCHEMA abfragen.

Details zu einer semantischen Ansicht anzeigen

Um die Details einer semantischen Ansicht anzuzeigen, führen Sie den Befehl DESCRIBE SEMANTIC VIEW aus. Beispiel:

DESCRIBE SEMANTIC VIEW tpch_rev_analysis;
Copy
+--------------+------------------------------+---------------+--------------------------+----------------------------------------+
| object_kind  | object_name                  | parent_entity | property                 | property_value                         |
|--------------+------------------------------+---------------+--------------------------+----------------------------------------|
| NULL         | NULL                         | NULL          | COMMENT                  | Semantic view for revenue analysis     |
| TABLE        | CUSTOMERS                    | NULL          | BASE_TABLE_DATABASE_NAME | SNOWFLAKE_SAMPLE_DATA                  |
| TABLE        | CUSTOMERS                    | NULL          | BASE_TABLE_SCHEMA_NAME   | TPCH_SF1                               |
| TABLE        | CUSTOMERS                    | NULL          | BASE_TABLE_NAME          | CUSTOMER                               |
| TABLE        | CUSTOMERS                    | NULL          | PRIMARY_KEY              | ["C_CUSTKEY"]                          |
| TABLE        | CUSTOMERS                    | NULL          | COMMENT                  | Main table for customer data           |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | TABLE                    | CUSTOMERS                              |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | EXPRESSION               | customers.c_name                       |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | DATA_TYPE                | VARCHAR(25)                            |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | SYNONYMS                 | ["customer name"]                      |
| DIMENSION    | CUSTOMER_NAME                | CUSTOMERS     | COMMENT                  | Name of the customer                   |
| TABLE        | LINE_ITEMS                   | NULL          | BASE_TABLE_DATABASE_NAME | SNOWFLAKE_SAMPLE_DATA                  |
| TABLE        | LINE_ITEMS                   | NULL          | BASE_TABLE_SCHEMA_NAME   | TPCH_SF1                               |
| TABLE        | LINE_ITEMS                   | NULL          | BASE_TABLE_NAME          | LINEITEM                               |
| TABLE        | LINE_ITEMS                   | NULL          | PRIMARY_KEY              | ["L_ORDERKEY","L_LINENUMBER"]          |
| TABLE        | LINE_ITEMS                   | NULL          | COMMENT                  | Line items in orders                   |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | TABLE                    | LINE_ITEMS                             |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | REF_TABLE                | ORDERS                                 |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | FOREIGN_KEY              | ["L_ORDERKEY"]                         |
| RELATIONSHIP | LINE_ITEM_TO_ORDERS          | LINE_ITEMS    | REF_KEY                  | ["O_ORDERKEY"]                         |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | TABLE                    | LINE_ITEMS                             |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | EXPRESSION               | l_extendedprice * (1 - l_discount)     |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | DATA_TYPE                | NUMBER(25,4)                           |
| FACT         | DISCOUNTED_PRICE             | LINE_ITEMS    | COMMENT                  | Extended price after discount          |
| FACT         | LINE_ITEM_ID                 | LINE_ITEMS    | TABLE                    | LINE_ITEMS                             |
| FACT         | LINE_ITEM_ID                 | LINE_ITEMS    | EXPRESSION               | CONCAT(l_orderkey, '-', l_linenumber)  |
| FACT         | LINE_ITEM_ID                 | LINE_ITEMS    | DATA_TYPE                | VARCHAR(134217728)                     |
| TABLE        | ORDERS                       | NULL          | BASE_TABLE_DATABASE_NAME | SNOWFLAKE_SAMPLE_DATA                  |
| TABLE        | ORDERS                       | NULL          | BASE_TABLE_SCHEMA_NAME   | TPCH_SF1                               |
| TABLE        | ORDERS                       | NULL          | BASE_TABLE_NAME          | ORDERS                                 |
| TABLE        | ORDERS                       | NULL          | SYNONYMS                 | ["sales orders"]                       |
| TABLE        | ORDERS                       | NULL          | PRIMARY_KEY              | ["O_ORDERKEY"]                         |
| TABLE        | ORDERS                       | NULL          | COMMENT                  | All orders table for the sales domain  |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | TABLE                    | ORDERS                                 |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | REF_TABLE                | CUSTOMERS                              |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | FOREIGN_KEY              | ["O_CUSTKEY"]                          |
| RELATIONSHIP | ORDERS_TO_CUSTOMERS          | ORDERS        | REF_KEY                  | ["C_CUSTKEY"]                          |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | TABLE                    | ORDERS                                 |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | EXPRESSION               | AVG(orders.count_line_items)           |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | DATA_TYPE                | NUMBER(36,6)                           |
| METRIC       | AVERAGE_LINE_ITEMS_PER_ORDER | ORDERS        | COMMENT                  | Average number of line items per order |
| FACT         | COUNT_LINE_ITEMS             | ORDERS        | TABLE                    | ORDERS                                 |
| FACT         | COUNT_LINE_ITEMS             | ORDERS        | EXPRESSION               | COUNT(line_items.line_item_id)         |
| FACT         | COUNT_LINE_ITEMS             | ORDERS        | DATA_TYPE                | NUMBER(18,0)                           |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | TABLE                    | ORDERS                                 |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | EXPRESSION               | AVG(orders.o_totalprice)               |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | DATA_TYPE                | NUMBER(30,8)                           |
| METRIC       | ORDER_AVERAGE_VALUE          | ORDERS        | COMMENT                  | Average order value across all orders  |
| DIMENSION    | ORDER_DATE                   | ORDERS        | TABLE                    | ORDERS                                 |
| DIMENSION    | ORDER_DATE                   | ORDERS        | EXPRESSION               | o_orderdate                            |
| DIMENSION    | ORDER_DATE                   | ORDERS        | DATA_TYPE                | DATE                                   |
| DIMENSION    | ORDER_DATE                   | ORDERS        | COMMENT                  | Date when the order was placed         |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | TABLE                    | ORDERS                                 |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | EXPRESSION               | YEAR(o_orderdate)                      |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | DATA_TYPE                | NUMBER(4,0)                            |
| DIMENSION    | ORDER_YEAR                   | ORDERS        | COMMENT                  | Year when the order was placed         |
+--------------+------------------------------+---------------+--------------------------+----------------------------------------+

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.

Wenn Sie GET_DDL aufrufen, geben Sie 'SEMANTIC_VIEW' als Objekttyp an. Beispiel:

SELECT GET_DDL('SEMANTIC_VIEW', 'tpch_rev_analysis', TRUE);
Copy
+-----------------------------------------------------------------------------------+
| GET_DDL('SEMANTIC_VIEW', 'TPCH_REV_ANALYSIS', TRUE)                               |
|-----------------------------------------------------------------------------------|
| create or replace semantic view DYOSHINAGA_DB.DYOSHINAGA_SCHEMA.TPCH_REV_ANALYSIS |
|     tables (                                                                                                                                                                       |
|             ORDERS primary key (O_ORDERKEY) with synonyms=('sales orders') comment='All orders table for the sales domain',                                                                                                                                                                       |
|             CUSTOMERS as CUSTOMER primary key (C_CUSTKEY) comment='Main table for customer data',                                                                                                                                                                       |
|             LINE_ITEMS as LINEITEM primary key (L_ORDERKEY,L_LINENUMBER) comment='Line items in orders'                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     relationships (                                                                                                                                                                       |
|             ORDERS_TO_CUSTOMERS as ORDERS(O_CUSTKEY) references CUSTOMERS(C_CUSTKEY),                                                                                                                                                                       |
|             LINE_ITEM_TO_ORDERS as LINE_ITEMS(L_ORDERKEY) references ORDERS(O_ORDERKEY)                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     facts (                                                                                                                                                                       |
|             ORDERS.COUNT_LINE_ITEMS as COUNT(line_items.line_item_id),                                                                                                                                                                       |
|             LINE_ITEMS.DISCOUNTED_PRICE as l_extendedprice * (1 - l_discount) comment='Extended price after discount',                                                                                                                                                                       |
|             LINE_ITEMS.LINE_ITEM_ID as CONCAT(l_orderkey, '-', l_linenumber)                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     dimensions (                                                                                                                                                                       |
|             ORDERS.ORDER_DATE as o_orderdate comment='Date when the order was placed',                                                                                                                                                                       |
|             ORDERS.ORDER_YEAR as YEAR(o_orderdate) comment='Year when the order was placed',                                                                                                                                                                       |
|             CUSTOMERS.CUSTOMER_NAME as customers.c_name with synonyms=('customer name') comment='Name of the customer'                                                                                                                                                                       |
|     )                                                                                                                                                                       |
|     metrics (                                                                                                                                                                       |
|             ORDERS.AVERAGE_LINE_ITEMS_PER_ORDER as AVG(orders.count_line_items) comment='Average number of line items per order',                                                                                                                                                                       |
|             ORDERS.ORDER_AVERAGE_VALUE as AVG(orders.o_totalprice) comment='Average order value across all orders'                                                                                                                                                                       |
|     );                                                                                                                                                                       |
+-----------------------------------------------------------------------------------+

Entfernen einer semantischen Ansicht

Um eine semantische Ansicht zu entfernen, führen Sie den Befehl DROP SEMANTIC VIEW aus. Beispiel:

DROP SEMANTIC VIEW tpch_rev_analysis;
Copy

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:

  • Für die Ausführung des Befehls DESCRIBE SEMANTIC VIEW in der Ansicht ist eine beliebige Berechtigung (z. B. REFERENCE OR SELECT) erforderlich.

  • SELECT ist erforderlich, um SELECT ... FROM SEMANTIC_VIEW() auszuführen.

  • Eine dieser beiden Berechtigungen ist erforderlich, um die Ansicht in der Ausgabe des Befehls SHOW SEMANTIC VIEWS anzuzeigen.

Bemerkung

Derzeit können Sie mit der Berechtigung REFERENCES eine semantische Ansicht abfragen, aber in Zukunft wird die Möglichkeit, eine semantische Ansicht abzufragen, auf Rollen mit der Berechtigung SELECT beschränkt sein.

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 beispielsweise der Rolle my_analyst_role die Berechtigungen REFERENCES und SELECT für die semantische Ansicht mit dem Namen my_semantic_view zu gewähren, können Sie die folgende Anweisung ausführen:

GRANT REFERENCES, SELECT ON SEMANTIC VIEW my_semantic_view TO ROLE my_analyst_role;
Copy

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:

GRANT REFERENCES, SELECT ON FUTURE SEMANTIC VIEWS IN SCHEMA my_schema TO ROLE my_analyst_role;
Copy