SELECT (subselecionar)
Aplica-se a: Databricks SQL
Databricks Runtime
Compõe um conjunto de resultados a partir de uma ou mais referências de tabela .
A cláusula SELECT
pode fazer parte de uma consulta que também inclui expressões de tabela comuns (CTE), operações de conjunto e várias outras cláusulas.
Sintaxe
SELECT 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
-
Recolhe as colunas a serem retornadas da subconsulta, incluindo a execução de expressões, agregações e eliminação de duplicados.
-
Uma fonte de entrada para o
SELECT
. Essa referência de entrada pode ser transformada em uma referência de streaming usando aSTREAM
palavra-chave antes da referência. -
Usado em conjunto com funções de gerador, como
EXPLODE
, que gera uma tabela virtual contendo uma ou mais linhas.LATERAL VIEW
Aplica as linhas a cada linha de saída original.No Databricks SQL, e começando com o Databricks Runtime 12.2, esta cláusula foi preterida. Você deve invocar uma função geradora de valor de tabela como um table_reference.
-
Filtra o
FROM
resultado da cláusula com base nos predicados fornecidos. -
As expressões usadas para agrupar as linhas. Isso é usado em conjunto com funções agregadas (
MIN
,MAX
,COUNT
,SUM
,AVG
) para agrupar linhas com base nas expressões de agrupamento e valores agregados em cada grupo. Quando umaFILTER
cláusula é anexada a uma função agregada, apenas as linhas correspondentes são passadas para essa função. -
Os predicados pelos quais as linhas produzidas por
GROUP BY
são filtradas. AHAVING
cláusula é usada para filtrar linhas depois que o agrupamento é executado. Se você especificarHAVING
semGROUP BY
, ele indicará umGROUP BY
sem agrupar expressões (agregado global). -
Os predicados que são usados para filtrar os resultados das funções de janela. Para usar
QUALIFY
, pelo menos uma função de janela é necessária para estar presente na lista de SELECT ou na cláusula QUALIFY.
Selecionar na tabela Delta
Além das opções padrão de SELECT
, as tabelas Delta suportam as opções descritas nesta seção para viagem no tempo. Para obter detalhes, consulte Trabalhar com o histórico da tabela Delta Lake.
AS OF
Sintaxe
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
-
timestamp_expression
pode ser qualquer um:-
'2018-10-18T22:15:12.013Z'
, ou seja, uma cadeia de caracteres que pode ser convertida em um carimbo de data/hora cast('2018-10-18 13:36:32 CEST' as timestamp)
-
'2018-10-18'
, ou seja, uma cadeia de caracteres de data current_timestamp() - interval 12 hours
date_sub(current_date(), 1)
- Qualquer outra expressão que seja ou possa ser convertida em um carimbo de data/hora
-
-
version
é um valor longo que pode ser obtido a partir da saída deDESCRIBE HISTORY table_spec
.
Nem timestamp_expression
version
podem ser subconsultas.
Exemplo
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
@
Sintaxe
Use a @
sintaxe para especificar o carimbo de data/hora ou a versão. O carimbo de data/hora deve estar no yyyyMMddHHmmssSSS
formato. Você pode especificar uma versão depois @
antecipando a v
para a versão. Por exemplo, para consultar a versão 123
para a tabela events
, especifique events@v123
.
Exemplo
> SELECT * FROM events@20190101000000000
> SELECT * FROM events@v123
Exemplos
-- 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
Artigos relacionados
- CLUSTER BY cláusula
- Expressão de tabela comum (CTE)
- DISTRIBUTE BY cláusula
- GROUP BY cláusula
- HAVING cláusula
- QUALIFY cláusula
- Dicas
- VALUES cláusula
- JOIN
- LATERAL VIEW cláusula
- LIMIT cláusula
- OFFSET cláusula
- ORDER BY cláusula
- PIVOT cláusula
- Consulta
- SELECT cláusula
- Definir operadores
- SORT BY cláusula
- Cláusula Star
- TABLESAMPLE cláusula
- Função com valor de tabela (TVF)
- referência de tabela
- UNPIVOT cláusula
- WHERE cláusula
- WINDOW cláusula
- Funções de janela