Partilhar via


SELECT (subselecionar)

Aplica-se a:Marque Sim Databricks SQL Marque Sim 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

  • SELECT cláusula

    Recolhe as colunas a serem retornadas da subconsulta, incluindo a execução de expressões, agregações e eliminação de duplicados.

  • table_reference

    Uma fonte de entrada para o SELECT. Essa referência de entrada pode ser transformada em uma referência de streaming usando a STREAM palavra-chave antes da referência.

  • LATERAL VIEW

    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.

  • WHERE

    Filtra o FROM resultado da cláusula com base nos predicados fornecidos.

  • GROUP BY

    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 uma FILTER cláusula é anexada a uma função agregada, apenas as linhas correspondentes são passadas para essa função.

  • HAVING

    Os predicados pelos quais as linhas produzidas por GROUP BY são filtradas. A HAVING cláusula é usada para filtrar linhas depois que o agrupamento é executado. Se você especificar HAVING sem GROUP BY, ele indicará um GROUP BY sem agrupar expressões (agregado global).

  • QUALIFY

    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 de DESCRIBE HISTORY table_spec.

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