Sdílet prostřednictvím


Dočasné tabulky

Platí pro:označeno jako „ano“ 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 TABLE syntaxe 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 USING klauzuli. 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í:

  1. Dočasné tabulky v aktuální relaci
  2. 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 TABLE Operace 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 foreachBatch operací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.

Co bude dál