Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Это важно
Эта функция доступна в общедоступной предварительной версии.
На этой странице описывается, как использовать временные таблицы для хранения и анализа промежуточных данных в пределах сеанса на вычислительных ресурсах SQL-склада.
Временные таблицы хранят данные в течение сеанса Azure Databricks. Используйте временные таблицы для материализации промежуточных результатов для анализа и конвейеров данных SQL без создания постоянных таблиц в каталоге.
Временные таблицы доступны только в вычислительных ресурсах хранилища SQL. Классические вычислительные ресурсы и бессерверные вычисления пока не поддерживаются.
Когда следует использовать временные таблицы
Используйте временные таблицы, если требуется хранить короткие промежуточные данные во время исследования или разработки рабочих процессов, повторно использовать результаты запросов в нескольких операциях в одном сеансе или работать с табличным интерфейсом без добавления объектов в пространство имен каталога.
Если данные должны сохраняться за пределами текущего сеанса или должны предоставляться другим пользователям или заданиям, используйте постоянную таблицу каталога Unity. См. таблицы под управлением каталога Unity в Azure Databricks для Delta Lake и Apache Iceberg.
Создание временной таблицы
Создайте временную таблицу с помощью CREATE TEMPORARY TABLE или CREATE TEMP TABLE синтаксиса. Вы можете создать пустую таблицу с определенной схемой или создать таблицу из результатов запроса.
-- 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);
Замечание
-
CREATE OR REPLACE TEMP TABLEсинтаксис пока не поддерживается. Чтобы заменить временную таблицу, сначала удалите ее, а затем повторно создайте ее. - Не указывайте
USINGпредложение при создании временных таблиц. По умолчанию временные таблицы используют формат Delta, и явное указание формата вызывает ошибку.
Запрос временных таблиц
Обращайтесь к временным таблицам, используя одночастное имя. Не указывайте каталог или схему.
-- 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;
При обращении к таблице с простым именем, Azure Databricks выполняет поиск в следующем порядке:
- Временные таблицы в текущем сеансе
- Постоянные таблицы в текущей схеме
При создании временной таблицы с тем же именем, что и существующая постоянная таблица, временная таблица имеет приоритет в сеансе. Чтобы явно ссылаться на постоянную таблицу с тем же именем, что и временная таблица, используйте полное трехкомпонентное имя:
-- References temporary table (if it exists)
SELECT * FROM customers;
-- Explicitly references permanent table
SELECT * FROM prod.sales.customers;
Дополнительные сведения о разрешении имен в Azure Databricks см. в разделе "Разрешение имен".
Изменение временных таблиц
Вы можете вставлять, обновлять и объединять данные во временные таблицы с помощью стандартных операций 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 *;
Замечание
Операции с DELETE FROM еще не поддерживаются для временных таблиц. Используйте MERGE INTO с условиями фильтрации или вместо этого создайте таблицу с отфильтрованными данными.
Удаление временных таблиц
Azure Databricks автоматически удаляет временные таблицы при завершении сеанса, но вы можете явно удалить их, если они больше не нужны.
-- Drop a temporary table
DROP TEMP TABLE temp_customers;
-- Drop only if it exists
DROP TEMP TABLE IF EXISTS temp_recent_orders;
Ограничения жизненного цикла и времени
Временные таблицы существуют только в сеансе Azure Databricks, где они создаются. Максимальное время существования — семь дней после создания сеанса. Временные таблицы становятся недоступными, когда сеанс заканчивается или через семь дней. Эти ограничения применяются к записным книжкам, редактору SQL, заданиям и сеансам JDBC/ODBC.
Хранение и очистка
Azure Databricks автоматически управляет временным хранилищем таблиц. Данные сохраняются в облачном хранилище, аналогично управляемым таблицам каталога Unity. Когда временная таблица становится недоступной (когда сеанс заканчивается или достигается семидневное ограничение), вы больше не сможете запрашивать данные. Azure Databricks автоматически освобождает хранилище в фоновом режиме, как правило, в течение нескольких дней. Очистка происходит автоматически даже при отключении или неожиданном завершении работы кластера.
Изоляция и привилегии
Любой пользователь может создавать временные таблицы. В Unity Catalog не нужны CREATE TABLE привилегии на каталог или схему.
Временные таблицы обеспечивают изоляцию уровня сеанса. Каждая временная таблица существует только в созданном сеансе. Другие пользователи не могут читать, изменять или обнаруживать существование временных таблиц.
Можно создать временную таблицу с тем же именем, что и существующую постоянную таблицу без столкновения. Дополнительные сведения о том, как Azure Databricks разрешает имена таблиц, см. в статье "Запрос временных таблиц".
Временные таблицы используют пространство имен с временными представлениями. Нельзя создать временную таблицу и временное представление с одинаковым именем в одном сеансе.
Ограничения
Временные таблицы имеют следующие ограничения:
-
Изменения схемы:
ALTER TABLEоперации не поддерживаются. Чтобы изменить схему временной таблицы, удалите и повторно создайте таблицу. - Клонирование: неглубокое и глубокое клонирование не поддерживаются.
- Перемещение по времени: запросы на поездки по времени не поддерживаются.
-
Потоковая передача. Временные таблицы нельзя использовать в запросах потоковой передачи (например, в
foreachBatchоперациях). - Поддержка API: поддерживаются только API SQL. API DataFrame не поддерживаются.
- Много-пользовательский доступ к ноутбуку: только один пользователь может взаимодействовать с временными таблицами в сеансе работы с ноутбуком. Второй пользователь не может читать, записывать или создавать временные таблицы в одном сеансе.