適用於:
Databricks SQL
執行時間 19 及以上
路徑是 Azure Databricks 搜尋的有序結構清單,當查詢或 DML 語句引用沒有目錄與 schema 限定符的表格、檢視或函式時。 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 CATALOGUSE SCHEMA變更而來。PATH
一個關鍵字,會擴展到目前的會話路徑。 用它來延長路徑,但不必重複內容。
-
需要一個兩部分的名稱(
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]