Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Область применения:
Databricks SQL
Это важно
Эта функция доступна в общедоступной предварительной версии.
На этой странице описывается, как использовать временные таблицы для хранения и анализа промежуточных данных в пределах сеанса на вычислительных ресурсах SQL-склада.
Временные таблицы хранят данные в течение сеанса Azure Databricks. Используйте временные таблицы для материализации промежуточных результатов для анализа и конвейеров данных SQL без создания постоянных таблиц в каталоге.
Временные таблицы доступны только в вычислительных ресурсах хранилища SQL. Классические вычислительные ресурсы и бессерверные вычисления пока не поддерживаются.
Когда следует использовать временные таблицы
Используйте временные таблицы, если требуется хранить короткие промежуточные данные во время исследования или разработки рабочих процессов, повторно использовать результаты запросов в нескольких операциях в одном сеансе или работать с табличным интерфейсом без добавления объектов в пространство имен каталога.
Если данные должны сохраняться за пределами текущего сеанса или должны предоставляться другим пользователям или заданиям, используйте постоянную таблицу каталога Unity. См. управляемые таблицы каталога Unity в Azure Databricks для Delta Lake и Apache Iceberg.
Создание или замена временной таблицы
Создайте временную таблицу с помощью CREATE TEMPORARY TABLE или CREATE TEMP TABLE синтаксиса. Вы можете создать пустую таблицу с определенной схемой или создать таблицу из результатов запроса.
Замените временную таблицу с помощью [CREATE OR] REPLACE TEMPORARY TABLE или [CREATE OR] REPLACE TEMP TABLE.
CREATE OR является необязательным. При указании команда создает новую временную таблицу, если временная таблица с тем же именем не существует.
-- 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);
Замечание
- Не указывайте
USINGпредложение при создании временных таблиц. По умолчанию временные таблицы используют формат Delta, и явное указание формата вызывает ошибку. - Для создания временной таблицы необходимо указать ключевое слово
REPLACEилиTEMPORARY. БезTEMPORARYключевого словаREPLACEзаменяет лишь постоянную таблицу.
Запрос временных таблиц
Обращайтесь к временным таблицам, используя одночастное имя. Не указывайте каталог или схему.
-- 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 см. в разделе Name resolution.
Изменение временных таблиц
Вы можете вставлять, обновлять и объединять данные во временные таблицы с помощью стандартных операций 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 автоматически управляет временным хранилищем таблиц. Данные сохраняются в облачном хранилище с определенным расположением хранилища в зависимости от типа рабочей области:
- Бессерверные рабочие области: данные временной таблицы хранятся в хранилище по умолчанию. Если вы настроили ключ, управляемый клиентом для управляемых служб, временные данные таблицы используют этот ключ. Дополнительные сведения см. в разделе "Ключи, управляемые клиентом" для шифрования.
- Классические рабочие области: данные временной таблицы хранятся в контейнере хранилища рабочей области, настроенном во время создания рабочей области. Шифрование можно настроить на уровне контейнера хранилища.
Когда временная таблица становится недоступной (когда сеанс заканчивается или достигается семидневное ограничение), вы больше не сможете запрашивать данные. Azure Databricks автоматически освобождает хранилище в фоновом режиме. Это включает в себя случаи, когда сеанс заканчивается из-за отключения или неожиданного завершения работы кластера. Очистка обычно завершается в течение нескольких дней.
Изоляция и привилегии
Любой пользователь может создавать временные таблицы. В Unity Catalog не нужны CREATE TABLE привилегии на каталог или схему.
Временные таблицы обеспечивают изоляцию уровня сеанса. Каждая временная таблица существует только в созданном сеансе. Другие пользователи не могут читать, изменять или обнаруживать существование временных таблиц.
Можно создать временную таблицу с тем же именем, что и существующую постоянную таблицу без столкновения. Дополнительные сведения о том, как Azure Databricks разрешает имена таблиц, см. в разделе Запрос временных таблиц.
Временные таблицы используют пространство имен с временными представлениями. Нельзя создать временную таблицу и временное представление с одинаковым именем в одном сеансе.
Ограничения
Временные таблицы имеют следующие ограничения:
-
Изменения схемы:
ALTER TABLEоперации не поддерживаются. Чтобы изменить схему временной таблицы, замените таблицу. - Клонирование: неглубокое и глубокое клонирование не поддерживаются.
- Перемещение по времени: запросы на поездки по времени не поддерживаются.
-
Потоковая передача. Временные таблицы нельзя использовать в запросах потоковой передачи (например, в
foreachBatchоперациях). - Поддержка API: поддерживаются только API SQL. API DataFrame не поддерживаются.
- Много-пользовательский доступ к ноутбуку: только один пользователь может взаимодействовать с временными таблицами в сеансе работы с ноутбуком. Второй пользователь не может читать, записывать или создавать временные таблицы в одном сеансе.