référence de table
S’applique à : Databricks SQL Databricks Runtime
Une référence de table est une table de résultats intermédiaire dans SQL. Elle peut être dérivée d’autres opérateurs, tels que des fonctions, des jointures ou une sous-requête, référencer directement une table de base, ou être construite en tant que table inline.
Syntaxe
table_reference
{ table_name [ TABLESAMPLE clause ] [ table_alias ] |
{ STREAM table_name [ table_alias ] | STREAM ( table_name ) [ table_alias ] } |
view_name [ table_alias ] |
JOIN clause |
PIVOT clause |
UNPIVOT clause |
[ STREAM ] table_valued_function [ table_alias ] |
[ LATERAL ] table_valued_function [ table_alias ] |
VALUES clause |
[ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ table_alias ] }
Paramètres
-
Identifie une table qui peut contenir une spécification temporelle. Pour plus d’informations, consultez Utiliser l’historique des tables Delta Lake.
Si la table est introuvable, Azure Databricks génère une erreur TABLE_OR_VIEW_NOT_FOUND.
Pour plus d’informations sur la résolution de noms, consultez Résolution de colonnes, de champs, de paramètres et de variables.
S’applique à : ** Databricks SQL Databricks Runtime 16.0 et versions ultérieures
table_name
peut inclure une spécification d’options. -
Identifie une vue ou une expression de table commune (CTE). Si la vue est introuvable, Azure Databricks génère une erreur TABLE_OR_VIEW_NOT_FOUND.
Pour plus d’informations sur la résolution de noms, consultez Résolution de colonnes, de champs, de paramètres et de variables.
STREAM
Retourne une table ou une fonction table en tant que source de diffusion en continu. Les tables ne peuvent pas être fournies avec une spécification temporelle lorsqu’elles sont utilisées avec le mot clé
STREAM
. Les sources de diffusion en continu sont couramment utilisées dans les définitions des tables de diffusion en continu.-
Combine deux relations ou plus à l’aide d’une jointure.
-
S’applique à : Databricks SQL Databricks Runtime 12.2 LTS et versions ultérieures.
Utilisé pour la perspective des données ; vous pouvez récupérer les valeurs agrégées en fonction d’une valeur de colonne spécifique.
Avant Databricks Runtime 12.0 PIVOT est limité à SELECT après la clause
FROM
. -
S’applique à : Databricks SQL Databricks Runtime 12.2 LTS et versions ultérieures.
Utilisé pour la perspective des données ; vous pouvez fractionner plusieurs groupes de colonnes en lignes.
[LATERAL] table_valued_function_invocation
Appelle une fonction table. Pour faire référence aux colonnes exposées par un précédent
table_reference
dans la même clauseFROM
, vous devez spécifierLATERAL
.-
Définit une table Inline.
[LATERAL] ( requête )
Calcule une référence de table à l’aide d’une requête. Une requête précédée de
LATERAL
peut faire référence à des colonnes exposées par untable_reference
précédent dans la même clauseFROM
. Une telle construction est appelée requête corrélée ou dépendante.-
Si vous le souhaitez, réduisez la taille du jeu de résultats en échantillonnant uniquement une fraction des lignes.
-
Spécifie éventuellement une étiquette pour le
table_reference
. Si letable_alias
inclutcolumn_identifier
, leur nombre doit correspondre au nombre de colonnes dans letable_reference
.
Sélectionner sur une table Delta
Outre les options standard SELECT
, les tables Delta prennent en charge les options de voyage dans le temps décrites dans cette section. Pour plus d’informations, consultez Utiliser l’historique des tables Delta Lake.
Syntaxe de AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
timestamp_expression
peut être n’importe quel :'2018-10-18T22:15:12.013Z'
, autrement dit, une chaîne qui peut être convertie en horodateurcast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, autrement dit, une chaîne de datecurrent_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Toute autre expression qui est ou qui peut être castée en un timestamp
version
est une valeur de type long qui peut être obtenue à partir de la sortie deDESCRIBE HISTORY table_spec
.
Ni timestamp_expression
ni version
ne peuvent être des sous-requêtes.
Exemple
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Syntaxe de @
Utilisez la syntaxe @
pour spécifier le timestamp ou la version. Le timestamp doit être au format yyyyMMddHHmmssSSS
. Vous pouvez spécifier une version après @
en ajoutant v
à la version. Par exemple, pour interroger la version 123
de la table events
, spécifiez events@v123
.
Exemple
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Exemples
-- Return a data set from a storage location using a credential.
> SELECT * FROM `csv`.`spreadsheets/data.csv` WITH(CREDENTIAL some_credential);
-- Select from a jdbc data source while controlling the fetch size.
> SELECT * FROM jdbcTable WITH(fetchSize = 0);
-- select all referencable columns from all tables
> SELECT * FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3 4
-- select all referencable columns from one table
> SELECT t2.* FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
3 4
-- select all referencable columns from all tables except t2.c4
> SELECT * EXCEPT(c4) FROM VALUES(1, 2) AS t1(c1, c2), VALUES(3, 4) AS t2(c3, c4);
1 2 3
-- select all referencable columns from a table, except a nested field.
> SELECT * EXCEPT(c2.b) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { "a" : 2 }
-- Removing all fields results in an empty struct
> SELECT * EXCEPT(c2.b, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
1 { }
-- Overlapping names result in an error
> SELECT * EXCEPT(c2, c2.a) FROM VALUES(1, named_struct('a', 2, 'b', 3)) AS t(c1, c2);
Error: EXCEPT_OVERLAPPING_COLUMNS