SET ПУТЬ

Применимо к:отмечен галочкой «да» Databricks SQL отмечен «да» Databricks Runtime 19 и выше

Путь представляет собой упорядоченный список схем, которые Azure Databricks ищет, когда запрос или оператор DML ссылается на таблицу, представление или функцию без каталога и квалификатора схемы. Неквалифицированный субъект DDL-утверждения — это current_catalog.current_schema, а не поиск по пути, поэтому CREATE TABLE t создаётся t в текущей схеме. Для того, как этот путь применяется к запросам в операторах DDL и к постоянным представлениям, см. раздел Таблица и разрешение представлений. Для рутинных тел см. раздел Функция и разрешение процедур.

Syntax

SET PATH = path_element [, ...]

path_element
  { DEFAULT_PATH |
    SYSTEM_PATH |
    CURRENT_SCHEMA |
    PATH |
    schema_name }

Parameters

  • DEFAULT_PATH

    Ключевое слово, расширяющееся до параметра конфигурации PATH — рабочего пространства по умолчанию, которое наследуют новые сессии. Если параметр не был переопределен, разложение равен system.session, system.builtin, system.ai, CURRENT_SCHEMA.

  • SYSTEM_PATH

    Ключевое слово, расширяющееся на системные схемы: system.builtin, system.ai.

  • CURRENT_SCHEMA

    Виртуальная ссылка на схему, которая разрешается в момент использования с текущим каталогом и текущей схемой (current_catalog().current_schema()). Расширение последовало за изменениями, внесёнными USE CATALOG сессией и USE SCHEMA во время сессии.

  • PATH

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

  • schema_name

    Требуется двухчастное название (catalog.schema) (). Имена с более чем двумя частями разрешены. Однокомпонентное название вызывает INVALID_SQL_PATH_SCHEMA_REFERENCE.

    Каталог и схема не обязательно должны существовать в момент запуска SET PATH. Разрешение имени пропускает недостающие записи и продолжается следующим элементом пути.

Description

Следующие правила определяют, какие элементы SET PATH пути принимаются и как полученный путь влияет на разрешение имён.

  • Дубликаторы: дублирующиеся элементы пути не допускаются. После расширения ключевых слов дубликаты увеличивают DUPLICATE_SQL_PATH_ENTRY.
  • Системные схемы: system.builtin и system.ai содержат встроенные скалярные, настольные и AI-функции. system.session содержит объекты с сессионным масштабом, такие как временные переменные, временные функции и временные представления. Обычно не рекомендуется обойтись system.builtin с тропы.
  • Опущенные схемы: Неквалифицированные имена решаются только против схем на пути. Если вы опускаете CURRENT_SCHEMA, квалифицируйте постоянные объекты в текущей схеме. Если вы опустите system.builtin или system.aiуточните эти функции, например system.builtin.abs, . Если опускать system.session, не найдётся неквалифицированные временные представления, временные функции и переменные сессии.
  • Представления и процедуры: Постоянные представления, пользовательские функции SQL и SQL SECURITY DEFINER процедуры захватывают путь и CREATE разрешают неквалифицированные имена в своих телах по этому захваченному пути, а не по пути сессии вызывающего. Процедура SQL SECURITY DEFINER опущена system.session в захваченной траектории. Процедура SQL SECURITY INVOKER использует живой путь звонящего. См. Захваченный путь.
  • Осмотр пути: SET PATH; не печатает путь. Используйте current_path.

Examples

Выполните следующие операторы по порядку, потому что поздние операторы строятся на пути, который задали предыдущие.

-- Restore the workspace default.
> SET PATH = DEFAULT_PATH;
> SELECT current_path();
  system.session,system.builtin,system.ai,main.default

-- Restrict the PATH to only the system-provided schemas.
> SET PATH = SYSTEM_PATH;
> SELECT current_path();
  system.builtin,system.ai

-- Append a schema to the existing PATH without restating it.
> SET PATH = PATH, libraries.pgsql;
> SELECT current_path();
  system.builtin,system.ai,libraries.pgsql

-- Put the current schema ahead of the system schemas so that user-defined
-- functions shadow built-in functions of the same name.
> SET PATH = CURRENT_SCHEMA, PATH;
> SELECT current_path();
  main.default,system.builtin,system.ai,libraries.pgsql

Следующие операторы не работают и не меняют путь.

-- A single-part schema name is rejected.
> SET PATH = my_schema;
  [INVALID_SQL_PATH_SCHEMA_REFERENCE]

-- A duplicate path element raises an error after expansion.
> SET PATH = SYSTEM_PATH, system.builtin;
  [DUPLICATE_SQL_PATH_ENTRY]