名稱
適用于: Databricks SQL Databricks Runtime
識別 Azure Databricks 中不同類型的物件。
下列限制適用于 Unity 目錄中的所有物件名稱:
- 物件名稱不能超過 255 個字元。
- 不允許下列特殊字元:
- 期間 (
.
) - 空間 (
- 正斜線 (
/
) - 所有 ASCII 控制字元 (00-1F 十六進位)
- DELETE 字元 (7F 十六進位)
- 期間 (
- Unity 目錄會將所有物件名稱儲存為小寫。
- 在 SQL 中參考 UC 名稱時,您必須使用反引號來逸出包含特殊字元的名稱,例如連字號 (
-
)。
注意
資料行名稱可以使用特殊字元,但如果使用特殊字元,則必須在所有 SQL 語句中使用反引號來逸出名稱。 Unity 目錄會保留資料行名稱大小寫,但 Unity 目錄資料表的查詢不區分大小寫。
連線名稱
識別外部連線。
外部連線可作為外部系統的連結,例如 PostgreSQL
,然後可用來參考其目錄、架構和資料表。
語法
connection_identifier
參數
- connection_identifier :可唯一識別連接的識別碼。
範例
> CREATE CONNECTION my_postgresql ...;
目錄名稱
識別目錄。 目錄提供物件群組,這些物件可以進一步細分成架構。
語法
catalog_identifier
參數
- 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;
資料庫名稱
架構名稱 的 同義字。
雖然 使用 SCHEMA
和 DATABASE
是可互換的, 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:、
csv
、avro
、parquet
orc
、binaryFile
、、text
、delta
、(不區分大小寫)的其中一個json
。path_to_table:檔案系統中資料表的位置。 您必須擁有
ANY_FILE
使用此語法的許可權。IDENTIFIER 子句 :常數
STRING
與資料表名稱的對應。temporal_spec :使用 時,參考指定時間點或版本上的 Delta 資料表。
您只能在查詢 或 MERGE USING 的內容 中使用時態規格。
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 }
參數
- schema_name:包含檢視之架構的限定或未限定名稱。
- view_identifier :指定檢視名稱或 CTE 檢視識別碼的 識別碼。
- IDENTIFIER 子句 :常數
STRING
與檢視名稱的對應。
範例
`items`
items
hr.items
`hr`.`items`
資料行名稱
識別資料表或檢視表內的資料行。 資料行可以使用 資料表或檢視名稱限定 ,或使用 簡單的識別碼來限定 。
語法
{ [ { table_name | view_name } . ] column_identifier |
IDENTIFIER clause }
參數
- table_name :包含資料行之資料表的限定或未限定資料表名稱。
- view_name :包含資料行之檢視的限定或未限定檢視名稱。
- column_identifier :指定資料行名稱的識別碼。
- IDENTIFIER 子句 :常數
STRING
與資料行名稱的對應。
識別的資料行必須存在於資料表或檢視表內。
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 }
參數
- expr :STRUCT 類型的運算式。
- field_identifier :指定功能變數名稱的識別碼。
- IDENTIFIER 子句 :常數
STRING
與功能變數名稱的對應。
藉由指定根結構路徑上的欄位識別碼,即可參考深度巢狀欄位。
範例
> 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.session
或session
包含所有暫存變數。 - variable_identifier:指定變數名稱的識別碼。
範例
`session`.myvar
myvar
system.session.`myvar`
函式名稱
識別函式。 函式可以使用 架構名稱限定 ,或使用 簡單的識別碼來限定 。
語法
{ [ schema_name . ] function_identifier |
IDENTIFIER clause }
參數
- schema_name:包含函式的限定或未限定架構名稱。
- function_identifier :指定函式名稱的識別碼。
- IDENTIFIER 子句 :常數
STRING
與函式名稱的對應。
範例
`math`.myplus
myplus
math.`myplus`
參數名稱
識別 SQL 使用者定義函數主體中的參數(SQL UDF)。 函式可以使用 函式識別碼限定 ,或使用 簡單的識別碼來限定 。
語法
[ function_identifier . ] parameter_identifier
參數
範例
CREATE FUNCTION area(x INT, y INT) RETURNS INT
RETURN area.x + y;
資料表別名
標記資料表參考、查詢、資料表函式或其他關聯形式。
語法
[ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]
參數
- table_identifier :指定資料表名稱的識別碼。
- column_identifierN :指定資料行名稱的選擇性識別碼。
如果您提供資料行識別碼,其數目必須符合相符關聯性中的資料行數目。
如果您沒有提供資料行識別碼,其名稱會繼承自加上標籤的關聯性。
範例
> 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 [, ...] )
參數
- 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
參數
- credential_identifier :唯一識別認證的不合格識別碼。
範例
位置名稱
識別外部儲存位置。
語法
location_identifier
參數
- location_identifier :可唯一識別位置的非限定識別碼。
範例
`s3-json-data`
s3_json_data
共用名稱
識別共用以存取提供者共用的資料。
語法
share_identifier
參數
- share_identifier :可唯一識別共用的非限定識別碼。
範例
`public info`
`public-info`
public_info
提供者名稱
識別差異共用提供者。
語法
provider_identifier
參數
-
可唯一識別提供者的非限定識別碼。
範例
`Good Corp`
`Good-corp`
Good_Corp
收件者名稱
識別共用的收件者。
語法
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