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:
Variantensyntax: Statische interaktive Tabelle (erstellt eine statische interaktive Tabelle, die aus einer Abfrage gefüllt wird)
Variantensyntax: Dynamische interaktive Tabelle (erstellt eine dynamische interaktive Tabelle mit automatischer Aktualisierung)
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>
Erforderliche Parameter¶
table_nameGibt 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 queryErforderlich. 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 REPLACEGibt 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 EXISTSGibt 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_nameErforderlich, 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 GRANTSGibt 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:
Erstellen Sie ein interaktives Warehouse.
Verknüpfen Sie die interaktive Tabelle mit dem interaktiven Warehouse unter Verwendung von ALTER WAREHOUSE … ADD TABLES.
Setzen Sie das interaktive Warehouse fort.
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>
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>
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';
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;
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');
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());