Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: SQL do Databricks
Runtime do Databricks
Compõe um conjunto de resultados de uma ou mais referências de tabela.
A cláusula SELECT
pode fazer parte de uma consulta que também inclui CTE (Expressão de Tabela Comum), operações de conjuntos 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
-
Coleta as colunas a serem retornadas da subconsulta, incluindo a execução de expressões, agregações e remoção de duplicatas.
-
Uma fonte de entrada para
SELECT
. Essa referência de entrada pode ser transformada em uma referência de streaming usando a palavra-chaveSTREAM
antes da referência.Se
table_reference
for uma [visão de métrica]((/sql/language-manual/sql-ref-syntax-ddl-create-view.md), não deverá haver outra referência de tabela na cláusulaFROM
. -
Usada 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 a partir do Databricks Runtime 12.2, essa cláusula foi preterida. Você deve invocar uma função gerador com valor de tabela como um table_reference.
-
Filtra o resultado da cláusula
FROM
com base nos predicados fornecidos. -
Expressões usadas para agrupar linhas. São usadas em conjunto com funções de agregação (
MIN
,MAX
,COUNT
,SUM
eAVG
) para agrupar linhas com base nas expressões de agrupamento e nos valores de agregação de cada grupo. Quando uma cláusulaFILTER
é anexada a uma função de agregação, somente as linhas correspondentes são passadas para essa função. -
Os predicados pelos quais as linhas produzidas por
GROUP BY
são filtradas. A cláusulaHAVING
é usada para filtrar linhas depois que o agrupamento é executado. Se você especificarHAVING
semGROUP BY
, isso indicará umGROUP BY
sem expressões de agrupamento (agregação global). -
Os predicados usados para filtrar os resultados das funções de janela. Para usar
QUALIFY
, é necessário que pelo menos uma função de janela esteja presente na lista de SELECT ou na cláusula QUALIFY.
Selecionar na tabela do Delta
Além das opções SELECT
padrão, as tabelas Delta dão suporte às opções de viagem no tempo descritas nesta seção. Para ver detalhes, confira Trabalhar com o histórico de tabelas do Delta Lake.
Sintaxe de AS OF
table_identifier TIMESTAMP AS OF timestamp_expression
table_identifier VERSION AS OF version
-
timestamp_expression
pode ser qualquer uma das seguintes opções:-
'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 da saída deDESCRIBE HISTORY table_spec
.
timestamp_expression
e version
não podem ser subconsultas.
Exemplo
> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'
> SELECT * FROM events VERSION AS OF 123
Sintaxe de @
Use a sintaxe @
para especificar o carimbo de data/hora ou a versão. O carimbo de data/hora precisa estar no formato yyyyMMddHHmmssSSS
. Você pode especificar uma versão após @
, incluindo v
no início da versão. Por exemplo, para consultar a versão 123
da 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
- Cláusula CLUSTER BY
- CTE (expressão de tabela comum)
- Cláusula DISTRIBUTE BY
- Cláusula GROUP BY
- Cláusula HAVING
- Cláusula QUALIFY
- Dicas
- Cláusula VALUES
- JOIN
- Cláusula LATERAL VIEW
- Cláusula LIMIT
- Cláusula OFFSET
- Cláusula ORDER BY
- Cláusula PIVOT
- Consulta
- Cláusula SELECT
- Operadores Set
- Cláusula SORT BY
- Cláusula estrela
- Cláusula TABLESAMPLE
- TVF (função com valor de tabela)
- referência de tabela
- Cláusula UNPIVOT
- Cláusula WHERE
- Cláusula WINDOW
- Funções da janela