Имена
Область применения: Databricks SQL Databricks Runtime
Определяет различные виды объектов в Azure Databricks.
Следующие ограничения применяются ко всем именам объектов в каталоге Unity:
- Имена объектов не могут превышать 255 символов.
- Не допускаются следующие специальные символы:
- Период (
.
) - Пробел (
- Прямая косая черта (
/
) - Все символы управления ASCII (00-1F шестнадцатеричное число)
- Символ DELETE (шестнадцатеричное значение 7F)
- Период (
- Каталог Unity сохраняет все имена объектов в нижнем регистре.
- При ссылке на имена UC в SQL необходимо использовать обратные знаки для escape-имен, содержащих специальные символы, такие как дефисы (
-
).
Примечание.
Имена столбцов могут использовать специальные символы, но имя должно быть экранировано с обратными знаками во всех инструкциях 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 [ 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: возможные значения:
json
,csv
,avro
,parquet
,orc
,binaryFile
,text
,delta
(без учета регистра).path_to_table: расположение таблицы в файловой системе. Необходимо иметь разрешение
ANY_FILE
для использования этого синтаксиса.Предложение IDENTIFIER: сопоставление константы
STRING
с именем таблицы.temporal_spec: при использовании ссылается на версию или таблицу Delta в указанный момент времени.
Временную спецификацию можно использовать только в контексте запроса или MERGE USING.
- @ timestamp_encoding: положительный литерал bigint, который кодирует метку времени в формате
yyyyMMddHHmmssSSS
. - @V version: положительный целочисленный литерал, который определяет версию таблицы Delta.
- timestamp_expression: простое выражение, результатом которого является TIMESTAMP.
timestamp_expressiom
должно быть константным выражением, но может содержатьcurrent_date()
илиcurrent_timestamp()
. - version: положительный целочисленный или строковый литерал, который определяет версию таблицы Delta.
- @ timestamp_encoding: положительный литерал bigint, который кодирует метку времени в формате
credential_spec
Вы можете использовать соответствующие учетные данные для получения доступа к
path_to_table
, который не встроен во внешнее расположение.-
Имя учетных данных, которые используются для доступа к месту хранения.
-
Таблицы, созданные в hive_metastore
ней, могут содержать только буквенно-цифровые символы ASCII и символы подчеркивания (INVALID_SCHEMA_OR_RELATION_NAME).
Если имя не задано и не ссылается на известный псевдоним таблицы, Azure Databricks сначала пытается разрешить таблицу в текущей схеме.
Если имя квалифицировано с помощью схемы, Azure Databricks пытается разрешить таблицу в текущем каталоге.
Дополнительные сведения о разрешении имен см. в разделе "Таблица и разрешение представлений".
Azure Databricks вызывает ошибку, если используется temporal_spec
для таблицы, которая не находится в формате Delta Lake.
Примеры
-- 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)
-- 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. Этот псевдостолбец структуры типа присутствует в каждой таблице и может использоваться для получения сведений метаданных о записях в таблице.
Предупреждение
Если схема таблицы содержит столбец с именем _metadata
, запросы возвращают столбец из источника данных, а не метаданные файла. Псевдоколонтитум _metadata
не будет доступен.
Имена столбцов в таблицах Delta Lake без свойства сопоставления столбцов ('delta.columnMapping.mode' = 'name'
) не должны содержать символы ' '
(пробел), ','
, , ';'
'{'
, '}'
, . '('
')'
'\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 Lake без свойства сопоставления столбцов ('delta.columnMapping.mode' = 'name'
) не должны содержать символы ' '
(пробел), ','
, , ';'
'{'
, '}'
, , . ')'
'('
'\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 }
Параметры
- schema_name:
system.session
илиsession
содержит все временные переменные. - variable_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 }
Параметры
- 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 (SQL UDF). Функция может быть определяемой при использовании идентификатора функции или неопределяемой при использовании простого идентификатора.
Синтаксис
[ 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
Имя учетных данных
Определяет учетные данные для доступа к хранилищу во внешнем расположении.
Синтаксис
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
Параметры
- 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