Что такое сеансы хранилища SQL?

Сеансы хранилища SQL позволяют определять переменные, создавать временные представления и поддерживать изменения состояния в нескольких запусках запросов. С помощью сеансов можно создавать логику SQL итеративно без необходимости одновременно выполнять все инструкции.

Сеансы можно использовать в следующих контекстах при подключении к хранилищу SQL:

Пример варианта использования

Сеансы позволяют выполнять инструкции по отдельности при сохранении общего состояния. Например, можно объявить переменную, создать временное представление, которое использует эту переменную, а затем запросить представление отдельно.

В следующем примере показан этот рабочий процесс:

-- Statement 1: Declare a variable
DECLARE VARIABLE row_limit = 10;

-- Statement 2: Create a temporary view using the variable
CREATE OR REPLACE TEMPORARY VIEW filtered_data AS
SELECT
  *
FROM
  main.default.sales_data
LIMIT row_limit;

-- Statement 3: Query the temporary view
SELECT
  *
FROM
  filtered_data;

С помощью сеансов можно выполнять каждое выражение по отдельности. Переменные и временные представления остаются доступными, что позволяет итерировать запросы без повторного выполнения всех предыдущих инструкций.

Как работают сеансы

Сеанс создается при запуске запроса в хранилище SQL. Сеансы остаются активными до тех пор, пока команда выполняется по крайней мере один раз в восемь часов. Сеансы сохраняются, даже если хранилище останавливается или перезапускается.

Срок действия сеанса истекает через восемь часов бездействия.

Состояние общего сеанса

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

  • Переменные, объявленные с помощью DECLARE VARIABLE
  • Временные представления, созданные с помощью CREATE TEMPORARY VIEW
  • Временные таблицы, созданные с помощью CREATE TEMPORARY TABLE. См. Временные таблицы в Databricks SQL и Databricks Runtime
  • Параметры среды, такие как текущий каталог и схема
  • Теги запросов, установленные с помощью SET QUERY_TAGS или параметров конфигурации сеанса. См. теги запросов

Область сеанса и совместная работа

Сеансы привязаны как к объекту запроса (запросу, записной книжке или файлу), так и к конкретному хранилищу SQL, к которому он подключен. Все пользователи, которые совместно используют доступ к такому объекту и хранилищу, также используют один и тот же сеанс.

Рассмотрим пример.

  • Пользователь A определяет временное представление в запросе 1 при подключении к хранилищу X.
  • Пользователь B может выполнить команду SQL в запросе 1 на хранилище X, которая ссылается на то же временное представление.
  • Если запрос 1 повторно подключен к другому хранилищу, создается новый сеанс с собственным изолированным состоянием.

Это поведение совместной работы позволяет командам совместно работать над разработкой общих запросов, но это также означает, что изменения, внесенные одним пользователем, влияют на всех остальных пользователей, совместно использующих один сеанс.

Дополнительные ресурсы