SELECT

Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime

Komponuje zestaw wyników z co najmniej jednego odwołania do tabeli. Klauzula SELECT może być częścią zapytania, które obejmuje również typowe wyrażenia tabeli (CTE), operacje zestawu i różne inne klauzule.

Składnia

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

Parametry

  • Wskazówki

    Wskazówki pomagają optymalizatorowi usługi Azure Databricks podejmować lepsze decyzje dotyczące planowania. Usługa Azure Databricks obsługuje wskazówki wpływające na wybór strategii sprzężenia i ponowne partycjonowanie danych.

  • ALL

    Zaznacz wszystkie pasujące wiersze z odwołań do tabeli. Włączone domyślnie.

  • ODRĘBNE

    Zaznacz wszystkie pasujące wiersze z odwołań do tabeli po usunięciu duplikatów w wynikach.

  • named_expression

    Wyrażenie z opcjonalną przypisaną nazwą.

    • Wyrażenie

      Kombinacja co najmniej jednej wartości, operatorów i funkcji SQL, która daje w wyniku wartość.

    • column_alias

      Opcjonalny identyfikator kolumny nazewnictwa wyniku wyrażenia. Jeśli nie column_alias podano usługi Databricks SQL, pochodzi z niego.

  • star_clause

    Skrócona nazwa wszystkich kolumn możliwych do odwołania w klauzuli FROM lub kolumnach lub polach odwołania do określonej tabeli w klauzuli FROM .

  • table_reference

    Źródło danych wejściowych dla elementu SELECT. To odwołanie wejściowe można przekształcić w odwołanie do przesyłania strumieniowego przy użyciu STREAM słowa kluczowego przed odwołaniem.

  • WIDOK POPRZECZNY

    Używane w połączeniu z funkcjami generatora, takimi jak EXPLODE, które generują tabelę wirtualną zawierającą co najmniej jeden wiersz. LATERAL VIEW stosuje wiersze do każdego oryginalnego wiersza wyjściowego.

    W usłudze Databricks SQL i począwszy od środowiska Databricks Runtime 12.2 ta klauzula jest przestarzała. Należy wywołać funkcję generatora wartości tabeli jako table_reference.

  • WHERE

    Filtruje wynik klauzuli FROM na podstawie podanych predykatów.

  • GROUP BY

    Wyrażenia używane do grupowania wierszy. Jest to używane w połączeniu z funkcjami agregacji (MIN, MAX, COUNT, SUM, AVG) do grupowania wierszy na podstawie wyrażeń grupowania i wartości agregujących w każdej grupie. Gdy klauzula FILTER jest dołączona do funkcji agregującej, do tej funkcji są przekazywane tylko pasujące wiersze.

  • HAVING

    Predykaty, według których wiersze generowane przez GROUP BY są filtrowane. Klauzula HAVING jest używana do filtrowania wierszy po wykonaniu grupowania. Jeśli określisz HAVING wartość bez GROUP BY, oznacza GROUP BY to bez grupowania wyrażeń (agregacja globalna).

  • KWALIFIKUJĄ SIĘ

    Predykaty używane do filtrowania wyników funkcji okna. Aby użyć QUALIFYfunkcji , wymagana jest co najmniej jedna funkcja okna na liście SELECT lub klauzuli QUALIFY.

Wybieranie w tabeli delty

Oprócz standardowych SELECT opcji tabele delty obsługują opcje podróży czasowej opisane w tej sekcji. Aby uzyskać szczegółowe informacje, zobacz Praca z historią tabel usługi Delta Lake.

Składnia aparatu AS OF

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression może być jednym z:
    • '2018-10-18T22:15:12.013Z', czyli ciąg, który można rzutować na znacznik czasu
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', czyli ciąg daty
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Dowolne inne wyrażenie, które jest lub można rzutować na znacznik czasu
  • version to długa wartość, którą można uzyskać z danych wyjściowych elementu DESCRIBE HISTORY table_spec.

Ani nie timestamp_expressionversion może być podzapytaniem.

Przykład

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

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

Składnia aparatu @

@ Użyj składni, aby określić znacznik czasu lub wersję. Znacznik czasu musi być w yyyyMMddHHmmssSSS formacie. Możesz określić wersję po @ , poprzedzając v element do wersji. Aby na przykład wysłać zapytanie o wersję 123 tabeli events, określ wartość events@v123.

Przykład

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Przykłady

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