名稱

適用于: check marked yes Databricks SQL check marked yes Databricks Runtime

識別 Azure Databricks 中不同類型的物件。

下列限制適用于 Unity 目錄中的所有物件名稱:

  • 物件名稱不能超過 255 個字元。
  • 不允許下列特殊字元:
    • 期間 ( .
    • 空間 (
    • 正斜線 (/)
    • 所有 ASCII 控制字元 (00-1F 十六進位)
    • DELETE 字元 (7F 十六進位)
  • Unity 目錄會將所有物件名稱儲存為小寫。
  • 在 SQL 中參考 UC 名稱時,您必須使用反引號來逸出包含特殊字元的名稱,例如連字號 ( - )。

注意

資料行名稱可以使用特殊字元,但如果使用特殊字元,則必須在所有 SQL 語句中使用反引號來逸出名稱。 Unity 目錄會保留資料行名稱大小寫,但 Unity 目錄資料表的查詢不區分大小寫。

連線名稱

識別外部連線。 外部連線可作為外部系統的連結,例如 PostgreSQL ,然後可用來參考其目錄、架構和資料表。

語法

connection_identifier

參數

範例

> CREATE CONNECTION my_postgresql ...;

目錄名稱

識別目錄。 目錄提供物件群組,這些物件可以進一步細分成架構。

語法

catalog_identifier

參數

範例

> USE CATALOG hive_metastore;

> CREATE CATALOG mycatalog;

結構描述名稱

識別架構。 架構提供目錄中物件的群組。

語法

{ [ catalog_name . ] schema_identifier |
  IDENTIFIER clause }

參數

  • catalog_name :現有目錄的名稱。
  • schema_identifier:可唯一識別架構的識別碼。
  • IDENTIFIER 子句 :常數 STRING 與架構名稱的對應。

範例

> USE SCHEMA default;

> CREATE SCHEMA my_sc;

資料庫名稱

架構名稱 同義字。

雖然 使用 SCHEMADATABASE 是可互換的, SCHEMA 但偏好使用 。

資料表名稱

識別資料表物件。 資料表可以使用 架構名稱限定 ,或使用 簡單的識別碼來限定

語法

{ [ schema_name . ] table_identifier [ temporal_spec ] |
  IDENTIFIER clause [ temporal_spec ] |
  { file_format | `file_format` } . `path_to_table` [ temporal_spec ] [ credential_spec ] }

temporal_spec
{
  @ timestamp_encoding |
  @V version |
  [ FOR ] { SYSTEM_TIMESTAMP | TIMESTAMP } AS OF timestamp_expression |
  [ FOR ] { SYSTEM_VERSION | VERSION } AS OF version
}

credential_spec
  WITH ( CREDENTIAL credential_name )

參數

  • schema_name :包含資料表的限定或未限定架構名稱。

  • table_identifier:指定資料表或 table_alias 名稱的識別碼。

  • file_format:、 csvavroparquetorcbinaryFile 、、 textdelta 、(不區分大小寫)的其中一個 json

  • path_to_table:檔案系統中資料表的位置。 您必須擁有 ANY_FILE 使用此語法的許可權。

  • IDENTIFIER 子句 :常數 STRING 與資料表名稱的對應。

  • temporal_spec :使用 時,參考指定時間點或版本上的 Delta 資料表。

    您只能在查詢 MERGE USING 的內容 中使用時態規格。

    • @ timestamp_encoding :以格式編碼時間戳記 yyyyMMddHHmmssSSS 的正 Bigint 常值。
    • @V版本 :識別 Delta 資料表版本的正整數常值。
    • timestamp_expression:評估為 TIMESTAMP 的簡單運算式。 timestamp_expressiom 必須是常數運算式,但可能包含 current_date()current_timestamp()
    • version :識別 Delta 資料表版本的整數常值或字串常值。
  • credential_spec

    您可以使用適用的認證來存取 path_to_table 未內嵌于外部位置

如果名稱不限定且未參考已知的 資料表別名 ,Azure Databricks 會先嘗試解析目前架構中的資料表。

如果名稱以架構限定,Azure Databricks 會嘗試解析目前目錄中的資料表。

如需名稱解析的詳細資訊,請參閱 資料表和檢視解析

如果您針對不是 Delta Lake 格式的資料表使用 , temporal_spec Azure Databricks 就會引發錯誤。

範例

`Employees`

employees

hr.employees

`hr`.`employees`

hive_metastore.default.tab

system.information_schema.columns

delta.`somedir/delta_table`

`csv`.`spreadsheets/data.csv`

`csv`.`spreadsheets/data.csv` WITH (CREDENTIAL some_credential)

檢視表名稱

識別檢視。 檢視可以使用 架構名稱限定 ,或使用 簡單的識別碼來限定

語法

{ [ schema_name . ] view_identifier |
  IDENTIFIER clause }

參數

範例

`items`

items

hr.items

`hr`.`items`

資料行名稱

識別資料表或檢視表內的資料行。 資料行可以使用 資料表或檢視名稱限定 ,或使用 簡單的識別碼來限定

語法

{ [ { table_name | view_name } . ] column_identifier |
  IDENTIFIER clause }

參數

識別的資料行必須存在於資料表或檢視表內。

Azure Databricks 支援特殊的 _metadata資料行 。 此 結構類型的虛擬資料 行是每個資料表的一部分,可用來擷取資料表中資料列的相關中繼資料資訊。

警告

如果資料表架構包含名為 _metadata 的資料行,查詢會從資料來源傳回資料行,而不是檔案中繼資料。 _metadata無法存取虛擬資料行。

範例

-- An unqualified column name
> SELECT c1 FROM VALUES(1) AS T(c1);
 c1
 1

-- A qualified column name
> SELECT T.c1 FROM VALUES(1) AS T(c1);
 c1
 1

-- Using _matadata to retrieve infromation about rows retrieved from T.
> CREATE TABLE T(c1 INT);
> INSERT INTO T VALUES(1);
> SELECT T._metadata.file_size;
  574

欄位名稱

識別結構內的欄位。 欄位必須 符合包含欄位之結構的路徑。

語法

{ expr { . field_identifier [. ...] } |
  IDENTIFIER clause }

參數

藉由指定根結構路徑上的欄位識別碼,即可參考深度巢狀欄位。

範例

> SELECT addr.address.name
    FROM VALUES (named_struct('address', named_struct('number', 5, 'name', 'Main St'),
                              'city', 'Springfield')) as t(addr);
  Main St

變數名稱

識別暫存(會話)變數。 變數可以使用 架構名稱 ( system.session 或 ) session 限定,或使用 簡單的識別碼來限定

語法

{ [ schema_name . ] variable_identifier |
  IDENTIFIER clause }

參數

  • schema_name system.sessionsession 包含所有暫存變數。
  • variable_identifier:指定變數名稱的識別碼。

範例

`session`.myvar

myvar

system.session.`myvar`

函式名稱

識別函式。 函式可以使用 架構名稱限定 ,或使用 簡單的識別碼來限定

語法

{ [ schema_name . ] function_identifier |
  IDENTIFIER clause }

參數

範例

`math`.myplus

myplus

math.`myplus`

參數名稱

識別 SQL 使用者定義函數主體中的參數(SQL UDF)。 函式可以使用 函式識別碼限定 ,或使用 簡單的識別碼來限定

語法

[ function_identifier . ] parameter_identifier

參數

  • function_identifier:指定函式名稱的識別碼。
  • parameter_identifier:指定參數名稱的識別碼。

範例

CREATE FUNCTION area(x INT, y INT) RETURNS INT
RETURN area.x + y;

資料表別名

標記資料表參考、查詢、資料表函式或其他關聯形式。

語法

[ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]

參數

如果您提供資料行識別碼,其數目必須符合相符關聯性中的資料行數目。

如果您沒有提供資料行識別碼,其名稱會繼承自加上標籤的關聯性。

範例

> SELECT a, b FROM VALUES (1, 2) AS t(a, b);
 a  b
 1  2

> DELETE FROM emp AS e WHERE e.c1 = 5;

資料行別名

在清單中標記運算式 SELECT 的結果 以供參考。

如果運算式是 資料表值產生器函 式,則別名會將產生的資料行清單標示為標籤。

語法

[AS] column_identifier
[AS] ( column_identifier [, ...] )

參數

雖然資料行別名在選取清單中不需要是唯一的,但唯一性是依名稱參考別名的需求。

範例

> SELECT 1 AS a;
 a
 1

> SELECT 1 a, 2 b;
 a b
 1 2

> SELECT 1 AS `a`;
 a
 1

> SELECT posexplode(array(2)) AS (i, a);
 i  a
 0  2

> SELECT a + a FROM (SELECT 1 AS a);
 a
 2

認證名稱

識別在外部位置存取儲存體的認證。

語法

credential_identifier

參數

範例

位置名稱

識別外部儲存位置。

語法

location_identifier

參數

範例

`s3-json-data`

s3_json_data

共用名稱

識別共用以存取提供者共用的資料。

語法

share_identifier

參數

範例

`public info`

`public-info`

public_info

提供者名稱

識別差異共用提供者。

語法

provider_identifier

參數

範例

`Good Corp`

`Good-corp`

Good_Corp

收件者名稱

識別共用的收件者。

語法

recipient_identifier

參數

  • recipient_identifier:可唯一識別收件者的不合格識別碼。

範例

`Good Corp`

`Good-corp`

Good_Corp

磁碟區名稱

識別 Unity 目錄磁片區。 磁片區可以使用 架構名稱限定 ,或使用 簡單識別碼來限定

語法

[ schema_name .] volume_identifier

參數

  • schema_name:包含磁片區的限定或未限定架構名稱。
  • volume_identifier :可唯一識別架構內磁片區的非限定識別碼。

範例

`myVolume`

`my volume`

myschema.myVolume

my_unity_catalog.my_schema.my_volume