Partager via


référence de table

S’applique à : case marquée oui Databricks SQL case marquée oui 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

  • table_name

    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 à : ** coche pour oui Databricks SQL coche marquée oui Databricks Runtime 16.0 et versions ultérieures

    table_namepeut inclure une spécification d’options.

  • view_name

    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.

  • JOIN

    Combine deux relations ou plus à l’aide d’une jointure.

  • PIVOT

    S’applique à : coche marquée oui Databricks SQL coche pour oui 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.

  • UNPIVOT

    S’applique à : coche marquée oui Databricks SQL coche pour oui 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 clause FROM, vous devez spécifier LATERAL.

  • VALUES

    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 un table_reference précédent dans la même clause FROM. Une telle construction est appelée requête corrélée ou dépendante.

  • TABLESAMPLE

    Si vous le souhaitez, réduisez la taille du jeu de résultats en échantillonnant uniquement une fraction des lignes.

  • table_alias

    Spécifie éventuellement une étiquette pour le table_reference. Si le table_alias inclut column_identifier, leur nombre doit correspondre au nombre de colonnes dans le table_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 horodateur
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', autrement dit, une chaîne de date
    • current_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 de DESCRIBE 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