Nomes
Aplica-se a: Databricks SQL Azure Databricks Runtime
Identifica diferentes tipos de objetos no Azure Databricks.
As seguintes limitações se aplicam a todos os nomes de objeto no Unity Catalog:
- Os nomes de objetos não podem exceder 255 caracteres.
- Os seguintes caracteres especiais não são permitidos:
- Período (
.
) - Space (
- Barra (
/
) - Todos os caracteres de controle ASCII (00-1F hex)
- O caractere DELETE (7F hex)
- Período (
- O Unity Catalog armazena todos os nomes de objetos como minúsculas.
- Ao referenciar nomes UC no SQL, você deve usar backticks para escapar de nomes que contêm caracteres especiais, como hifens (
-
).
Observação
Os nomes de Column podem ter caracteres especiais, mas o nome deve estar entre acentos graves (backticks) em todas as instruções SQL, caso caracteres especiais sejam usados. O Unity Catalog mantém a capitalização dos nomes das column, mas as consultas nas tables do Unity Catalog não fazem distinção entre letras maiúsculas e minúsculas.
Nome da conexão
Identifica uma conexão estrangeira.
Uma conexão externa serve como um link para um sistema externo, como PostgreSQL
, e pode ser usada para referenciar seus catalogs, esquemas e tables.
Sintaxe
connection_identifier
Parameters
- connection_identifier: um identifier que identifica exclusivamente a conexão.
Exemplos
> CREATE CONNECTION my_postgresql ...;
Catalog name
Identifica um catalog. Um catalog fornece um agrupamento de objetos que pode ser subdividido em esquemas.
Sintaxe
catalog_identifier
Parameters
- catalog_identifier: um identifier que identifica exclusivamente o catalog.
Exemplos
> 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 name
Identifica um schema. Um schema fornece um agrupamento de objetos em um catalog.
Sintaxe
{ [ catalog_name . ] schema_identifier |
IDENTIFIER clause }
Parameters
- catalog_name: nome de um catalogexistente.
- schema_identifier: um identifier que identifica exclusivamente o schema.
- Cláusula IDENTIFIER: um mapeamento de
STRING
constante para um nome de schema.
Esquemas criados em hive_metastore
só podem conter caracteres alfanuméricos ASCII e sublinhados (INVALID_SCHEMA_OR_RELATION_NAME).
Exemplos
> 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 `数据库架构`;
Nome do banco de dados
Um sinônimo para o nome do schema.
Embora o uso de SCHEMA
e DATABASE
seja intercambiável, SCHEMA
é preferencial.
Table name
Identifica um objeto table. A table pode ser qualificada com um nome de schema ou não qualificada usando um identifier simples.
Sintaxe
{ [ 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: um nome de schema qualificado ou não qualificado que contém a table.
table_identifier: um identifier que especifica o nome da table ou table_alias.
file_format: um de
json
,csv
,avro
,parquet
,orc
,binaryFile
,text
,delta
(não diferencia maiúsculas de minúsculas).path_to_table: a localização da table no sistema de arquivos. Você deve ter a permissão
ANY_FILE
para usar essa sintaxe.Cláusula IDENTIFIER: um mapeamento de
STRING
constante para um nome de table.temporal_spec: quando usado, faz referência a uma table Delta no ponto específico no tempo ou versão especificada.
Você pode usar uma especificação temporal somente dentro do contexto de uma consulta ou um MERGE USING.
- @ timestamp_encoding: um literal BIGINT positivo que codifica um carimbo de data/hora no formato
yyyyMMddHHmmssSSS
. - @V versão: um literal inteiro positivo que identifica a versão da table Delta.
- timestamp_expression: uma expressão simples que é avaliada como um TIMESTAMP.
timestamp_expressiom
deve ser uma expressão constante, mas pode contercurrent_date()
oucurrent_timestamp()
. - version: um literal inteiro ou um literal de cadeia de caracteres que identifica a versão da table Delta.
- @ timestamp_encoding: um literal BIGINT positivo que codifica um carimbo de data/hora no formato
option_spec: Quando usado, define diretivas a serem passadas para uma fonte de dados, como uma credencial para acessar um local de armazenamento ou
'write.split-size'
para controlarINSERT
o comportamento.option_key
A chave de opção. A chave pode consistir em um ou mais identificadores separados por um ponto ou um literal de cadeia de caracteres.
As chaves de opção devem ser exclusivas e diferenciar maiúsculas de minúsculas.
option_val
O valor para a opção. Uma expressão constante do tipo
BOOLEAN
,STRING
,INTEGER
, ouDECIMAL
.
Tables criadas em hive_metastore
só podem conter caracteres ASCII alfanuméricos e sublinhados (INVALID_SCHEMA_OR_RELATION_NAME).
Se o nome não for qualificado e não fizer referência a um alias conhecido table, o Azure Databricks tentará primeiro resolver o table no schemaatual.
Se o nome for qualificado com um schema, o Azure Databricks tentará resolver a table no catalog atual.
Consulte Resolução de Table e exibições para mais informações sobre a resolução de nomes.
O Azure Databricks gerará um erro se você usar um temporal_spec
para um table que não esteja no formato Delta Lake.
Exemplos
-- 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);
Nome da exibição
Identifica uma exibição. A exibição pode ser qualificada com um nome de schema ou não qualificada usando um identifier simples.
Sintaxe
{ [ schema_name . ] view_identifier |
IDENTIFIER clause }
Parameters
- schema_name: o nome qualificado ou não qualificado do schema que contém a exibição.
- view_identifier: um identifier que especifica o nome da exibição ou o identifier de uma exibição de um CTE.
- Cláusula IDENTIFIER: um mapeamento de
STRING
constante para um nome de exibição.
Views criadas em hive_metastore
só podem conter caracteres ASCII alfanuméricos e sublinhados (INVALID_SCHEMA_OR_RELATION_NAME).
Exemplos
-- 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 name
Identifica uma column em uma table ou exibição. A column pode ser qualificada com uma table ou nome de exibição, ou não qualificada usando um identifier simples.
Sintaxe
{ [ { table_name | view_name } . ] column_identifier |
IDENTIFIER clause }
Parameters
- table_name: um nome de table qualificado ou não qualificado da table que contém a column.
- view_name: um nome de exibição qualificado ou não qualificado da exibição que contém a column.
- column_identifier: um identifier que especifica o nome da column.
- Cláusula IDENTIFIER: um mapeamento de
STRING
constante para um nome de column.
A column identificada deve existir na table ou na exibição.
O Azure Databricks oferece suporte a uma column especial chamada _metadata. Essa pseudo-column do tipo struct faz parte de todas as table e pode ser usada para recuperar informações de metadados sobre as linhas na table.
Aviso
Se o tableschema contiver um column chamado _metadata
, as consultas retornarão o column da fonte de dados e não os metadados do arquivo. A pseudo-column _metadata
não estará acessível.
Os nomes de Column em tables Delta Lake sem a propriedade de mapeamento de column ('delta.columnMapping.mode' = 'name'
) não devem conter os caracteres ' '
(espaço), ','
, ';'
, '{'
, '}'
, '('
e ')'
. '\n'
, '\t'
e '='
.
Column nome em AVRO
tables deve começar com '_'
ou uma letra Unicode (incluindo letras não ASCII) e ser seguido por uma combinação de '_'
, letras Unicode e dígitos.
Exemplos
-- 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`);
Nome do campo
Identifica um campo dentro de um struct. O campo precisa ser qualificado com o caminho até o struct que contém o campo.
Sintaxe
{ expr { . field_identifier [. ...] } |
IDENTIFIER clause }
Parameters
- expr: uma expressão do tipo STRUCT.
- identificador_de_campo: um identifier que especifica o nome do campo.
- Cláusula IDENTIFIER: um mapeamento de
STRING
constante para um nome de campo.
Um campo profundamente aninhado pode ser referenciado especificando o campo identifier ao longo do caminho até a estrutura raiz.
Os nomes de campo no Delta Lake tables sem a propriedade de mapeamento column ('delta.columnMapping.mode' = 'name'
) não devem conter os caracteres ' '
(espaço), ','
, ';'
, '{'
, '}'
, '('
, ')'
. '\n'
, '\t'
e '='
.
O nome do campo no AVRO
tables deve começar com '_'
ou uma letra Unicode (incluindo letras não ASCII) e ser seguido por uma combinação de '_'
, letras Unicode e dígitos.
Exemplos
> 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;
Nome da variável
Identifica uma variável temporária (sessão).
A variável pode ser qualificada com um nome de schema (system.session
ou session
) ou não qualificada usando um identifier simples.
Sintaxe
{ [ schema_name . ] variable_identifier |
IDENTIFIER clause }
Parameters
- schema_name:
system.session
ousession
que contém todas as variáveis temporárias. - variable_identifier: um identifier que especifica o nome da variável.
Exemplos
-- 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;
Nome da função
Identifica uma função. A função pode ser qualificada com um nome de schema ou não qualificada usando um identifier simples.
Sintaxe
{ [ schema_name . ] function_identifier |
IDENTIFIER clause }
Parameters
- schema_name: um nome de schema qualificado ou não qualificado que contém a função.
- function_identifier: Um identifier que especifica o nome da função.
- Cláusula IDENTIFIER: um mapeamento de
STRING
constante para um nome de função.
As funções criadas em hive_metastore
só podem conter caracteres ASCII alfanuméricos e sublinhados.
Exemplos
-- 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;
Nome do parâmetro
Identifica um parâmetro no corpo de uma função SQL definida pelo usuário (SQL UDF). A função pode ser qualificada com um identifier de função ou pode ser não qualificada usando um identifier simples.
Sintaxe
[ function_identifier . ] parameter_identifier
Parameters
- function_identifier: um identifier que especifica o nome de uma função.
- parameter_identifier: um identifier que especifica o nome de um parâmetro.
Exemplos
-- 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`;
Alias de Table
Rotula uma referência de table, consulta, função de table ou outra forma de relação.
Sintaxe
[ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]
Parameters
- table_identifier: Um identifier que especifica o nome do table.
- column_identifierN: Um identifier Opcional que Especifica o Nome do column.
Se você fornecer identificadores de column, o número deles deverá corresponder ao número de columns na relação correspondente.
Se você não fornecer identificadores de column, os nomes deles serão herdados da relação rotulada.
Exemplos
-- 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 `직원`;
Alias de Column
Rotula o resultado de uma expressão em uma list SELECT
para referência.
Se a expressão for uma função de gerador de table, o alias rotulará a list de columns produzida.
Sintaxe
[AS] column_identifier
[AS] ( column_identifier [, ...] )
Parameters
- column_identifier: um identifier que especifica o nome da column.
Embora os aliases de column não precisem ser exclusivos na list de select, a exclusividade é um requisito para fazer referência a um alias por nome.
Exemplos
-- 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
Nome da ordenação
Identifica uma ordenação para uma column ou expressão.
Sintaxe
collation_identifier
Parameters
- collation_identifier: um identifier que especifica o nome da ordenação.
Para obter uma list de ordenações com suporte, consulte Ordenações com suporte. Para obter detalhes sobre ordenações, consulte Ordenação.
Exemplos
> SELECT 'hello' COLLATE UNICODE_CI;
hello
Nome da credencial
Identifica uma credencial para acessar o armazenamento em um local externo ou serviços de nuvem com SDKs de provedor.
Sintaxe
credential_identifier
Parameters
- credential_identifier: um identifier não qualificado que identifica exclusivamente a credencial.
Exemplos
`my_storage_cred`
my_storage_cred
Nome da localização
Identifica um local de armazenamento externo.
Sintaxe
location_identifier
Parameters
- location_identifier: um identifier não qualificado que identifica exclusivamente a localização.
Exemplos
`s3-json-data`
s3_json_data
Nome do compartilhamento
Identifica um compartilhamento para acessar os dados compartilhados por um provedor.
Sintaxe
share_identifier
Parameters
- share_identifier: um identifier não qualificado que identifica exclusivamente o compartilhamento.
Exemplos
`public info`
`public-info`
public_info
Nome do provedor
Identifica um provedor do Delta Sharing.
Sintaxe
provider_identifier
Parameters
-
Um identifier não qualificado que identifica exclusivamente o provedor.
Exemplos
`Good Corp`
`Good-corp`
Good_Corp
Nome do destinatário
Identifica um destinatário para um compartilhamento.
Sintaxe
recipient_identifier
Parameters
- recipient_identifier: um identifier não qualificado que identifica exclusivamente o destinatário.
Exemplos
`Good Corp`
`Good-corp`
Good_Corp
Nome da Sala Limpa
Identifica uma sala limpa para um set de colaboradores.
Sintaxe
clean_room_identifier
Parameters
- clean_room_identifier: um identifier não qualificado que especifica exclusivamente a sala limpa nos metastores dos colaboradores.
Exemplos
`Clean-Room`
Clean_Room
Nome do volume
Identifica um volume do Unity Catalog. O volume pode ser qualificado com um nome de schema ou não qualificado usando um identifier simples.
Sintaxe
[ schema_name .] volume_identifier
Parameters
- schema_name: um nome de schema qualificado ou não qualificado que contém o volume.
- volume_identifier: um identifier não qualificado que identifica exclusivamente o volume dentro do schema.
Exemplos
`myVolume`
`my-volume`
myschema.myVolume
my_unity_catalog.my_schema.my_volume