名稱
適用於:Databricks SQL Databricks Runtime
識別 Azure Databricks 中不同類型的物件。
下列限制適用於 Unity Catalog中的所有物件名稱:
- 物件名稱不能超過 255 個字元。
- 不允許下列特殊字元:
- 期間 (
.
) - 空間 (
- 正斜線 (
/
) - 所有 ASCII 控制字元 (00-1F 十六進位)
- DELETE 字元 (7F 十六進位)
- 期間 (
- Unity Catalog 將所有物件名稱儲存為小寫。
- 在 SQL 中參考 UC 名稱時,您必須使用反引號來逸出包含特殊字元的名稱,例如連字元 (
-
)。
注意
Column 名稱可以使用特殊字元,但如果使用特殊字元,則必須在所有 SQL 語句中使用反引號來跳脫名稱。 Unity Catalog 會保留 column 名稱大小寫,但 Unity Catalogtables 的查詢不區分大小寫。
連線名稱
識別外部連線。
外部連線可作為外部系統的連結,例如 PostgreSQL
,然後可用來參考其 catalogs、架構和 tables。
語法
connection_identifier
Parameters
- connection_identifier:用以唯一識別連線的 identifier。
範例
> CREATE CONNECTION my_postgresql ...;
Catalog 名稱
辨識 catalog。 catalog 提供物件的群組,這些物件可以進一步細分成架構。
語法
catalog_identifier
Parameters
- catalog_identifier:能唯一識別 catalog的識別碼 identifier。
範例
> USE CATALOG hive_metastore;
> CREATE CATALOG mycatalog;
-- Creating a catalog with a special character requires back ticks
> CREATE CATALOG `cat-a-log`;
-- Creating a catalog with non ASCII characters requires back ticks
> USE `目录`;
-- space (' '), '/', and '.' are not allowed in catalog names, even with back ticks.
> CREATE CATALOG `cat a log`;
ERROR
Schema 名稱
識別對象:schema。 schema 會在 catalog中提供 物件的群組。
語法
{ [ catalog_name . ] schema_identifier |
IDENTIFIER clause }
Parameters
- catalog_name:現有 catalog的名稱。
- schema_identifier:一個可以唯一識別 schema的 identifier。
-
IDENTIFIER 子句:常數
STRING
與 schema 名稱的對應。
在 中 hive_metastore
建立的架構只能包含英數位元 ASCII 字元和底線(INVALID_SCHEMA_OR_RELATION_NAME)。
範例
> USE SCHEMA default;
> CREATE SCHEMA my_sc;
-- In Hive Metastore, schema names must only consist of ASCII letters, digits and '_'
> CREATE SCHEMA hive_metastore.`a-b`;
Error: INVALID_SCHEMA_OR_RELATION_NAME
-- In Unity Catalog only space (' '), '/', and '.' are not allowed
> CREATE SCHEMA main.`a-b`;
> CREATE SCHEMA `a b`;
Error
-- Use back-ticks to reference or create schemas in Unity Catalog with non-ASCII characters
> CREATE SCHEMA `数据库架构`;
資料庫名稱
名稱 schema 的同義字是。
雖然 使用 SCHEMA
和 DATABASE
是可互換的, SCHEMA
但偏好使用 。
Table 名稱
識別 table 物件。 table 可以用 schema 名稱來 限定,或是使用簡單的 identifier來維持 不限定的。
語法
{ [ schema_name . ] table_identifier |
IDENTIFIER clause |
{ file_format | `file_format` } . `path_to_table` } [ temporal_spec ] [ options_spec ] }
temporal_spec
{
@ timestamp_encoding |
@V version |
[ FOR ] { SYSTEM_TIMESTAMP | TIMESTAMP } AS OF timestamp_expression |
[ FOR ] { SYSTEM_VERSION | VERSION } AS OF version
}
options_spec
WITH ( { option_key [ = ] option_val } [, ...] )
option_key
{ identifier [. ...] | string_literal }
Parameters
schema_name:包含 table的限定或未限定 schema 名稱。
table_identifier:一個 identifier,用於指定 table 或 table_alias的名稱。
file_format:、
json
、、csv
、avro
parquet
、orc
、binaryFile
、text
、(不區分大小寫)的其中一個delta
。path_to_table:文件系統中 table 的位置。 您必須擁有
ANY_FILE
使用此語法的許可權。IDENTIFIER 子句:常數
STRING
與 table 名稱的對應。temporal_spec:使用時參考指定時間點或版本上的 Delta table。
您只能在查詢或 MERGE USING 的內容中使用時態規格。
option_spec:使用 時,定義要傳遞至數據源的指示詞,例如認證來存取儲存位置或
'write.split-size'
控制INSERT
行為。option_key
Option 鍵。 索引鍵可以包含一或多個 以點分隔的標識碼 ,或字串常值。
Option 鍵必須是唯一的,而且區分大小寫。
option_val
該選項的值。 、、
BOOLEAN
或STRING
類型的INTEGER
DECIMAL
常數運算式。
hive_metastore
中建立的 Tables 只能包含英數位元 ASCII 字元,也就是英文大小寫字母、數字和底線符號(INVALID_SCHEMA_OR_RELATION_NAME)。
如果名稱不合格,且未參考已知的 table 別名,Azure Databricks 會先嘗試解析目前 schema中的 table。
如果名稱以 schema限定,Azure Databricks 會嘗試解析目前 catalog中的 table。
如需名稱解析的更多資訊,請參閱 Table 並查看解析方案。
如果您對 table 使用 temporal_spec
,而 table 並非 Delta Lake 格式,Azure Databricks 就會引發錯誤。
範例
-- A back quoted table name
> SELECT * FROM `Employees`;
-- A table name without back quotes
> SELECT * FROM employees;
-- A schema qualified table name
> SELECT * FROM hr.employees;
-- A schema qualified table name with back quotes for schema and table
> SELECT * FROM `hr`.`employees`;
-- A fully qualified table name
> SELECT * FROM hive_metastore.default.tab;
-- A reference to an information schema table.
> SELECT * FROM system.information_schema.columns;
-- Referencing a path as a table requires back ticks
> SELECT * FROM delta.`somedir/delta_table`;
> SELECT * FROM `csv`.`spreadsheets/data.csv`;
> SELECT * FROM `csv`.`spreadsheets/data.csv` WITH (CREDENTIAL some_credential)
> INSERT INTO t WITH ('write.split-size' 10) SELECT * FROM s;
-- Tables in `hive_metastore` can only contain alphanumeric ASCII characters and underscores
> CREATE TABLE hive_metastore.default.t1(c1 INT);
> CREATE TABLE hive_metastore.default.`表一`(c1 INT);
Error: INVALID_SCHEMA_OR_RELATION_NAME
-- Use back-ticks to reference or create tables in Unity Catalog with non ASCII characters
> CREATE TABLE main.`瑞赛奇`.`表一`(c1 INT);
檢視表名稱
識別檢視。 檢視可以使用 schema 名稱進行 限定,或者使用簡單的 identifier來進行 無限限定。
語法
{ [ schema_name . ] view_identifier |
IDENTIFIER clause }
Parameters
- schema_name:檢視所在的 schema 的限定名稱或未限定名稱。
- view_identifier:指定檢視名稱或 CTE檢視 identifier 的 identifier。
-
IDENTIFIER 子句:常數
STRING
與檢視名稱的映射。
hive_metastore
中建立的 Views 只能包含字母、數字的 ASCII 字元和底線(INVALID_SCHEMA_OR_RELATION_NAME)。
範例
-- A back quoted view name
> SELECT * FROM `Employees`;
-- A view name without back quotes
> SELECT * FROM employees;
-- A schema qualified view name
> SELECT * FROM hr.employees;
-- A schema qualified view name with back quotes for schema and table
> SELECT * FROM `hr`.`employees`;
-- A fully qualified view name
> SELECT * FROM hive_metastore.default.tab;
-- Views in `hive_metastore` can only contain alphanumeric ASCII characters and underscores
> CREATE VIEW hive_metastore.default.v1(c1) AS SELECT 1;
> CREATE VIEW hive_metastore.default.`数据库视图一`(c1 INT);
Error: INVALID_SCHEMA_OR_RELATION_NAME
-- Use back-ticks to reference or create tables in Unity Catalog with non ASCII characters
> CREATE VIEW main.`瑞赛奇`.`数据库视图一`(c1) AS SELECT 1;
Column 名稱
識別位於 table 或視圖中的 column。 column 可以使用 table 或檢視名稱來 限定,或使用簡單的 identifier,不合格的。
語法
{ [ { table_name | view_name } . ] column_identifier |
IDENTIFIER clause }
Parameters
- table_name:包含 column之 table 限定或未限定 table 名稱。
- view_name:包含 column之檢視的限定或未限定檢視名稱。
- column_identifier:identifier 指定 column的名稱。
-
IDENTIFIER 子句:常數
STRING
與 column 名稱的對應。
識別 column 必須存在於 table 或視圖內。
Azure Databricks 支援特殊 _metadata column。 此 型別結構的虛擬 column 是每個 table 的一部分,可用來擷取 table中數據列的相關元數據資訊。
警告
如果 tableschema 包含名為 _metadata
的 column,查詢會從數據源傳回 column,而不是檔案元數據。
_metadata
的虛擬 column 將無法存取。
Column 在 Delta Lake tables 中,沒有 column 對應屬性('delta.columnMapping.mode' = 'name'
)的名稱不得包含字元 ' '
(空格)、','
、';'
、'{'
、'}'
、'('
、')'
。
'\n'
'\t'
和 '='
。
AVRO
tables 中的 Column 名稱開頭必須是 '_'
或 Unicode 字母(包括非 ASCII 字母),後面接著 '_'
、Unicode 字母和數位的組合。
範例
-- 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 _metadata to retrieve information about rows retrieved from T.
> CREATE TABLE T(c1 INT);
> INSERT INTO T VALUES(1);
> SELECT T._metadata.file_size;
574
-- A delimited column name
> CREATE TABLE T(`sütun1`);
欄位名稱
識別結構內的欄位。 欄位必須符合包含欄位之結構的路徑。
語法
{ expr { . field_identifier [. ...] } |
IDENTIFIER clause }
Parameters
- expr:STRUCT 類型的表達式。
- field_identifier:用來指定欄位名稱的 identifier。
-
IDENTIFIER 子句:常數
STRING
與欄位名稱的對應。
您可以藉由指定沿著根結構路徑 identifier 欄位來參考深度巢狀字段。
Delta Lake tables 中不含 column 對應屬性 ('delta.columnMapping.mode' = 'name'
) 的欄位名稱不得包含字元 ' '
、','
、';'
、'{'
、'}'
、'('
、')'
。
'\n'
'\t'
和 '='
。
AVRO
tables 中的欄位名稱必須以 '_'
或 Unicode 字母開頭(包括非 ASCII 字母),後面接著 '_'
、Unicode 字母和數字的組合。
範例
> SELECT addr.address.name
FROM VALUES (named_struct('address', named_struct('number', 5, 'name', 'Main St'),
'city', 'Springfield')) as t(addr);
Main St
-- Delimited field names with non ASCII letters
> CREATE TABLE T(c1 struct<`атрибут1` INT, `атрибут2`>);
> SELECT c1.`атрибут1` FROM T;
變數名稱
識別暫存(會話)變數。
變數可以以 schema 名稱 稱作(system.session
或 session
),或使用簡單的 identifier來做為 非限定的。
語法
{ [ schema_name . ] variable_identifier |
IDENTIFIER clause }
Parameters
-
schema_name:
system.session
或session
包含所有暫存變數。 - variable_identifier:用來指定變數名稱的 identifier。
範例
-- Declaring a session variable with a qualified name.
> DECLARE session.myvar = 5;
-- Setting a session variable with an unqualified name.
> SET VAR myvar = 6
-- Declaring a session variable with a fully qualified name an non-ASCII characters.
> DECLARE system.session.`圆周率` = 3.14;
函式名稱
識別函式。 函式可以使用 schema 名稱來 限定,或僅使用簡單 identifier名稱來 未限定。
語法
{ [ schema_name . ] function_identifier |
IDENTIFIER clause }
Parameters
- schema_name:包含功能的限定或未限定 schema 名稱。
- function_identifier:指定函式名稱的 identifier。
-
IDENTIFIER 子句:將常數
STRING
映射到函式名稱。
在 中 hive_metastore
建立的函式只能包含英數位元 ASCII 字元和底線。
範例
-- Creating a SQL function with a qualified name
> CREATE FUNCTION math.myplus(x INT, y INT) RETURN x + y;
-- Invoking a function with an unqualified name
> SELECT myplus()
-- Creating a SQL function with non-ASCII characters;
> CREATE FUNCTION `圆周率`() RETURN 3.14;
參數名稱
識別 SQL 使用者定義函數主體中的參數(SQL UDF)。 函式可以用函式 identifier來 修飾,或使用簡單的 identifier未修飾的。
語法
[ function_identifier . ] parameter_identifier
Parameters
- function_identifier:指定函式名稱的 identifier。
- parameter_identifier:用來指定參數名稱的 identifier。
範例
-- Create a function with undelimited parameters and reference them as qualified and nonqualified.
> CREATE FUNCTION area(x INT, y INT) RETURNS INT
RETURN area.x + y;
-- Create a function with non-ASCII character parameters
> CREATE FUNCTION full_name(`prénom` STRING, `nom` STRING) RETURNS STRING
RETURN `prénom` + ' ' + `nom`;
Table 別名
將 table 參考、查詢、table 函式或其他形式的關聯加上標籤。
語法
[ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]
Parameters
- table_identifier:指定 table名稱的 identifier。
- column_identifierN:選擇性 identifier,指定 column的名稱。
如果您提供 column 標識碼,其編號必須符合相符關聯中的 columns 數目。
如果您沒有提供 column 識別碼,其名稱會繼承自加上標籤的關聯。
範例
-- Defining a table alias with column list
> SELECT a, b FROM VALUES (1, 2) AS t(a, b);
a b
1 2
-- Defining a table alias without column list
> DELETE FROM emp AS e WHERE e.c1 = 5;
-- Defining a table alias with non ASCII characters
> SELECT * FROM employee AS `직원`;
Column 別名
在 SELECT
list 中標記 表示式的結果 以供參考。
如果表達式是 table 值的生成器函式,則別名會將 columns 產生的 list 標記。
語法
[AS] column_identifier
[AS] ( column_identifier [, ...] )
Parameters
- column_identifier:用於指定 column名稱的 identifier。
雖然 column 別名在 selectlist中不需要是唯一的,但是要依名稱參考別名,唯一性是必須的。
範例
-- An undelimited alias
> SELECT 1 AS a;
a
1
> SELECT 1 a, 2 b;
a b
1 2
-- A delimited alias with non-ASCII characters
> SELECT 3.14 AS `圆周率`;
a
1
-- Referencing a passed column alias
> SELECT a + a FROM (SELECT 1 AS a);
a
2
定序名稱
確定 column 或表達式的排序規則。
語法
collation_identifier
Parameters
- collation_identifier:指定定序名稱的 identifier。
如需支援的排序規則 list,請參閱 支援的排序規則。 如需排序規則的詳細資訊,請參閱 排序方式。
範例
> SELECT 'hello' COLLATE UNICODE_CI;
hello
認證名稱
識別認證,以使用提供者 SDK 存取外部位置或雲端服務的記憶體。
語法
credential_identifier
Parameters
- credential_identifier:唯一識別該認證的無條件 identifier。
範例
`my_storage_cred`
my_storage_cred
位置名稱
識別外部儲存位置。
語法
location_identifier
Parameters
- location_identifier:唯一識別位置的不合格 identifier。
範例
`s3-json-data`
s3_json_data
共用名稱
識別共用以存取提供者共享的數據。
語法
share_identifier
Parameters
- share_identifier:唯一識別共用的不合格 identifier。
範例
`public info`
`public-info`
public_info
提供者名稱
識別差異共用提供者。
語法
provider_identifier
Parameters
-
可唯一識別提供者的不合格 identifier。
範例
`Good Corp`
`Good-corp`
Good_Corp
收件者名稱
識別共用的收件者。
語法
recipient_identifier
Parameters
- recipient_identifier:可唯一識別收件者的不合格 identifier。
範例
`Good Corp`
`Good-corp`
Good_Corp
清理室名稱
識別共同作業者 set 的乾淨空間。
語法
clean_room_identifier
Parameters
- clean_room_identifier:不合格的 identifier,可唯一指定共同作業者 metastores 的乾淨空間。
範例
`Clean-Room`
Clean_Room
磁碟區名稱
識別 Unity Catalog 磁碟區。 磁碟區可以藉由 schema 名稱來 符合 規範,或使用簡單的 identifier來 不合格的。
語法
[ schema_name .] volume_identifier
Parameters
- schema_name:包含磁碟區的限定或未限定 schema 名稱。
- volume_identifier:不合格的 identifier,可唯一識別 schema內的磁碟區。
範例
`myVolume`
`my-volume`
myschema.myVolume
my_unity_catalog.my_schema.my_volume