SELECIONAR

Aplica-se a:check marked yes Databricks SQL check marked yes Databricks Runtime

Compõe um conjunto de resultados a partir de uma ou mais referências de tabela. A SELECT cláusula 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 [ 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.

  • TODOS

    Selecione todas as linhas correspondentes nas referências da tabela. Ativado por predefinição.

  • DISTINTOS

    Selecione todas as linhas correspondentes nas referências da tabela depois de remover duplicatas nos resultados.

  • named_expression

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

    • expressão

      Uma combinação de um ou mais valores, operadores e funções SQL que é avaliada como um valor.

    • column_alias

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

  • star_clause

    Uma abreviatura para nomear todas as colunas referenciadas na FROM cláusula ou colunas ou campos de referência de uma tabela específica na FROM cláusula.

  • 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.

  • VISTA LATERAL

    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.

  • EM QUE

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

  • GRUPO POR

    As expressões usadas para agrupar as linhas. Isso é usado em conjunto com funções agregadas (MIN, , , SUMMAXCOUNT, AVG) para agrupar linhas com base nas expressões de agrupamento e valores agregados em cada grupo. Quando uma cláusula é anexada a uma FILTER função agregada, apenas as linhas correspondentes são passadas para essa função.

  • TENDO

    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 , ele indicará um GROUP BY sem GROUP BYagrupar expressões (agregado global).

  • QUALIFICAR

    Os predicados que são usados para filtrar os resultados das funções de janela. Para usar QUALIFYo , é necessário que pelo menos uma função de janela esteja presente na lista SELECT ou na cláusula QUALIFICAR.

Selecionar na tabela Delta

Além das opções padrão SELECT , as tabelas Delta suportam as opções de viagem no tempo descritas nesta seção. 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 delta.`/mnt/delta/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 para a v 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