Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Platí pro:
Databricks SQL
Důležité
Tato funkce je ve verzi Public Preview.
Tato stránka popisuje, jak používat dočasné tabulky pro prozatímní úložiště dat a analýzu v rámci relace na výpočetních prostředcích SQL skladiště.
Dočasné tabulky ukládají data po dobu trvání relace Azure Databricks. Dočasné tabulky slouží k materializaci průběžných výsledků pro průzkumné analýzy nebo datové kanály SQL bez vytváření trvalých tabulek v katalogu.
Dočasné tabulky jsou k dispozici pouze pro výpočetní prostředky SQL Warehouse. Klasické výpočetní prostředky a bezserverové výpočetní prostředky se zatím nepodporují.
Kdy použít dočasné tabulky
Dočasné tabulky použijte, když potřebujete ukládat krátkodobá průběžná data během průzkumné analýzy nebo vývoje pracovních postupů, opakovaně používat výsledky dotazů napříč několika operacemi v rámci stejné relace nebo pracovat s rozhraním podobné tabulce bez přidání objektů do oboru názvů katalogu.
Pokud vaše data potřebují přetrvat nad rámec aktuální relace nebo musí být sdílena s jinými uživateli či úlohami, použijte místo toho neměnnou tabulku v Unity Catalog. Podívejte se na tabulky spravované službou Unity Catalog v Azure Databricks pro Delta Lake a Apache Iceberg.
Vytvoření dočasné tabulky
Vytvořte dočasnou tabulku pomocí CREATE TEMPORARY TABLE nebo CREATE TEMP TABLE syntaxe. Můžete vytvořit prázdnou tabulku s definovaným schématem nebo vytvořit tabulku z výsledků dotazu.
-- 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);
Poznámka:
-
CREATE OR REPLACE TEMP TABLEsyntaxe se zatím nepodporuje. Nejprve smažte dočasnou tabulku a potom ji znovu vytvořte. - Při vytváření dočasných tabulek nezadávejte
USINGklauzuli. Dočasné tabulky ve výchozím nastavení používají formát Delta a explicitní zadání formátu způsobí chybu.
Dotazování dočasných tabulek
Odkazujte na dočasné tabulky pomocí názvu jedné části. Nezadávejte katalog ani schéma.
-- 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;
Když odkazujete na tabulku s názvem jedné části, Azure Databricks prohledává v následujícím pořadí:
- Dočasné tabulky v aktuální relaci
- Trvalé tabulky v aktuálním schématu
Pokud vytvoříte dočasnou tabulku se stejným názvem jako existující trvalá tabulka, bude mít dočasná tabulka přednost v rámci relace. Pokud chcete explicitně odkazovat na trvalou tabulku se stejným názvem jako dočasná tabulka, použijte plně kvalifikovaný třídílný název:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Další informace o překladu názvů v Azure Databricks najdete v tématu Překlad názvů.
Úprava dočasných tabulek
Data můžete vložit, aktualizovat a sloučit do dočasných tabulek pomocí standardních operací 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 *;
Poznámka:
DELETE FROM operace zatím nejsou podporované pro dočasné tabulky. Použijte MERGE INTO místo toho s podmínkami filtrování nebo znovu vytvořte tabulku s filtrovanými daty.
Vyřazení dočasných tabulek
Azure Databricks po skončení relace automaticky zahodí dočasné tabulky, ale pokud je už nepotřebujete, můžete je explicitně vyřadit.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Životní cyklus a časové limity
Dočasné tabulky existují pouze v rámci relace Azure Databricks, ve které je vytvoříte. Maximální životnost je sedm dnů od vytvoření relace. Dočasné tabulky se stanou nedostupnými, když relace skončí, nebo po sedmi dnech, podle toho, co nastane dříve. Tato omezení platí pro poznámkové bloky, Editor SQL, úlohy a relace JDBC/ODBC.
Úložiště a vyčištění
Azure Databricks automaticky spravuje dočasné úložiště tabulek. Data se uchovávají v cloudovém úložišti, podobně jako spravované tabulky Služby Unity. Když se dočasná tabulka stane nepřístupnou (když relace skončí nebo dosáhne sedmidenního limitu), nebudete se už moct dotazovat na data. Azure Databricks automaticky uvolní úložiště na pozadí, obvykle během několika dnů. Čištění probíhá automaticky i při odpojení nebo neočekávaném vypnutí clusteru.
Izolace a oprávnění
Každý uživatel může vytvářet dočasné tabulky. V katalogu Unity nepotřebujete CREATE TABLE oprávnění k katalogu nebo schématu.
Dočasné tabulky poskytují izolaci na úrovni relace. Každá dočasná tabulka existuje pouze v rámci relace, která ji vytvořila. Nikdo jiný nemůže číst, upravovat ani zjišťovat existenci dočasných tabulek.
Můžete vytvořit dočasnou tabulku se stejným názvem jako existující trvalou tabulku bez kolize. Podrobnosti o tom, jak Azure Databricks řeší názvy tabulek, viz Dotazování dočasných tabulek.
Dočasné tabulky sdílejí jmenný prostor s dočasnými zobrazeními. Ve stejné relaci nemůžete vytvořit dočasnou tabulku i dočasné zobrazení se stejným názvem.
Omezení
Dočasné tabulky mají následující omezení:
-
Úpravy schématu:
ALTER TABLEOperace nejsou podporovány. Pokud chcete změnit schéma dočasné tabulky, přetáhněte tabulku a vytvořte ji znovu. - Klonování: Mělké a hluboké klonování se nepodporuje.
- Časové cestování: Dotazy na cestování časem nejsou podporovány.
-
Streamování: V dotazech streamování nemůžete použít dočasné tabulky (například v
foreachBatchoperacích). - Podpora rozhraní API: Podporují se pouze rozhraní API SQL. Rozhraní API pro datové rámce nejsou podporována.
- Notebook multi-user access: Dočasnými tabulkami v rámci sezení v notebooku může pracovat jen jeden uživatel. Druhý uživatel nemůže číst, zapisovat ani vytvářet dočasné tabulky v rámci téže relace.