Compartilhar via


SELECT

Aplica-se a: marca de seleção positiva SQL do Databricks marca de seleção positiva 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 [ 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

  • dicas

    As dicas ajudam o otimizador do Azure Databricks a tomar melhores decisões de planejamento. O Azure Databricks dá suporte a dicas que influenciam a seleção de estratégias de junção e o reparticionamento dos dados.

  • ALL

    Seleciona todas as linhas correspondentes nas referências de tabela. Habilitado por padrão.

  • DISTINCT

    Seleciona todas as linhas correspondentes das referências de tabela após a remoção de duplicatas nos resultados.

  • named_expression

    Uma expressão com um nome opcional atribuído.

    • expression

      Uma combinação de valores, operadores e funções do SQL que avalia em um valor.

    • column_alias

      Um identificador de coluna opcional que nomeia o resultado da expressão. Se nenhum column_alias for fornecido, o Databricks SQL derivará um.

  • star_clause

    Uma abreviação para nomear todas as colunas referenciáveis na cláusula FROM ou colunas ou campos de referência de tabela específica na cláusula FROM.

  • table_reference

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

  • LATERAL VIEW

    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.

  • WHERE

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

  • GROUP BY

    Expressões usadas para agrupar linhas. São usadas em conjunto com funções de agregação ( MIN, MAX, COUNT, SUM e AVG) para agrupar linhas com base nas expressões de agrupamento e nos valores de agregação de cada grupo. Quando uma cláusula FILTER é anexada a uma função de agregação, somente 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 cláusula HAVING é usada para filtrar linhas depois que o agrupamento é executado. Se você especificar HAVING sem GROUP BY, isso indicará um GROUP BY sem expressões de agrupamento (agregação global).

  • QUALIFY

    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 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 de DESCRIBE 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 @

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