이름
적용 대상: Databricks SQL Databricks Runtime
Azure Databricks에서 다양한 종류의 개체를 식별합니다.
Unity 카탈로그의 모든 개체 이름에는 다음과 같은 제한 사항이 적용됩니다.
- 개체 이름은 255자를 초과할 수 없습니다.
- 다음 특수 문자는 허용되지 않습니다.
- 기간(
.
) - 공백(
- 슬래시(
/
) - 모든 ASCII 컨트롤 문자(00-1F 16진수)
- DELETE 문자(7F 16진수)
- 기간(
- Unity 카탈로그는 모든 개체 이름을 소문자로 저장합니다.
- SQL에서 UC 이름을 참조하는 경우 백틱을 사용하여 하이픈(
-
)과 같은 특수 문자가 포함된 이름을 이스케이프해야 합니다.
참고 항목
열 이름은 특수 문자를 사용할 수 있지만 특수 문자를 사용하는 경우 모든 SQL 문에서 백틱을 사용하여 이름을 이스케이프해야 합니다. Unity 카탈로그는 열 이름 대/소문자를 유지하지만 Unity 카탈로그 테이블에 대한 쿼리는 대/소문자를 구분하지 않습니다.
연결 이름
외세의 연결을 식별합니다.
외세의 연결은 외세의 시스템에 대한 링크 역할을 하며, PostgreSQL
그런 다음 카탈로그, 스키마 및 테이블을 참조하는 데 사용할 수 있습니다.
구문
connection_identifier
매개 변수
예제
> CREATE CONNECTION my_postgresql ...;
카탈로그 이름
카탈로그를 식별합니다. 카탈로그는 스키마로 더 세분화할 수 있는 개체 그룹을 제공합니다.
구문
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
스키마 이름
스키마를 식별합니다. 스키마는 카탈로그의 개체 그룹을 제공합니다.
구문
{ [ catalog_name . ] schema_identifier |
IDENTIFIER clause }
매개 변수
- catalog_name: 기존 카탈로그의 이름입니다.
- schema_identifier: 스키마를 고유하게 식별하는 식별자입니다.
- IDENTIFIER 절: 스키마 이름에 대한 상수
STRING
매핑입니다.
생성된 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
와 DATABASE
는 동일하게 사용할 수 있지만 SCHEMA
를 사용하는 것이 좋습니다.
테이블 이름
테이블 개체를 식별합니다. 테이블은 스키마 이름으로 정규화되거나 간단한 식별자를 사용하여 정규화되지 않을 수 있습니다.
구문
{ [ 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 }
매개 변수
schema_name: 테이블을 포함하는 정규화되거나 정규화되지 않은 스키마 이름입니다.
table_identifier: 테이블 또는 table_alias 이름을 지정하는 식별자입니다.
file_format:
json
,csv
,avro
,parquet
,orc
,binaryFile
,text
,delta
중 하나(대/소문자를 구분하지 않음).path_to_table: 파일 시스템의 테이블 위치입니다. 이 구문을 사용하려면
ANY_FILE
권한이 있어야 합니다.IDENTIFIER 절: 테이블 이름에 대한 상수
STRING
매핑입니다.temporal_spec: 사용된 경우 지정된 시점 또는 버전의 델타 테이블을 참조합니다.
쿼리 또는 MERGE USING의 컨텍스트 내에서만 임시 사양을 사용할 수 있습니다.
- @ timestamp_encoding: 타임스탬프를
yyyyMMddHHmmssSSS
형식으로 인코딩하는 양의 Bigint 리터럴입니다. - @V 버전: 델타 테이블의 버전을 식별하는 양의 정수 리터럴입니다.
- timestamp_expression: TIMESTAMP로 계산되는 간단한 식입니다.
timestamp_expressiom
는 상수 식이어야 하지만current_date()
또는current_timestamp()
를 포함할 수 있습니다. - 버전: 델타 테이블의 버전을 식별하는 정수 리터럴 또는 문자열 리터럴입니다.
- @ timestamp_encoding: 타임스탬프를
option_spec: 사용되는 경우 스토리지 위치에 액세스하거나
'write.split-size'
동작을 제어INSERT
하기 위해 자격 증명과 같은 데이터 원본에 전달할 지시문을 정의합니다.option_key
옵션 키입니다. 키는 점 또는 문자열 리터럴로 구분된 하나 이상의 식별자로 구성될 수 있습니다.
옵션 키는 고유해야 하며 대/소문자를 구분해야 합니다.
option_val
옵션의 값입니다. 형식
BOOLEAN
,STRING
또는INTEGER
DECIMAL
.의 상수 식입니다.
hive_metastore
에서 생성된 테이블에는 영숫자 ASCII 문자와 밑줄(INVALID_SCHEMA_OR_RELATION_NAME)만 포함될 수 있습니다.
이름이 정규화되지 않고 알려진 테이블 별칭을 참조하지 않는 경우 Azure Databricks는 먼저 현재 스키마에서 테이블을 확인하려고 시도합니다.
이름이 스키마로 정규화된 경우 Azure Databricks는 현재 카탈로그에서 테이블을 확인하려고 시도합니다.
이름 확인에 대한 자세한 내용은 테이블 및 뷰 확인을 참조하세요.
Delta Lake 형식이 아닌 테이블에 대해 temporal_spec
를 사용하는 경우 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_name . ] view_identifier |
IDENTIFIER clause }
매개 변수
- schema_name: 뷰를 포함하는 스키마의 정규화 또는 정규화되지 않은 이름입니다.
- view_identifier: CTE의 뷰 이름 또는 뷰 식별자를 지정하는 식별자입니다.
- IDENTIFIER 절: 뷰 이름에 대한 상수
STRING
매핑입니다.
생성된 뷰에는 hive_metastore
영숫자 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;
열 이름
테이블 또는 뷰 내의 열을 식별합니다. 열은 테이블 또는 뷰 이름으로 정규화되거나 간단한 식별자를 사용하여 정규화되지 않을 수 있습니다.
구문
{ [ { table_name | view_name } . ] column_identifier |
IDENTIFIER clause }
매개 변수
- table_name: 열을 포함하는 테이블의 정규화 또는 정규화되지 않은 테이블 이름입니다.
- view_name: 열을 포함하는 뷰의 정규화 또는 정규화되지 않은 보기 이름입니다.
- column_identifier: 열의 이름을 지정하는 식별자입니다.
- IDENTIFIER 절: 열 이름에 대한 상수
STRING
매핑입니다.
식별된 열은 테이블 또는 뷰 내에 있어야 합니다.
Azure Databricks는 특별한 _metadata 열을 지원합니다. 형식 구조체의 이 의사 열은 모든 테이블의 일부이며 테이블의 행에 대한 메타데이터 정보를 검색하는 데 사용할 수 있습니다.
Warning
테이블 스키마에 명명 _metadata
된 열이 포함된 경우 쿼리는 파일 메타데이터가 아닌 데이터 원본의 열을 반환합니다. _metadata
의사 열에 액세스할 수 없습니다.
열 매핑 속성()이 없는 Delta Lake 테이블의 열 이름에는 문자('delta.columnMapping.mode' = 'name'
space), ','
, , '{'
';'
, '}'
, '('
')'
.' '
'\n'
, '\t'
및 '='
.
테이블의 AVRO
열 이름은 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 }
매개 변수
- expr: STRUCT 형식의 식입니다.
- field_identifier: 필드의 이름을 지정하는 식별자입니다.
- IDENTIFIER 절: 필드 이름에 대한 상수
STRING
매핑입니다.
루트 구조체의 경로를 따라 필드 식별자를 지정하여 깊이 중첩된 필드를 참조할 수 있습니다.
열 매핑 속성('delta.columnMapping.mode' = 'name'
)이 없는 Delta Lake 테이블의 필드 이름에는 문자 ' '
(space), ','
, , ';'
'{'
, '}'
, . ')'
'('
'\n'
, '\t'
및 '='
.
테이블의 AVRO
필드 이름은 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;
변수 이름
임시(세션) 변수를 식별합니다.
변수는 스키마 이름(system.session
또는session
)으로 정규화되거나 단순 식별자를 사용하여 정규화되지 않을 수 있습니다.
구문
{ [ schema_name . ] variable_identifier |
IDENTIFIER clause }
매개 변수
예제
-- 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 }
매개 변수
- schema_name: 함수를 포함하는 정규화되거나 정규화되지 않은 스키마 이름입니다.
- function_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 사용자 정의 함수)의 본문에서 매개 변수를 식별합니다. 함수는 함수 식별자를 사용하여 정규화하거나 간단한 식별자를 사용하여 정규화되지 않을 수 있습니다.
구문
[ function_identifier . ] parameter_identifier
매개 변수
- function_identifier: 함수의 이름을 지정하는 식별자입니다.
- parameter_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`;
테이블 별칭
테이블 참조, 쿼리, 테이블 함수 또는 다른 형태의 관계로 레이블을 지정합니다.
구문
[ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]
매개 변수
- table_identifier: 테이블의 이름을 지정하는 식별자입니다.
- column_identifierN: 열의 이름을 지정하는 선택적 식별자입니다.
열 식별자를 제공하는 경우 해당 번호는 일치하는 관계의 열 수와 일치해야 합니다.
열 식별자를 제공하지 않으면 레이블이 지정된 관계에서 해당 이름이 상속됩니다.
예제
-- 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 `직원`;
열 별칭
참조를 위해 SELECT
목록의 식 결과에 레이블을 지정합니다.
식이 테이블 반환 생성기 함수인 경우 별칭은 생성된 열 목록에 레이블을 지정합니다.
구문
[AS] column_identifier
[AS] ( column_identifier [, ...] )
매개 변수
- column_identifier: 열의 이름을 지정하는 식별자입니다.
열 별칭은 선택 목록에서 고유할 필요는 없지만 고유성은 별칭을 이름으로 참조해야 합니다.
예제
-- 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
자격 증명 이름
공급자 SDK를 사용하여 외부 위치 또는 클라우드 서비스의 스토리지에 액세스하기 위한 자격 증명을 식별합니다.
구문
credential_identifier
매개 변수
- credential_identifier: 자격 증명을 고유하게 식별하는 정규화되지 않은 식별자입니다.
예제
`my_storage_cred`
my_storage_cred
위치 이름
외부 스토리지 위치를 식별합니다.
구문
location_identifier
매개 변수
- location_identifier: 위치를 고유하게 식별하는 정규화되지 않은 식별자입니다.
예제
`s3-json-data`
s3_json_data
공유 이름
공급자가 공유하는 데이터에 액세스하기 위한 공유를 식별합니다.
구문
share_identifier
매개 변수
- share_identifier: 공유를 고유하게 식별하는 정규화되지 않은 식별자입니다.
예제
`public info`
`public-info`
public_info
공급자 이름
Delta Sharing 공급자를 식별합니다.
구문
provider_identifier
매개 변수
-
공급자를 고유하게 식별하는 정규화되지 않은 식별자입니다.
예제
`Good Corp`
`Good-corp`
Good_Corp
수신자 이름
공유 수신자를 식별합니다.
구문
recipient_identifier
매개 변수
- recipient_identifier: 수신자를 고유하게 식별하는 정규화되지 않은 식별자입니다.
예제
`Good Corp`
`Good-corp`
Good_Corp
클린룸 이름
공동 작업자 집합에 대한 클린룸을 식별합니다.
구문
clean_room_identifier
매개 변수
예제
`Clean-Room`
Clean_Room
볼륨 이름
Unity 카탈로그 볼륨을 식별합니다. 볼륨은 스키마 이름으로 정규화되거나 단순 식별자를 사용하여 정규화되지 않을 수 있습니다.
구문
[ schema_name .] volume_identifier
매개 변수
- schema_name: 볼륨을 포함하는 정규화되거나 정규화되지 않은 스키마 이름입니다.
- volume_identifier: 스키마 내에서 볼륨을 고유하게 식별하는 정규화되지 않은 식별자입니다.
예제
`myVolume`
`my-volume`
myschema.myVolume
my_unity_catalog.my_schema.my_volume