Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a:
Databricks SQL
Importante
Esta característica está en versión preliminar pública.
En esta página se describe cómo usar tablas temporales para el almacenamiento y el análisis de datos intermedios con ámbito de sesión en el proceso de SQL Warehouse.
Las tablas temporales almacenan datos durante una sesión de Azure Databricks. Use tablas temporales para materializar los resultados intermedios para el análisis exploratorio o las canalizaciones de datos SQL sin crear tablas permanentes en el catálogo.
Las tablas temporales solo están disponibles en la computación del almacén de SQL. La computación clásica y la computación sin servidor aún no son compatibles.
Cuándo usar tablas temporales
Use tablas temporales cuando necesite almacenar datos intermedios de corta duración durante el análisis exploratorio o el desarrollo del flujo de trabajo, reutilizar los resultados de las consultas en varias operaciones dentro de la misma sesión o trabajar con una interfaz similar a una tabla sin agregar objetos al espacio de nombres del catálogo.
Si los datos deben conservarse más allá de la sesión actual o deben compartirse con otros usuarios o trabajos, use en su lugar una tabla de Catálogo de Unity permanente. Consulte Tablas administradas del catálogo de Unity en Azure Databricks para Delta Lake y Apache Iceberg.
Creación de una tabla temporal
Cree una tabla temporal mediante CREATE TEMPORARY TABLE o CREATE TEMP TABLE sintaxis. Puede crear una tabla vacía con un esquema definido o crear una tabla a partir de los resultados de la consulta.
-- 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);
Nota:
-
CREATE OR REPLACE TEMP TABLETodavía no se admite la sintaxis. Para reemplazar una tabla temporal, elimínela primero y luego vuelva a crearla. - No especifique la
USINGcláusula al crear tablas temporales. Las tablas temporales usan el formato Delta de forma predeterminada y especificar explícitamente un formato produce un error.
Consulta de tablas temporales
Haga referencia a tablas temporales mediante un nombre de elemento único. No especifique un catálogo ni un esquema.
-- 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;
Al hacer referencia a una tabla con un nombre de una sola parte, Azure Databricks busca en el orden siguiente:
- Tablas temporales en la sesión actual
- Tablas permanentes en el esquema actual
Si crea una tabla temporal con el mismo nombre que una tabla permanente existente, la tabla temporal tiene prioridad en la sesión. Para hacer referencia explícita a una tabla permanente que tiene el mismo nombre que una tabla temporal, use un nombre completo de tres partes:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Para más información sobre la resolución de nombres en Azure Databricks, consulte Resolución de nombres.
Modificación de tablas temporales
Puede insertar, actualizar y combinar datos en tablas temporales mediante operaciones DML estándar.
-- 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 *;
Nota:
DELETE FROM Las operaciones aún no son compatibles con tablas temporales. Use MERGE INTO con condiciones de filtrado o vuelva a crear la tabla con datos filtrados en su lugar.
Eliminar tablas temporales
Azure Databricks quita automáticamente las tablas temporales cuando finaliza la sesión, pero puede quitarlas explícitamente si ya no las necesita.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Límites de ciclo de vida y tiempo
Las tablas temporales solo existen dentro de la sesión de Azure Databricks donde se crean. La duración máxima es de siete días a partir de la creación de la sesión. Las tablas temporales se vuelven inaccesibles cuando finaliza la sesión o después de siete días, lo que ocurra primero. Estos límites se aplican a cuadernos, editor de SQL, trabajos y sesiones JDBC/ODBC.
Almacenamiento y limpieza
Azure Databricks administra automáticamente el almacenamiento de tablas temporales. Los datos se conservan en el almacenamiento en la nube, de forma similar a las tablas administradas de Unity Catalog. Cuando una tabla temporal deja de estar accesible (cuando finaliza la sesión o se alcanza el límite de siete días), ya no puede consultar los datos. Azure Databricks reclama automáticamente el almacenamiento en segundo plano, normalmente en unos días. La limpieza se produce automáticamente incluso con la desconexión o el apagado inesperado del clúster.
Aislamiento y privilegios
Cualquier usuario puede crear tablas temporales. No necesita CREATE TABLE privilegios en un catálogo o esquema en Unity Catalog.
Las tablas temporales proporcionan aislamiento de nivel de sesión. Cada tabla temporal solo existe dentro de la sesión que la creó. Ningún otro usuario puede leer, modificar ni detectar la existencia de las tablas temporales.
Puede crear una tabla temporal con el mismo nombre que una tabla permanente existente sin colisión. Para más información sobre cómo Azure Databricks resuelve los nombres de tabla, consulte Consulta de tablas temporales.
Las tablas temporales comparten un espacio de nombres con vistas temporales. No se puede crear una tabla temporal y una vista temporal con el mismo nombre en la misma sesión.
Limitaciones
Las tablas temporales tienen las siguientes limitaciones:
-
Modificaciones de esquema:
ALTER TABLElas operaciones no están soportadas. Para modificar el esquema de una tabla temporal, quite y vuelva a crear la tabla. - Clonación: no se admite la clonación superficial y profunda.
- Viaje en el tiempo: no se admiten consultas de viaje de tiempo.
-
Streaming: no se pueden usar tablas temporales en consultas de streaming (por ejemplo, en
foreachBatchoperaciones). - Compatibilidad con API: solo se admiten las API de SQL. No se admiten las API de DataFrame.
- Acceso multiusuario al cuaderno: solo un usuario puede interactuar con tablas temporales en una sesión del cuaderno. Un segundo usuario no puede leer, escribir ni crear tablas temporales en la misma sesión.