CREATE INTERACTIVE TABLE

Erstellt eine neue interaktive Tabelle im aktuellen/angegebenen Schema oder ersetzt eine bestehende Tabelle. Interaktive Tabellen sind für interaktive Abfragen mit niedriger Latenz optimiert und bieten die beste Leistung, wenn sie mit interaktiven Warehouses abgefragt werden.

Interaktive Tabellen unterstützen eine begrenztere Menge von SQL-Vorgängen als Standardtabellen und sind für hochgradig parallele Abfrage-Workloads in Echtzeit konzipiert, wie z. B. Dashboards und datengestützte APIs.

Bemerkung

Wenn Sie eine interaktive Tabelle erstellen, müssen Sie eine CLUSTER BY-Klausel für eine oder mehrere Spalten definieren, die in den WHERE-Klauseln für Ihre zeitkritischsten Abfragen verwendet werden.

Sie können auch die folgenden CREATE INTERACTIVE TABLE-Varianten verwenden:

Die vollständige CREATE TABLE-Syntax, die für Standard-Snowflake-Tabellen verwendet wird, finden Sie unter CREATE TABLE.

Tipp

Bevor Sie interaktive Tabellen erstellen und verwenden, sollten Sie sich mit den entsprechenden Einschränkungen und Anwendungsfällen vertraut machen. Interaktive Tabellen funktionieren am besten mit einfachen SELECT-Anweisungen mit selektiven WHERE-Klauseln.

Siehe auch:

CREATE WAREHOUSE, ALTER WAREHOUSE, SHOW TABLES, SHOW WAREHOUSES, DROP TABLE

Syntax

CREATE [ OR REPLACE ] INTERACTIVE TABLE [ IF NOT EXISTS ] <table_name>
  CLUSTER BY ( <expr> [ , <expr> , ... ] )
  [ TARGET_LAG = '<num> { seconds | minutes | hours | days }' ]
  [ WAREHOUSE = <warehouse_name> ]
  [ COPY GRANTS ]
  [ COMMENT = '<string_literal>' ]
  AS <query>
Copy

Erforderliche Parameter

table_name

Gibt den Bezeichner (d. h. den Namen) für die interaktive Tabelle an. Dieser 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 Details dazu finden Sie unter Anforderungen an Bezeichner.

CLUSTER BY ( expr [ , expr , ... ] )

Erforderlich. Gibt eine oder mehrere Spalten oder Spaltenausdrücke in der Tabelle als Gruppierungsschlüssel an. Wählen Sie Clustering-Spalten aus, die in den WHERE-Klauseln Ihrer zeitkritischsten Abfragen verwendet werden, da sich dies erheblich auf die Abfrageleistung auswirkt.

Weitere Informationen zum Auswählen effektiver Gruppierungsschlüssel finden Sie unter Gruppierungsschlüssel und geclusterte Tabellen.

AS query

Erforderlich. Gibt die SELECT-Anweisung an, mit der die interaktive Tabelle aufgefüllt wird. Diese Abfrage muss in der CREATE INTERACTIVE TABLE-Anweisung als letztes angegeben werden, unabhängig von anderen enthaltenen Parametern.

Die Abfrage folgt den Mustern von CREATE TABLE AS SELECT (CTAS) und definiert die Daten und das Schema für die interaktive Tabelle.

Optionale Parameter

OR REPLACE

Gibt an, dass die interaktive Tabelle ersetzt werden soll, wenn sie bereits im Schema vorhanden ist. Dies ist gleichbedeutend mit der Verwendung von DROP TABLE für die vorhandene Tabelle und der anschließenden Erstellung einer neuen Tabelle mit demselben Namen.

IF NOT EXISTS

Gibt an, dass die interaktive Tabelle nur erstellt wird, wenn sie noch nicht im Schema vorhanden ist. Wenn bereits eine Tabelle mit dem gleichen Namen vorhanden ist, ist die Anweisung erfolgreich, ohne dass eine neue Tabelle erstellt wird.

Bemerkung

Die Klauseln OR REPLACE und IF NOT EXISTS schließen sich gegenseitig aus und können nicht beide in derselben Anweisung verwendet werden.

TARGET_LAG = 'num { seconds | minutes | hours | days }'

Gibt die maximale Verzögerungszeit für die automatische Aktualisierung der interaktiven Tabelle an. Wird dieser Wert angegeben, wird die interaktive Tabelle zu einer dynamischen interaktiven Tabelle, die automatisch aktualisiert wird, um die angegebene Verzögerungszeit der Quelldaten einzuhalten.

  • Der Mindestwert beträgt 60 Sekunden (1 Minute).

  • Wenn keine Einheit angegeben ist, stellt die Zahl Sekunden dar.

  • Wenn TARGET_LAG nicht angegeben ist, wird die Tabelle als statische interaktive Tabelle erstellt.

Wenn TARGET_LAG angegeben wird, ist auch der Parameter WAREHOUSE erforderlich.

WAREHOUSE = warehouse_name

Erforderlich, wenn TARGET_LAG angegeben ist. Gibt das Standard-Warehouse an, das für Aktualisierungsvorgänge verwendet wird, wenn TARGET_LAG festgelegt ist. Dies muss ein Standard-Warehouse sein, kein interaktives Warehouse.

COPY GRANTS

Gibt an, dass die Zugriffsrechte aus der ursprünglichen Tabelle beibehalten werden, wenn eine interaktive Tabelle mit CREATE OR REPLACE INTERACTIVE TABLE ersetzt wird.

Der Parameter kopiert alle Berechtigungen, mit Ausnahme von OWNERSHIP, aus der bestehenden Tabelle in die neue Tabelle. Standardmäßig ist die Rolle, die die Anweisung CREATE INTERACTIVE TABLE ausführt, Eigentümer der neuen Tabelle.

COMMENT = 'string_literal'

Gibt einen Kommentar für die interaktive Tabelle an.

Anforderungen an die Zugriffssteuerung

Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:

Berechtigung

Objekt

Anmerkungen

CREATE INTERACTIVE TABLE

Schema

Erforderlich, um eine interaktive Tabelle im Schema zu erstellen.

SELECT

Tabelle, externe Tabelle, Ansicht

Erforderlich für abgefragte Tabellen und/oder Ansichten in der AS SELECT-Klausel.

USAGE

Datenbank, Schema

Erforderlich für die Datenbank und das Schema, die die interaktive Tabelle enthalten.

USAGE

Warehouse

Erforderlich für das im WAREHOUSE-Parameter angegebene Warehouse (bei Verwendung von TARGET_LAG).

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

  • Interaktive Tabellen müssen mit einem Standard-Warehouse erstellt werden, nicht mit einem interaktiven Warehouse.

  • Die CLUSTER BY-Klausel ist für alle interaktiven Tabellen erforderlich und beeinflusst die Abfrageleistung erheblich. Wählen Sie Clustering-Spalten sorgfältig auf der Grundlage Ihrer am häufigsten verwendeten WHERE-Klauselmuster aus.

  • Interaktive Tabellen bieten die beste Leistung, wenn sie über interaktive Warehouses abgefragt werden. So erzielen Sie eine optimale Leistung für eine interaktive Tabelle:

    1. Erstellen Sie ein interaktives Warehouse.

    2. Verknüpfen Sie die interaktive Tabelle mit dem interaktiven Warehouse unter Verwendung von ALTER WAREHOUSE … ADD TABLES.

    3. Setzen Sie das interaktive Warehouse fort.

    4. Verwenden Sie das interaktive Warehouse, um die interaktive Tabelle abzufragen.

  • Interaktive Tabellen unterstützen im Vergleich zu Standardtabellen eine begrenzte Anzahl von SQL-Vorgängen:

    • SELECT-Anweisungen mit WHERE-Klauseln sind optimiert.

    • Einfache GROUP BY-Vorgänge werden unterstützt.

    • DML-Vorgänge (INSERT, UPDATE, DELETE) werden nicht unterstützt. Der einzige erlaubte DML-Vorgang ist INSERT OVERWRITE.

    • Komplexe Abfragevorgänge haben möglicherweise nur begrenzte Leistungsvorteile.

  • Dynamische interaktive Tabellen (mit TARGET_LAG) werden automatisch unter Verwendung des angegebenen Standard-Warehouses aktualisiert. Die Verzögerungszeit sorgt für ein Gleichgewicht zwischen Datenaktualität und Computekosten.

  • Statische interaktive Tabellen müssen manuell aktualisiert werden, um mit neuen Daten aus Quelltabellen aktualisiert zu werden.

  • Interaktive Tabellen speichern zusätzliche Metadaten und Indexinformationen, um Abfragen zu beschleunigen. Diese Daten sind jedoch komprimiert und haben nur minimale Auswirkungen auf die Speichergröße.

Variantensyntax: Statische interaktive Tabelle

Erstellt eine statische interaktive Tabelle, die einmal von der Quellabfrage gefüllt wird:

CREATE [ OR REPLACE ] INTERACTIVE TABLE <table_name>
  CLUSTER BY ( <expr> [ , <expr> , ... ] )
  [ COPY GRANTS ]
  [ COMMENT = '<string_literal>' ]
  AS <query>
Copy

Statische interaktive Tabellen werden nicht automatisch aktualisiert, sondern erfordern manuelle Aktualisierungen, um Änderungen in den Quelldaten widerzuspiegeln.

Variantensyntax: Dynamische interaktive Tabelle

Erstellt eine dynamische interaktive Tabelle, die automatisch auf der Grundlage der angegebenen Verzögerungszeit aktualisiert wird:

CREATE [ OR REPLACE ] INTERACTIVE TABLE <table_name>
  CLUSTER BY ( <expr> [ , <expr> , ... ] )
  TARGET_LAG = '<num> { seconds | minutes | hours | days }'
  WAREHOUSE = <warehouse_name>
  [ COPY GRANTS ]
  [ COMMENT = '<string_literal>' ]
  AS <query>
Copy

Dynamische interaktive Tabellen werden automatisch aktualisiert, um innerhalb des angegebenen TARGET_LAG der Quelldaten zu bleiben. Bei Aktualisierungsvorgängen wird das angegebene Standard-Warehouse verwendet.

Beispiele

Die folgenden Beispiele zeigen verschiedene Möglichkeiten, wie Sie interaktive Tabellen erstellen können, und geben dabei die Quelle der zugehörigen Daten an und wie die Daten aktualisiert werden können.

Einfache statische interaktive Tabelle

Erstellen Sie eine statische interaktive Tabelle aus vorhandenen Auftragsdaten, die nach Kunde und Datum gruppiert sind, um eine optimale Abfrageleistung zu erzielen:

CREATE INTERACTIVE TABLE orders_interactive
  CLUSTER BY (customer_id, order_date)
  COMMENT = 'Interactive table for real-time order analytics'
AS
  SELECT customer_id, order_date, product_id, quantity, total_amount
  FROM orders_staging
  WHERE order_date >= '2024-01-01';
Copy

Dynamische interaktive Tabelle mit automatischer Aktualisierung

Erstellen Sie eine dynamische interaktive Tabelle, die alle 5 Minuten aktualisiert wird, um Verkaufszusammenfassungen nahezu in Echtzeit zu erhalten:

CREATE INTERACTIVE TABLE sales_summary_interactive
  CLUSTER BY (region, product_category)
  TARGET_LAG = '5 minutes'
  WAREHOUSE = refresh_warehouse
  COMMENT = 'Real-time sales dashboard data'
AS
  SELECT
    region,
    product_category,
    SUM(sales_amount) as total_sales,
    COUNT(*) as transaction_count,
    AVG(sales_amount) as avg_sale
  FROM sales_data
  GROUP BY region, product_category;
Copy

Mehrspaltiges Clustering für komplexe Abfragen

Erstellen Sie eine interaktive Tabelle mit mehrspaltigem Clustering, das für verschiedene Abfragemuster optimiert ist:

CREATE INTERACTIVE TABLE customer_analytics_interactive
  CLUSTER BY (customer_tier, region, signup_date)
  TARGET_LAG = '10 minutes'
  WAREHOUSE = analytics_warehouse
AS
  SELECT
    customer_id,
    customer_tier,
    region,
    signup_date,
    total_orders,
    lifetime_value,
    last_order_date
  FROM customer_metrics
  WHERE customer_tier IN ('GOLD', 'PLATINUM', 'DIAMOND');
Copy

Bestehende interaktive Tabelle ersetzen

Ersetzen Sie eine vorhandene interaktive Tabelle durch aktualisierte Clustering- und Aktualisierungseinstellungen:

CREATE OR REPLACE INTERACTIVE TABLE product_performance_interactive
  CLUSTER BY (category, brand, launch_date)
  TARGET_LAG = '2 minutes'
  WAREHOUSE = fast_refresh_warehouse
  COPY GRANTS
AS
  SELECT
    product_id,
    category,
    brand,
    launch_date,
    units_sold,
    revenue,
    customer_rating
  FROM product_sales_view
  WHERE launch_date >= DATEADD('month', -6, CURRENT_DATE());
Copy