이름
적용 대상: Databricks SQL Databricks Runtime
Azure Databricks에서 다양한 종류의 개체를 식별합니다.
Unity Catalog모든 개체 이름에 다음 제한 사항이 적용됩니다.
- 개체 이름은 255자를 초과할 수 없습니다.
- 다음 특수 문자는 허용되지 않습니다.
- 기간(
.
) - 공백(
- 슬래시(
/
) - 모든 ASCII 컨트롤 문자(00-1F 16진수)
- DELETE 문자(7F 16진수)
- 기간(
- Unity Catalog 모든 개체 이름을 소문자로 저장합니다.
- SQL에서 UC 이름을 참조하는 경우 백틱을 사용하여 하이픈(
-
)과 같은 특수 문자가 포함된 이름을 이스케이프해야 합니다.
참고 항목
Column 이름은 특수 문자를 사용할 수 있지만 특수 문자를 사용하는 경우 모든 SQL 문에서 백틱을 사용하여 이름을 이스케이프해야 합니다. Unity Catalogcolumn 이름 대/소문자를 유지하지만 Unity Catalogtables 대한 쿼리는 대/소문자를 구분하지 않습니다.
연결 이름
외세의 연결을 식별합니다.
외부 연결은 PostgreSQL
같은 외부 시스템에 대한 링크 역할을 하며, catalogs, 스키마 및 tables를 참조할 수 있습니다.
구문
connection_identifier
Parameters
- 연결_식별자: 연결을 고유하게 식별하는 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 개체를 식별합니다.
구문
{ [ 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: 사용할 경우, 지정된 특정 시점 또는 버전에서 델타 table를 참조합니다.
쿼리 또는 MERGE USING의 컨텍스트 내에서만 임시 사양을 사용할 수 있습니다.
-
@ timestamp_encoding: 타임스탬프를
yyyyMMddHHmmssSSS
형식으로 인코딩하는 양의 Bigint 리터럴입니다. - @V 버전: Delta table버전을 식별하는 양의 정수 리터럴입니다.
-
timestamp_expression: TIMESTAMP로 계산되는 간단한 식입니다.
timestamp_expressiom
는 상수 식이어야 하지만current_date()
또는current_timestamp()
를 포함할 수 있습니다. - 버전: Delta table의 버전을 식별하는 정수 리터럴 또는 문자열 리터럴입니다.
-
@ timestamp_encoding: 타임스탬프를
option_spec: 사용되는 경우 스토리지 위치에 액세스하거나
'write.split-size'
동작을 제어INSERT
하기 위해 자격 증명과 같은 데이터 원본에 전달할 지시문을 정의합니다.option_key
옵션 키입니다. 키는 점 또는 문자열 리터럴로 구분된 하나 이상의 식별자로 구성될 수 있습니다.
옵션 키는 고유해야 하며 대/소문자를 구분해야 합니다.
option_val
옵션의 값입니다. 형식
BOOLEAN
,STRING
또는INTEGER
DECIMAL
.의 상수 식입니다.
Tables는 hive_metastore
에서 생성된 것으로, 오직 알파벳과 숫자, ASCII 문자, 밑줄만 포함할 수 있습니다(INVALID_SCHEMA_OR_RELATION_NAME).
이름이 정규화되지 않고 알려진 table 별칭를 참조하지 않을 경우, Azure Databricks는 먼저 현재 schema에서 table을 확인하려고 시도합니다.
이름이 schema로 지정된 경우 Azure Databricks는 현재 catalog에서 table을 확인하려고 시도합니다.
이름 확인에 대한 자세한 내용은 및Table을 참고하고, 해상도를 확인하세요.
Azure Databricks는 temporal_spec
를 Delta Lake 형식이 아닌 table로 사용할 경우 오류를 발생시킵니다.
예제
-- 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_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 이름
column을 table 또는 뷰 내에서 식별합니다.
구문
{ [ { table_name | view_name } . ] column_identifier |
IDENTIFIER clause }
Parameters
- table_name: column포함하는 table 정규화되거나 정규화되지 않은 table 이름입니다.
- view_name: column포함하는 보기의 정규화되거나 정규화되지 않은 뷰 이름입니다.
- column_identifier: column의 이름을 지정하는 identifier.
-
IDENTIFIER 절: 상수
STRING
를 column 이름으로 매핑하는 것입니다.
식별된 column은 table 또는 뷰 내에 존재해야 합니다.
Azure Databricks는 특수한 _metadata column를 지원합니다. 형식 구조체의 이 의사 column는 모든 table에 속하며 table의 행에 대한 메타데이터 정보를 검색하는 데 사용할 수 있습니다.
Warning
table
schema이 _metadata
이라고 명명된 column를 포함하는 경우, 쿼리는 파일 메타데이터가 아닌 데이터 원본의 column를 반환합니다.
_metadata
의사 column에 접근할 수 없습니다.
column 매핑 속성('delta.columnMapping.mode' = 'name'
)이 없는 Delta Lake tablesColumn 이름에는 ' '
(공백), ','
, ';'
, '{'
, '}'
, '('
, ')'
문자가 포함되어서는 안 됩니다.
'\n'
, '\t'
및 '='
.
AVRO
tables
Column 이름은 '_'
또는 유니코드 문자(비 ASCII 문자 포함)로 시작하고 '_'
, 유니코드 문자 및 숫자의 조합으로 시작해야 합니다.
예제
-- 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 필드를 지정하여 깊이 중첩된 필드를 참조할 수 있습니다.
column 매핑 속성('delta.columnMapping.mode' = 'name'
)이 없는 Delta Lake tables 필드 이름에는 ' '
(공간), ','
, ';'
, '{'
, '}'
, '('
, ')'
문자가 포함되어서는 안 됩니다.
'\n'
, '\t'
및 '='
.
AVRO
tables 필드 이름은 '_'
또는 유니코드 문자(비 ASCII 문자 포함)로 시작하고 '_'
, 유니코드 문자 및 숫자의 조합으로 시작해야 합니다.
예제
> 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_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 UDF(SQL 사용자 정의 함수)의 본문에서 매개 변수를 식별합니다. 함수는 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: column의 이름을 지정하는 선택적 identifier.
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
공급자 이름
Delta Sharing 공급자를 식별합니다.
구문
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_name .] volume_identifier
Parameters
- schema_name: 볼륨을 포함하는, 정규화된 혹은 비정규화된 schema 이름입니다.
- volume_identifier: schema내에서 볼륨을 고유하게 식별하는 자격이 없는 identifier.
예제
`myVolume`
`my-volume`
myschema.myVolume
my_unity_catalog.my_schema.my_volume