Nomi
Si applica a: Databricks SQL Databricks Runtime
Identifica diversi tipi di oggetti in Azure Databricks.
Le limitazioni seguenti si applicano a tutti i nomi di oggetti nel catalogo unity:
- I nomi degli oggetti non possono superare i 255 caratteri.
- Non sono consentiti i caratteri speciali seguenti:
- Periodo (
.
) - Spazio (
- Barra (
/
) - Tutti i caratteri di controllo ASCII (esadecimale 00-1F)
- Carattere DELETE (hex 7F)
- Periodo (
- Il catalogo unity archivia tutti i nomi degli oggetti come minuscoli.
- Quando si fa riferimento ai nomi UC in SQL, è necessario usare i backtick per i nomi di escape contenenti caratteri speciali, ad esempio trattini (
-
).
Nota
I nomi delle colonne possono usare caratteri speciali, ma il nome deve essere preceduto da caratteri di escape in tutte le istruzioni SQL se vengono usati caratteri speciali. Il catalogo unity mantiene la combinazione di maiuscole e minuscole dei nomi di colonna, ma le query sulle tabelle del catalogo Unity non fanno distinzione tra maiuscole e minuscole.
Nome connessione
Identifica una connessione esterna.
Una connessione esterna funge da collegamento a un sistema esterno, ad esempio PostgreSQL
e può quindi essere usata per fare riferimento a cataloghi, schemi e tabelle.
Sintassi
connection_identifier
Parametri
Esempi
> CREATE CONNECTION my_postgresql ...;
Nome catalogo
Identifica un catalogo. Un catalogo fornisce un raggruppamento di oggetti che possono essere ulteriormente suddivisi in schemi.
Sintassi
catalog_identifier
Parametri
Esempi
> 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
Nome schema
Identifica uno schema. Uno schema fornisce un raggruppamento di oggetti in un catalogo.
Sintassi
{ [ catalog_name . ] schema_identifier |
IDENTIFIER clause }
Parametri
- catalog_name: nome di un catalogo esistente.
- schema_identifier: identificatore che identifica in modo univoco lo schema.
- Clausola IDENTIFIER: mapping della costante
STRING
a un nome di schema.
Gli schemi creati in hive_metastore
possono contenere solo caratteri ASCII alfanumerici e caratteri di sottolineatura (INVALID_SCHEMA_OR_RELATION_NAME).
Esempi
> 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 database
Sinonimo del nome dello schema.
Sebbene l'utilizzo di SCHEMA
e DATABASE
sia intercambiabile, SCHEMA
è preferibile.
Nome tabella
Identifica un oggetto tabella. La tabella può essere qualificata con un nome di schema o con un identificatore semplice.
Sintassi
{ [ 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 )
Parametri
schema_name: nome completo o non qualificato dello schema che contiene la tabella.
table_identifier: identificatore che specifica il nome della tabella o del table_alias.
file_format: uno di
json
,csv
avro
,parquet
,orc
,binaryFile
,text
(delta
senza distinzione tra maiuscole e minuscole).path_to_table: percorso della tabella nel file system. È necessario disporre dell'autorizzazione
ANY_FILE
per usare questa sintassi.Clausola IDENTIFIER: mapping di costante
STRING
a un nome di tabella.temporal_spec: quando viene usato fa riferimento a una tabella Delta nel momento o nella versione specificata.
È possibile usare una specifica temporale solo all'interno del contesto di una query o di un'istruzione MERGE USING.
- @ timestamp_encoding: valore letterale Bigint positivo che codifica un timestamp in
yyyyMMddHHmmssSSS
formato. - @V versione: valore letterale Integer positivo che identifica la versione della tabella Delta.
- timestamp_expression: espressione semplice che restituisce un TIMESTAMP.
timestamp_expressiom
deve essere un'espressione costante, ma può contenerecurrent_date()
ocurrent_timestamp()
. - version: valore letterale integer o valore letterale stringa che identifica la versione della tabella Delta.
- @ timestamp_encoding: valore letterale Bigint positivo che codifica un timestamp in
credential_spec
È possibile usare una credenziale applicabile per ottenere l'accesso a un oggetto
path_to_table
che non è incorporato in una posizione esterna.-
Nome delle credenziali usate per accedere al percorso di archiviazione.
-
Le tabelle create in hive_metastore
possono contenere solo caratteri ASCII alfanumerici e caratteri di sottolineatura (INVALID_SCHEMA_OR_RELATION_NAME).
Se il nome non è qualificato e non fa riferimento a un alias di tabella noto, Azure Databricks tenta innanzitutto di risolvere la tabella nello schema corrente.
Se il nome è qualificato con uno schema, Azure Databricks tenta di risolvere la tabella nel catalogo corrente.
Per altre informazioni sulla risoluzione dei nomi, vedere Risoluzione di tabelle e viste .
Azure Databricks genera un errore se si usa per temporal_spec
una tabella che non è in formato Delta Lake.
Esempi
-- 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);
Nome visualizzazione
Identifica una visualizzazione. La vista può essere qualificata con un nome di schema o con un identificatore semplice.
Sintassi
{ [ schema_name . ] view_identifier |
IDENTIFIER clause }
Parametri
- schema_name: nome qualificato o non qualificato dello schema che contiene la vista.
- view_identifier: identificatore che specifica il nome della visualizzazione o l'identificatore di visualizzazione di un CTE.
- Clausola IDENTIFIER: mapping della costante
STRING
a un nome di visualizzazione.
Le viste create in hive_metastore
possono contenere solo caratteri ASCII alfanumerici e caratteri di sottolineatura (INVALID_SCHEMA_OR_RELATION_NAME).
Esempi
-- 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;
Nome colonna
Identifica una colonna all'interno di una tabella o di una vista. La colonna può essere qualificata con un nome di tabella o vista o non qualificato usando un identificatore semplice.
Sintassi
{ [ { table_name | view_name } . ] column_identifier |
IDENTIFIER clause }
Parametri
- table_name: nome completo o non qualificato della tabella contenente la colonna.
- view_name: nome qualificato o non qualificato della vista contenente la colonna.
- column_identifier: identificatore che specifica il nome della colonna.
- Clausola IDENTIFIER: mapping della costante
STRING
a un nome di colonna.
La colonna identificata deve esistere all'interno della tabella o della vista.
Azure Databricks supporta una colonna _metadata speciale. Questa pseudo colonna di tipo struct fa parte di ogni tabella e può essere usata per recuperare informazioni sui metadati sulle righe della tabella.
Avviso
Se lo schema della tabella contiene una colonna denominata _metadata
, le query restituiranno la colonna dall'origine dati e non i metadati del file. La _metadata
pseudo colonna non sarà accessibile.
I nomi di colonna nelle tabelle Delta Lake senza proprietà di mapping delle colonne ('delta.columnMapping.mode' = 'name'
) non devono contenere i caratteri ' '
(spazio), ','
, ';'
'{'
, '}'
, . ')'
'('
'\n'
, '\t'
e '='
.
Il nome di colonna nelle AVRO
tabelle deve iniziare con '_'
o una lettera Unicode (incluse lettere non ASCII) e seguire una combinazione di '_'
lettere Unicode e cifre.
Esempi
-- 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 del campo
Identifica un campo all'interno di uno struct. Il campo deve essere qualificato con il percorso fino allo struct contenente il campo.
Sintassi
{ expr { . field_identifier [. ...] } |
IDENTIFIER clause }
Parametri
- expr: espressione di tipo STRUCT.
- field_identifier: identificatore che specifica il nome del campo.
- Clausola IDENTIFIER: mapping della costante
STRING
a un nome di campo.
È possibile fare riferimento a un campo annidato specificando l'identificatore di campo lungo il percorso dello struct radice.
I nomi di campo nelle tabelle Delta Lake senza la proprietà di mapping delle colonne ('delta.columnMapping.mode' = 'name'
) non devono contenere i caratteri ' '
(spazio), ','
, ';'
'{'
'}'
'('
. ')'
'\n'
, '\t'
e '='
.
Il nome del campo nelle AVRO
tabelle deve iniziare con '_'
o una lettera Unicode (incluse lettere non ASCII) e deve essere seguita da una combinazione di '_'
lettere Unicode e cifre.
Esempi
> 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 variabile
Identifica una variabile temporanea (sessione).
La variabile può essere qualificata con un nome di schema (system.session
o session
) o non qualificato usando un identificatore semplice.
Sintassi
{ [ schema_name . ] variable_identifier |
IDENTIFIER clause }
Parametri
- schema_name:
system.session
osession
che contiene tutte le variabili temporanee. - variable_identifier: identificatore che specifica il nome della variabile.
Esempi
-- 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 della funzione
Identifica una funzione. La funzione può essere qualificata con un nome di schema o non qualificato usando un identificatore semplice.
Sintassi
{ [ schema_name . ] function_identifier |
IDENTIFIER clause }
Parametri
- schema_name: nome di schema qualificato o non qualificato che contiene la funzione.
- function_identifier: identificatore che specifica il nome della funzione.
- Clausola IDENTIFIER: mapping della costante
STRING
a un nome di funzione.
Le funzioni create in hive_metastore
possono contenere solo caratteri ASCII alfanumerici e caratteri di sottolineatura.
Esempi
-- 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 parametro
Identifica un parametro nel corpo di una funzione SQL definita dall'utente (UDF SQL). La funzione può essere qualificata con un identificatore di funzione o non qualificato usando un identificatore semplice.
Sintassi
[ function_identifier . ] parameter_identifier
Parametri
- function_identifier: identificatore che specifica il nome di una funzione.
- parameter_identifier: identificatore che specifica il nome di un parametro.
Esempi
-- 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 tabella
Etichetta un riferimento a una tabella, una query, una funzione di tabella o un'altra forma di una relazione.
Sintassi
[ AS ] table_identifier [ ( column_identifier1 [, ...] ) ]
Parametri
- table_identifier: identificatore che specifica il nome della tabella.
- column_identifierN: identificatore facoltativo che specifica il nome della colonna.
Se si specificano identificatori di colonna, il numero deve corrispondere al numero di colonne nella relazione corrispondente.
Se non si specificano identificatori di colonna, i relativi nomi vengono ereditati dalla relazione etichettata.
Esempi
-- 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 di colonna
Etichetta il risultato di un'espressione in un SELECT
elenco per riferimento.
Se l'espressione è una funzione generatore con valori di tabella, l'alias etichetta l'elenco di colonne prodotte.
Sintassi
[AS] column_identifier
[AS] ( column_identifier [, ...] )
Parametri
Anche se gli alias di colonna non devono essere univoci all'interno dell'elenco di selezione, l'univocità è un requisito per fare riferimento a un alias in base al nome.
Esempi
-- 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 name (Nome credenziali)
Identifica una credenziale per accedere all'archiviazione in una posizione esterna o in servizi cloud con SDK del provider.
Sintassi
credential_identifier
Parametri
- credential_identifier: identificatore non qualificato che identifica in modo univoco le credenziali.
Esempi
`my_storage_cred`
my_storage_cred
Nome della località
Identifica un percorso di archiviazione esterno.
Sintassi
location_identifier
Parametri
Esempi
`s3-json-data`
s3_json_data
Nome condivisione
Identifica una condivisione per accedere ai dati condivisi da un provider.
Sintassi
share_identifier
Parametri
Esempi
`public info`
`public-info`
public_info
Nome provider
Identifica un provider di condivisione delta.
Sintassi
provider_identifier
Parametri
-
Identificatore non qualificato che identifica in modo univoco il provider.
Esempi
`Good Corp`
`Good-corp`
Good_Corp
Nome del destinatario
Identifica un destinatario per una condivisione.
Sintassi
recipient_identifier
Parametri
- recipient_identifier: identificatore non qualificato che identifica in modo univoco il destinatario.
Esempi
`Good Corp`
`Good-corp`
Good_Corp
Nome camera pulita
Identifica una stanza pulita per un set di collaboratori.
Sintassi
clean_room_identifier
Parametri
- clean_room_identifier: identificatore non qualificato che specifica in modo univoco la stanza pulita nei metastore dei collaboratori.
Esempi
`Clean-Room`
Clean_Room
Nome del volume
Identifica un volume del catalogo Unity. Il volume può essere qualificato con un nome di schema o non qualificato usando un identificatore semplice.
Sintassi
[ schema_name .] volume_identifier
Parametri
- schema_name: nome di schema qualificato o non qualificato che contiene il volume.
- volume_identifier: identificatore non qualificato che identifica in modo univoco il volume all'interno dello schema.
Esempi
`myVolume`
`my-volume`
myschema.myVolume
my_unity_catalog.my_schema.my_volume