Перейти к содержимому
Последнее обновление

Временная таблица (устаревшая функция)

Устаревшая функция

Функция временных таблиц устарела. Её не рекомендуется использовать в производственной среде.

При решении сложных задач обработки данных эффективным подходом является разбиение большого SQL-запроса на несколько этапов с временным сохранением результата каждого этапа в виде материализованной таблицы. Такой подход значительно упрощает SQL-запросы и облегчает отладку обработки данных. Однако материализованные таблицы необходимо удалять вручную, когда они больше не нужны. Если вы решите использовать нематериализованные временные таблицы, то в настоящее время Doris поддерживает их определение только с помощью конструкции WITH.

Для решения этих задач Doris предоставляет функцию временных таблиц. Временная таблица представляет собой материализованную внутреннюю таблицу с ограниченным сроком существования. Она упрощает хранение временных данных и управление ими при сложной обработке данных, а также повышает гибкость и безопасность обработки.

Основные возможности​

ВозможностьОписание
Привязка к сеансуВременная таблица существует только в создавшем её сеансе, и её жизненный цикл тесно связан с текущим сеансом. При завершении сеанса все созданные в нём временные таблицы автоматически удаляются.
Видимость только в пределах сеансаВидимость временной таблицы строго ограничена создавшим её сеансом. Даже другой сеанс, одновременно открытый тем же пользователем, не может получить доступ к этим временным таблицам.
Гибкость именованияНа имена временных таблиц не распространяется ограничение уникальности. Можно создавать временные таблицы с одинаковыми именами в разных сеансах, а также создавать временную таблицу с тем же именем, что и у другой внутренней таблицы.
Примечание

Как и внутренние таблицы, временная таблица должна создаваться в базе данных в Internal Catalog.

Если в одной базе данных существуют временная и обычная таблицы с одинаковым именем, временная таблица имеет наивысший приоритет доступа. В рамках этого сеанса все запросы и операции с таблицами с таким именем применяются только к временной таблице (за исключением создания материализованных представлений).

Сценарии применения​

Временные таблицы подходят для следующих сценариев обработки данных:

  • Разбиение сложных SQL-запросов: разбивайте большой запрос на несколько этапов и последовательно материализуйте промежуточные результаты, чтобы снизить сложность отдельного SQL-оператора.
  • Временное хранение промежуточных результатов: сохраняйте промежуточные результаты вычислений при выполнении ETL, исследовании данных или разработке отчётов, чтобы избежать повторных вычислений.
  • Отладка и проверка данных: материализуйте результат каждого этапа, чтобы упростить его просмотр и проверку и облегчить отладку.
  • Обработка данных с изоляцией на уровне сеанса: используйте временные таблицы, когда данные должны быть видны только в пределах сеанса и автоматически удаляться при его завершении, чтобы не оставлять ненужные данные.

Использование​

Создание временной таблицы​

Временными можно объявить таблицы с любой моделью данных, включая Unique, Aggregate и Duplicate. Чтобы создать временную таблицу, добавьте ключевое слово TEMPORARY в следующие SQL-операторы:

Операции с временной таблицей​

В остальном работа с временными таблицами практически не отличается от работы с обычными внутренними таблицами. Помимо приведённых выше операторов CREATE, другие операторы DDL и DML не требуют ключевого слова TEMPORARY.

Ограничения​

  • Временные таблицы можно создавать только в Internal Catalog.
  • При создании таблицы ENGINE должен иметь значение OLAP.
  • Изменение временной таблицы с помощью оператора Alter не поддерживается.
  • Из-за ограниченного срока существования временных таблиц создание представлений и материализованных представлений на их основе не поддерживается.
  • Резервное копирование временных таблиц и их синхронизация через Sync Job не поддерживаются.
  • Export, Stream Load, Broker Load, S3 Load, Mysql Load и Routine Load не поддерживаются.
  • При удалении временная таблица удаляется безвозвратно, без помещения в корзину.