SELECT
Se aplica a: Databricks SQL Databricks Runtime
Compone un conjunto de resultados a partir de una o varias referencias de tabla.
La cláusula SELECT
puede formar parte de una consulta que también incluya expresiones de tabla comunes (CTE), operaciones Set y varias otras cláusulas.
Sintaxis
SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
FROM table_reference [, ...]
[ LATERAL VIEW clause ]
[ WHERE clause ]
[ GROUP BY clause ]
[ HAVING clause]
[ QUALIFY clause ]
named_expression
expression [ column_alias ]
star_clause
[ { table_name | view_name } . ] * [ except_clause ]
except_clause
EXCEPT ( { column_name | field_name } [, ...] )
Parámetros
-
Las sugerencias permiten que el optimizador de Azure Databricks tome mejores decisiones de planeamiento. Azure Databricks admite sugerencias que influyen en la selección de estrategias de combinación y en la creación de nuevas particiones de los datos.
ALL
Selecciona todas las filas coincidentes de las referencias de tabla. De forma predeterminada está habilitado.
DISTINCT
Selecciona todas las filas coincidentes de las referencias de tabla después de quitar los duplicados de los resultados.
named_expression
Expresión con un nombre asignado opcional.
-
Combinación de uno o varios valores, operadores y funciones de SQL que se evalúa como valor.
-
Identificador de columna opcional que asigna el nombre al resultado de la expresión. Si no se proporciona ningún elemento
column_alias
, Databricks SQL deriva uno.
-
-
Una abreviatura para asignar un nombre a todas las columnas a las que se hace referencia en la cláusula
FROM
o en las columnas o campos de una referencia de tabla específica de la cláusulaFROM
. -
Origen de entrada para
SELECT
. Esta referencia de entrada se puede convertir en una referencia de streaming mediante la palabra claveSTREAM
antes de la referencia. -
Se usa junto con funciones de generador, como
EXPLODE
, que genera una tabla virtual que contiene una o varias filas.LATERAL VIEW
aplica las filas a cada fila de salida original.En Databricks SQL y a partir de Databricks Runtime 12.2, esta cláusula está en desuso. Debe invocar una función de generador con valores de tabla como table_reference.
-
Filtra el resultado de la cláusula
FROM
en función de los predicados proporcionados. -
Expresiones que se usan para agrupar las filas. Se usa junto con las funciones de agregado (
MIN
,MAX
,COUNT
,SUM
,AVG
) para agrupar filas según las expresiones de agrupación y los valores agregados de cada grupo. Cuando se adjunta una cláusulaFILTER
a una función de agregado, solo se pasan las filas coincidentes a esa función. -
Predicados por los que se filtran las filas producidas por
GROUP BY
. La cláusulaHAVING
se usa para filtrar las filas después de realizar la agrupación. Si especificaHAVING
sinGROUP BY
, indicaGROUP BY
sin expresiones de agrupación (agregado global). -
Predicados que se usan para filtrar los resultados de las funciones de ventana. Para usar
QUALIFY
, es necesario que al menos una función de ventana esté presente en la lista SELECT o en la cláusula QUALIFY.
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 tiempocast('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 deDESCRIBE 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 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
Artículos relacionados
- Cláusula CLUSTER BY
- Expresión de tabla común (CTE)
- Cláusula DISTRIBUTE BY
- Cláusula GROUP BY
- cláusula HAVING
- Cláusula QUALIFY
- Sugerencias
- Cláusula VALUES
- JOIN
- Cláusula LATERAL VIEW
- Cláusula LIMIT
- OFFSET, cláusula
- Cláusula ORDER BY
- Cláusula PIVOT
- Consultar
- Cláusula TABLESAMPLE
- Operadores de conjuntos
- Cláusula SORT BY
- Cláusula Star
- Función con valores de tabla (TVF)
- Referencia de tabla
- Cláusula UNPIVOT
- WHERE, cláusula
- WINDOW (cláusula)
- Funciones de ventana