Udostępnij za pośrednictwem


SELECT

Dotyczy:zaznacz pole wyboru oznaczone jako tak Databricks SQL zaznacz pole wyboru oznaczone jako tak Databricks Runtime

Komponuje wynik set z co najmniej jednego table odwołania. Klauzula SELECT może być częścią zapytania zawierającego również typowe wyrażenia table (CTE), operacje set 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 } [, ...] )

Parameters

  • 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 join i ponowne partycjonowanie danych.

  • ALL

    Select wszystkie pasujące wiersze z odwołań table. Włączone domyślnie.

  • ODMIENNY

    Select wszystkie pasujące wiersze z odwołań table po usunięciu duplikatów w wynikach.

  • named_expression

    Wyrażenie z opcjonalną przypisaną nazwą.

    • wyrażenie

      Kombinacja co najmniej jednej values, operatorów i funkcji SQL, które obliczają wartość.

    • column_alias

      Opcjonalna nazwa wyrażenia na columnidentifier. Jeśli nie column_alias podano usługi Databricks SQL, pochodzi z niego.

  • star_clause

    Skrócona nazwa wszystkich columns możliwych do odwołania w klauzuli FROM lub określonej table odwołania columns lub pól 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.

  • LATERAL VIEW

    Używane w połączeniu z funkcjami generatorów, takimi jak EXPLODE, który generuje wirtualny table zawierający 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 table o wartości 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 oraz do agregacji za pomocą values 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).

  • QUALIFY

    Predykaty używane do filtrowania wyników funkcji window. Aby użyć QUALIFY, co najmniej jedna funkcja window musi być obecna w SELECTlist lub klauzuli QUALIFY.

Select w usłudze Delta table

Oprócz standardowych opcji SELECT funkcja Delta tables obsługuje opcje podróży czasowej opisane w tej sekcji. Aby uzyskać szczegółowe informacje, zobacz Praca z Delta Lake table historia.

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 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 dla tableevents, określ 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