SELECT

Dotyczy:sprawdź oznaczone jako tak Zaznaczone pole wyboru SQL usługi Databricks oznaczone jako tak 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 zestawów 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 SQL usługi Databricks podejmować lepsze decyzje dotyczące planowania. Usługa Databricks SQL 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. Domyślnie włączony.

  • 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 źródła danych SQL usługi Databricks.

  • star_clause

    Skrócona nazwa wszystkich kolumn, do których można odwoływać się w klauzuli FROM . Lista kolumn jest uporządkowana table_referencewedług kolejności s i kolejności kolumn w poszczególnych table_referencekolumnach .

    Ta lista nie zawiera kolumny _metadata . Należy odwoływać się do niego jawnie.

    • Nazwa_tabeli

      Jeśli obecna tabela ogranicza nazwy kolumn do tych w określonej tabeli, do których można się odwołać.

    • view_name

      Jeśli określono limity kolumn, które mają zostać rozwinięte do tych w określonym widoku, do których można się odwołać.

  • except_clause

    Dotyczy:zaznacz pole wyboru oznaczone jako tak Zaznaczone sql usługi Databricks oznaczone jako tak Databricks Runtime 11.0 lub nowsze

    Opcjonalnie czyści kolumny lub pola z możliwego do odwołania zestawu kolumn zidentyfikowanych w klauzuli select_star .

    • Column_name

      Kolumna, która jest częścią zestawu kolumn, do których można się odwoływać.

    • Field_name

      Odwołanie do pola w kolumnie zestawu kolumn, do których można się odwoływać. Jeśli wykluczysz wszystkie pola z obiektu STRUCT, wynik będzie pusty STRUCT.

    Każda nazwa musi odwoływać się do kolumny zawartej w zestawie kolumn, do których można się odwoływać lub do ich pól. W przeciwnym razie usługa Databricks SQL zgłasza błąd UNRESOLVED_COLUMN . Jeśli nazwy nakładają się lub nie są unikatowe, usługa SQL usługi Databricks zgłasza błąd EXCEPT_OVERLAPPING_COLUMNS .

  • table_reference

    Źródło danych wejściowych dla elementu SELECT.

  • WIDOK BOCZNY

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

  • GDZIE

    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 agregowanymi (MIN, MAX, COUNT, SUM, ), AVGaby grupować wiersze na podstawie wyrażeń grupowania i agregujących wartości 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 BYparametru , 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 , co najmniej jedna funkcja okna musi być obecna 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 polecenia DESCRIBE HISTORY table_spec.

Ani timestamp_expressionversion nie może być podzapytaniami.

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ę później @ , poprzedzając v element do wersji. Na przykład, aby wysłać zapytanie o wersję 123 tabeli events, 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