Aller au contenu principal

Tables temporaires dans Databricks SQL et Databricks Runtime

S'applique à : coché oui Databricks SQL coché oui Databricks Runtime 18.1 et versions ultérieures

Les tables temporaires stockent des données pour la durée d'une session Databricks. Utilisez des tables temporaires pour matérialiser les résultats intermédiaires pour l'analyse exploratoire ou les pipelines de données SQL sans créer de tables permanentes dans votre catalogue.

Quand utiliser les tables temporaires

Utilisez des tables temporaires lorsque vous devez :

  • Stockez les données intermédiaires de courte durée pendant l'analyse exploratoire ou le développement de workflows.
  • Réutilisez les résultats de query dans plusieurs opérations au sein de la même session.
  • Utilisez une interface de type tableau sans ajouter d’objets à votre espace de noms de catalogue.

Si vos données doivent persister au-delà de la session actuelle ou doivent être partagées avec d'autres utilisateurs ou jobs, utilisez plutôt une table Unity Catalog permanente. Consultez les tables gérées Unity Catalog pour Delta Lake et Apache Iceberg.

Créer ou remplacer une table temporaire

Créer une table temporaire en utilisant la syntaxe CREATE TEMPORARY TABLE ou CREATE TEMP TABLE. Vous pouvez créer une table vide avec un schéma défini ou créer une table à partir des résultats de la query.

Remplacez une table temporaire à l'aide de [CREATE OR] REPLACE TEMPORARY TABLE ou [CREATE OR] REPLACE TEMP TABLE. CREATE OR est facultatif. Lorsque spécifiée, la commande crée une nouvelle table temporaire si une table temporaire du même nom n'existe pas.

SQL
-- Create an empty temporary table with a defined schema
CREATE TEMPORARY TABLE temp_customers (
id INT,
name STRING
);

-- Replace the temporary table with a new defined schema
REPLACE TEMP TABLE temp_customers (
id INT,
name STRING,
email STRING
);

-- Create or replace a temporary table from query results
CREATE OR REPLACE 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);
remarque
  • Ne spécifiez pas la clause USING lors de la création de tables temporaires. Les tables temporaires utilisent le format Delta Lake by default, et la spécification explicite d'un format provoque une erreur.
  • Pour REPLACE une table temporaire, le mot-clé TEMPORARY ou TEMP doit être spécifié. Sans le mot-clé TEMPORARY, REPLACE ne remplace qu'une table permanente.

Tables temporaires de query

Référencez les tables temporaires en utilisant uniquement le nom de la table. Ne spécifiez pas de catalogue ou de schéma.

SQL
-- 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;

Lorsque vous référencez une table en utilisant uniquement le nom de la table, Databricks effectue une recherche dans l'ordre suivant :

  1. Tables temporaires dans la session actuelle
  2. Tables permanentes dans le schéma actuel

Si vous créez une table temporaire portant le même nom qu'une table permanente existante, la table temporaire prend le pas sur celle-ci au sein de votre session. Pour référencer explicitement une table permanente qui a le même nom qu'une table temporaire, utilisez un nom entièrement qualifié dans l'espace de noms à trois niveaux :

SQL
-- References temporary table (if it exists)
SELECT * FROM customers;

-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;

Pour plus d'informations sur la résolution de noms dans Databricks, consultez Résolution de noms.

Modifier les tables temporaires

Vous pouvez insérer, mettre à jour et Merge des données dans des tables temporaires à l'aide d'opérations DML standard.

SQL
-- 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 *;
remarque

DELETE FROM Les opérations ne sont pas prises en charge pour les tables temporaires. Utilisez MERGE INTO avec des conditions de filtrage ou recréez la table avec des données filtrées à la place.

Supprimer les tables temporaires

Databricks supprime automatiquement les tables temporaires lorsque votre session se termine. Si vous n'avez plus besoin de vos tables temporaires, vous pouvez les supprimer explicitement.

SQL
-- Drop a temporary table
DROP TEMP TABLE temp_customers;

-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;

Cycle de vie et limites de temps

Les tables temporaires existent uniquement dans la session Databricks où vous les créez. La durée de vie maximale est de sept jours à compter de la création de la session. Les tables temporaires deviennent inaccessibles à la fin de la session ou après sept jours, selon ce qui se produit en premier. Ces limites s'appliquent aux Notebooks, à l'éditeur SQL, aux Jobs et aux sessions JDBC/ODBC.

Stockage et nettoyage

Databricks gère automatiquement le stockage de tables temporaires. Les données persistent dans le stockage cloud, l'emplacement de stockage spécifique dépendant du type de votre Workspace :

  • Workspaces Serverless : les données de table temporaires sont stockées dans le stockage default. Si vous avez configuré une clé gérée par le client pour les services gérés, les données de table temporaire utilisent cette clé. Pour plus d'informations, consultez Clés gérées par le client pour le chiffrement.

  • **Workspaces classiques** : Les données de table temporaires sont stockées dans le compartiment de stockage du Workspace qui est configuré au moment de la création du Workspace. Vous pouvez configurer le chiffrement au niveau du compartiment de stockage.

Lorsqu’une table temporaire devient inaccessible (quand la session se termine ou que la limite de sept jours est atteinte), vous ne pouvez plus interroger les données. Databricks récupère automatiquement le stockage en arrière-plan. Cela inclut les cas où la session se termine en raison d'une déconnexion ou d'un arrêt inattendu du cluster. Le nettoyage se termine généralement en quelques jours.

Isolation et privilèges

N’importe quel utilisateur peut créer des tables temporaires. Vous n'avez pas besoin de privilèges CREATE TABLE sur un catalogue ou un schéma dans Unity Catalog.

Les tables temporaires offrent une isolation au niveau de la session. Chaque table temporaire existe uniquement au sein de la session qui l'a créée. Aucun autre utilisateur ne peut lire, modifier ou détecter l'existence de vos tables temporaires.

Vous pouvez créer une table temporaire portant le même nom qu'une table permanente existante sans collision. Pour plus de détails sur la façon dont Databricks résout les noms de table, consultez Query de tables temporaires.

Les tables temporaires partagent un espace de noms avec les vues temporaires. Vous ne pouvez pas créer à la fois une table temporaire et une vue temporaire portant le même nom dans la même session.

Limitations

Les tables temporaires présentent les limitations suivantes :

  • Modifications de schéma : les opérations ALTER TABLE ne sont pas prises en charge. Pour modifier le schéma d'une table temporaire, remplacez la table.

  • Propriétés des tables : Seules les clauses SET TBLPROPERTIES et UNSET TBLPROPERTIES sont prises en charge sur les tables temporaires (avec le compute serverless, Databricks Runtime 18.2 et versions ultérieures, et Databricks SQL 2026.15 et versions ultérieures).

  • **Clonage** : le clonage superficiel et le clonage en profondeur ne sont pas pris en charge.

  • Time travel : Les queries Time travel ne sont pas prises en charge.

  • Streaming : Vous ne pouvez pas utiliser de tables temporaires dans les queries de streaming (par exemple, dans les foreachBatch Opérations).

  • Prise en charge des API : seules les API SQL sont prises en charge. Les APIs DataFrame ne sont pas prises en charge.

  • Accès multi-utilisateur au Notebook : Seul un utilisateur peut interagir avec les tables temporaires dans une session de Notebook. Un deuxième utilisateur ne peut pas lire, écrire ou créer des tables temporaires dans la même session.

  • Clusters dédiés : Les tables temporaires ne sont pas prises en charge sur les clusters dédiés (utilisateur unique).

  • Configuration du stockage : si vous rencontrez des échecs de chevauchement de chemins, consultez Résoudre les conflits de chemins de stockage.

  • AWS GovCloud : Les tables temporaires ne sont pas prises en charge dans AWS GovCloud ou AWS GovCloud DoD. Consultez les fonctionnalités indisponibles.

Ressources supplémentaires