Share via


Referencia de tabla

Se aplica a:casilla marcada como Sí Databricks SQL casilla marcada como Sí Databricks Runtime

Una referencia de tabla es una tabla de resultados intermedia dentro de SQL. Se puede derivar de otros operadores, como funciones, combinaciones o una subconsulta, hacer referencia a una tabla base directamente o construirse como una tabla insertada.

Sintaxis

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 ] }

Parámetros

  • table_name

    Identifica una tabla que puede contener una especificación temporal. Consulte Trabajo con el historial de tablas de Delta Lake para más información.

    Si no se encuentra la tabla, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

    Consulte Resolución de columnas, campos, parámetros y variables para obtener más información sobre la resolución de nombres.

  • view_name

    Identifica una vista o una expresión de tabla común (CTE). Si no se encuentra la vista, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

    Consulte Resolución de columnas, campos, parámetros y variables para obtener más información sobre la resolución de nombres.

  • STREAM

    Devuelve una tabla o una función con valores de tabla como un origen de streaming. No se pueden proporcionar tablas con una especificación temporal cuando se usa con la palabra clave STREAM. Los orígenes de streaming se usan normalmente en las definiciones de tablas de streaming.

  • JOIN

    Combina dos o más relaciones mediante una combinación.

  • PIVOT

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores.

    Se usa para la perspectiva de datos. Puede obtener los valores agregados en función del valor de columna específico.

    Antes de Databricks Runtime 12.0 PIVOT se limita a SELECT después de la cláusula FROM.

  • UNPIVOT

    Se aplica a:casilla marcada como sí Databricks SQL casilla marcada como Sí Databricks Runtime 12.2 LTS y versiones posteriores.

    Se usa para la perspectiva de los datos; puede dividir varios grupos de columnas en filas.

  • [LATERAL]table_valued_function_invocation

    Invoca una función con valores de tabla. Para hacer referencia a las columnas expuestas por un table_reference anterior en la misma cláusula FROM, debe especificar LATERAL.

  • VALUES

    Define una tabla insertada.

  • [LATERAL] ( consulta )

    Calcula una referencia de tabla mediante una consulta. Una consulta con el prefijo LATERAL puede hacer referencia a las columnas expuestas por un table_reference anterior en la misma cláusula FROM. Este tipo de construcción se denomina consulta correlacionada o dependiente.

  • TABLESAMPLE

    Opcionalmente, reduzca el tamaño del conjunto de resultados mediante el muestreo de una fracción de las filas.

  • table_alias

    De manera opcional, especifica una etiqueta para table_reference. Si table_alias incluye column_identifier, su número debe coincidir con el número de columnas de table_reference.

Selección en la tabla Delta

Además de las opciones SELECT estándar, las tablas Delta admiten las opciones de viaje en el tiempo que se describen en esta sección. Consulte Trabajar con el historial de tablas de Delta Lake para más información.

Sintaxis de AS OF

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • El valor de timestamp_expression puede ser uno de los siguientes:
    • '2018-10-18T22:15:12.013Z', es decir, una cadena que se puede convertir en una marca de tiempo
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', es decir, una cadena de fecha.
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Cualquier otra expresión que sea una marca de tiempo o se pueda convertir en una
  • version es un valor largo que se puede obtener de la salida de DESCRIBE HISTORY table_spec.

timestamp_expression ni version pueden ser subconsultas.

Ejemplo

> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'

> SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123

Sintaxis de @

Use la sintaxis @ para especificar la marca de tiempo o la versión. La marca de tiempo debe estar en formato yyyyMMddHHmmssSSS. Puede especificar una versión después de @ si antepone v a la versión. Por ejemplo, para consultar la versión 123 de la tabla events, especifique events@v123.

Ejemplo

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Ejemplos

-- 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