SELECT

Gäller för:check marked yes Databricks SQL check marked yes Databricks Runtime

Skapar en resultatuppsättning från en eller flera tabellreferenser. SELECT Satsen kan vara en del av en fråga som även innehåller vanliga tabelluttryck (CTE), uppsättningsåtgärder och olika andra satser.

Syntax

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 } [, ...] )

Parametrar

  • Tips

    Tips hjälper Azure Databricks-optimeraren att fatta bättre planeringsbeslut. Azure Databricks stöder tips som påverkar valet av kopplingsstrategier och ompartitionering av data.

  • ALL

    Markera alla matchande rader från tabellreferenserna. Aktiverat som standard.

  • DISTINKTA

    Markera alla matchande rader från tabellreferenserna när du har tagit bort dubbletter i resultat.

  • named_expression

    Ett uttryck med ett valfritt tilldelat namn.

    • Uttryck

      En kombination av ett eller flera värden, operatorer och SQL-funktioner som utvärderas till ett värde.

    • column_alias

      En valfri kolumnidentifierare som namnger uttrycksresultatet. Om inget column_alias anges härleds en Databricks SQL.

  • star_clause

    En förkortning för att namnge alla referensbara kolumner i FROM -satsen eller en specifik tabellreferenss kolumner eller fält i FROM -satsen.

  • table_reference

    En källa för indata för SELECT. Den här indatareferensen kan omvandlas till en direktuppspelningsreferens med hjälp av nyckelordet STREAM före referensen.

  • LATERAL VY

    Används tillsammans med generatorfunktioner som EXPLODE, som genererar en virtuell tabell som innehåller en eller flera rader. LATERAL VIEW tillämpar raderna på varje ursprunglig utdatarad.

    I Databricks SQL och från och med Databricks Runtime 12.2 är den här satsen inaktuell. Du bör anropa en tabellvärdegeneratorfunktion som en table_reference.

  • DÄR

    Filtrerar resultatet av FROM -satsen baserat på de angivna predikaten.

  • GRUPPERA EFTER

    De uttryck som används för att gruppera raderna. Detta används tillsammans med mängdfunktioner (MIN, MAX, COUNT, SUM, AVG) för att gruppera rader baserat på grupperingsuttrycken och aggregerade värden i varje grupp. När en FILTER sats är kopplad till en aggregeringsfunktion skickas endast matchande rader till den funktionen.

  • HAR

    Predikaten som raderna som skapas av GROUP BY filtreras efter. Satsen HAVING används för att filtrera rader efter att gruppering har utförts. Om du anger HAVING utan GROUP BYanger det ett GROUP BY utan grupperingsuttryck (global aggregering).

  • KVALIFICERA SIG

    Predikaten som används för att filtrera resultatet av fönsterfunktioner. Om du vill använda QUALIFYmåste minst en fönsterfunktion finnas i SELECT-listan eller KVALIFICERA-satsen.

Välj i Delta-tabellen

Förutom standardalternativen SELECT stöder Delta-tabeller de tidsresealternativ som beskrivs i det här avsnittet. Mer information finns i Arbeta med Delta Lake-tabellhistorik.

AS OF Syntax

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression kan vara något av följande:
    • '2018-10-18T22:15:12.013Z', det vill: en sträng som kan gjutas till en tidsstämpel
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', det vill: en datumsträng
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Andra uttryck som är eller kan gjutas till en tidsstämpel
  • version är ett långt värde som kan hämtas från utdata DESCRIBE HISTORY table_specfrån .

Varken timestamp_expression eller version kan vara underfrågor.

Exempel

> SELECT * FROM events TIMESTAMP AS OF '2018-10-18T22:15:12.013Z'

> SELECT * FROM delta.`/mnt/delta/events` VERSION AS OF 123

@ Syntax

Använd syntaxen @ för att ange tidsstämpeln eller versionen. Tidsstämpeln måste vara i yyyyMMddHHmmssSSS format. Du kan ange en version efter @ genom att lägga till en v till versionen. Om du till exempel vill fråga efter versionen 123 för tabellen eventsanger du events@v123.

Exempel

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Exempel

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