Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:
Databricks SQL
Ważne
Ta funkcja jest dostępna w publicznej wersji testowej.
Na tej stronie opisano sposób używania tabel tymczasowych do tymczasowego przechowywania danych w zakresie sesji oraz analizy zasobów obliczeniowych magazynu SQL.
Tabele tymczasowe przechowują dane przez czas trwania sesji usługi Azure Databricks. Tabele tymczasowe umożliwiają materializowanie wyników pośrednich na potrzeby eksploracyjnej analizy lub potoków danych SQL bez tworzenia tabel stałych w katalogu.
Tabele tymczasowe są dostępne tylko w obliczeniach usługi SQL Warehouse. Klasyczne obliczenia i obliczenia bezserwerowe nie są jeszcze obsługiwane.
Kiedy należy używać tabel tymczasowych
Użyj tabel tymczasowych, gdy musisz przechowywać krótkotrwałe dane pośrednie podczas opracowywania eksploracyjnej analizy lub przepływu pracy, ponownie używać wyników zapytań w wielu operacjach w ramach tej samej sesji lub pracować z interfejsem przypominającym tabelę bez dodawania obiektów do przestrzeni nazw katalogu.
Jeśli dane muszą być utrwalane poza bieżącą sesją lub muszą być współużytkowane przez innych użytkowników lub zadania, należy zamiast tego użyć trwałej tabeli Unity Catalog. Zobacz Tabele zarządzane przez katalog Unity w usłudze Azure Databricks dla Delta Lake i Apache Iceberg.
Tworzenie tabeli tymczasowej
Utwórz tabelę tymczasową przy użyciu składni CREATE TEMPORARY TABLE lub CREATE TEMP TABLE . Możesz utworzyć pustą tabelę ze zdefiniowanym schematem lub utworzyć tabelę na podstawie wyników zapytania.
-- Create an empty temporary table with a defined schema
CREATE TEMPORARY TABLE temp_customers (
id INT,
name STRING,
email STRING
);
-- Create a temporary table from query results
CREATE TEMP TABLE temp_recent_orders AS
SELECT order_id, customer_id, order_date, amount
FROM prod.sales.orders
WHERE order_date >= current_date() - INTERVAL 30 DAYS;
-- Create a temporary table using VALUES clause
CREATE TEMP TABLE temp_test_data AS
VALUES
(9001, 101, 50.00),
(9002, 204, 75.00),
(9003, 101, 25.00)
AS t(order_id, customer_id, amount);
Uwaga / Notatka
-
CREATE OR REPLACE TEMP TABLEskładnia nie jest jeszcze obsługiwana. Aby zastąpić tabelę tymczasową, upuść ją najpierw, a następnie utwórz ją ponownie. - Nie należy określać klauzuli
USINGpodczas tworzenia tabel tymczasowych. Tabele tymczasowe domyślnie używają formatu delta, a jawne określanie formatu powoduje błąd.
Wykonywanie zapytań względem tabel tymczasowych
Odwołuj się do tabel tymczasowych przy użyciu jednoczłonowej nazwy. Nie należy określać wykazu ani schematu.
-- Query a temporary table
SELECT * FROM temp_customers;
-- Join temporary tables with permanent tables
SELECT
c.name,
o.order_id,
o.amount
FROM temp_customers c
INNER JOIN temp_recent_orders o
ON c.id = o.customer_id;
Jeśli odwołujesz się do tabeli o nazwie pojedynczej części, usługa Azure Databricks wyszukuje je w następującej kolejności:
- Tabele tymczasowe w bieżącej sesji
- Stałe tabele w bieżącym schemacie
Jeśli tworzysz tabelę tymczasową o takiej samej nazwie jak istniejąca stała tabela, tabela tymczasowa ma pierwszeństwo w sesji. Aby jawnie odwołać się do stałej tabeli, która ma taką samą nazwę jak tabela tymczasowa, użyj w pełni kwalifikowanej trzyczęściowej nazwy:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Aby uzyskać więcej informacji na temat rozpoznawania nazw w usłudze Azure Databricks, zobacz Rozpoznawanie nazw.
Modyfikowanie tabel tymczasowych
Dane można wstawiać, aktualizować i scalać z tabelami tymczasowymi przy użyciu standardowych operacji DML.
-- Insert data into a temporary table
INSERT INTO temp_customers VALUES (101, 'Jane Doe', 'jane@example.com');
-- Insert from a query
INSERT INTO temp_customers
SELECT id, name, email
FROM prod.customer.active_customers
WHERE region = 'US-WEST';
-- Update rows in a temporary table
UPDATE temp_recent_orders
SET amount = amount * 0.90
WHERE customer_id = 101;
-- Merge data into a temporary table
MERGE INTO temp_customers target
USING prod.customer.new_signups source
ON target.id = source.id
WHEN MATCHED THEN UPDATE SET *
WHEN NOT MATCHED THEN INSERT *;
Uwaga / Notatka
DELETE FROM operacje nie są jeszcze obsługiwane w przypadku tabel tymczasowych. Użyj MERGE INTO funkcji z warunkami filtrowania lub utwórz ponownie tabelę przy użyciu filtrowanych danych.
Usuwanie tabel tymczasowych
Usługa Azure Databricks automatycznie usuwa tabele tymczasowe po zakończeniu sesji, ale możesz je jawnie usunąć, jeśli nie są już potrzebne.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Limity czasu i cyklu życia
Tabele tymczasowe istnieją tylko w ramach sesji usługi Azure Databricks, w której są tworzone. Maksymalny okres istnienia wynosi siedem dni od utworzenia sesji. Tabele tymczasowe stają się niedostępne, gdy sesja kończy się lub po siedmiu dniach, w zależności od tego, co nastąpi wcześniej. Te limity dotyczą notesów, edytora SQL, zadań i sesji JDBC/ODBC.
Magazynowanie i czyszczenie
Usługa Azure Databricks automatycznie zarządza tymczasowym magazynem tabel. Dane są utrwalane w magazynie w chmurze, podobnie jak tabele zarządzane przez Unity Catalog. Gdy tabela tymczasowa stanie się niedostępna (po zakończeniu sesji lub osiągnięciu limitu siedmiu dni), nie można już wykonywać zapytań dotyczących danych. Usługa Azure Databricks automatycznie odzyskuje magazyn w tle, zwykle w ciągu kilku dni. Czyszczenie odbywa się automatycznie nawet w przypadku rozłączenia lub nieoczekiwanego zamknięcia klastra.
Izolacja i uprawnienia
Każdy użytkownik może tworzyć tabele tymczasowe. Nie potrzebujesz CREATE TABLE uprawnień do katalogu ani schematu w Unity Catalog.
Tabele tymczasowe zapewniają izolację na poziomie sesji. Każda tabela tymczasowa istnieje tylko w ramach sesji, która ją utworzyła. Żaden inny użytkownik nie może odczytywać, modyfikować ani wykrywać istnienia tabel tymczasowych.
Możesz utworzyć tabelę tymczasową o takiej samej nazwie jak istniejąca stała tabela bez kolizji. Aby uzyskać szczegółowe informacje na temat sposobu rozpoznawania nazw tabel w usłudze Azure Databricks, zobacz Tworzenie zapytań dotyczących tabel tymczasowych.
Tabele tymczasowe i widoki tymczasowe współdzielą tę samą przestrzeń nazw. Nie można utworzyć zarówno tabeli tymczasowej, jak i widoku tymczasowego o tej samej nazwie w tej samej sesji.
Ograniczenia
Tabele tymczasowe mają następujące ograniczenia:
-
Modyfikacje schematu:
ALTER TABLEoperacje nie są obsługiwane. Aby zmodyfikować schemat tabeli tymczasowej, usuń i ponownie utwórz tabelę. - Klonowanie: Płytkie i głębokie klonowanie nie są obsługiwane.
- Podróż w czasie: zapytania dotyczące podróży w czasie nie są obsługiwane.
-
Przesyłanie strumieniowe: nie można używać tabel tymczasowych w zapytaniach przesyłania strumieniowego (na przykład w
foreachBatchoperacjach). - Obsługa interfejsu API: obsługiwane są tylko interfejsy API SQL. API DataFrame nie są obsługiwane.
- Dostęp do notesu dla wielu użytkowników: tylko jeden użytkownik może wchodzić w interakcje z tabelami tymczasowymi w sesji notesu. Drugi użytkownik nie może odczytywać, zapisywać ani tworzyć tabel tymczasowych w tej samej sesji.