SELECT

Komponuje zestaw wyników z co najmniej jednej tabeli. Klauzula SELECT może być częścią zapytania, które obejmuje również wspólne wyrażenia tabeli (CTE), operacje zestawów i różne inne klauzule.

Składnia

SELECT [ hints ] [ ALL | DISTINCT ] { named_expression | star_clause } [, ...]
  FROM from_item [, ...]
  [ LATERAL VIEW clause ]
  [ PIVOT clause ]
  [ WHERE clause ]
  [ GROUP BY clause ]
  [ HAVING clause]
  [ QUALIFY clause ]

from_item
{ table_name [ TABLESAMPLE clause ] [ table_alias ] |
  JOIN clause |
  [ LATERAL ] table_valued_function [ table_alias ] |
  VALUES clause |
  [ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ table_alias ] }

named_expression
   expression [ column_alias ]

star_clause
   [ { table_name | view_name } . ] *

Parametry

  • Wskazówki

    Wskazówki pomagają optymalizatorowi środowiska uruchomieniowego Databricks podejmować lepsze decyzje dotyczące planowania. Databricks Runtime obsługuje wskazówki wpływające na wybór strategii sprzężenia i ponowne partycjonowanie danych.

  • ALL

    Wybierz wszystkie pasujące wiersze z relacji. Domyślnie włączony.

  • ODRĘBNE

    Zaznacz wszystkie pasujące wiersze z relacji po usunięciu duplikatów w wynikach.

  • named_expression

    Wyrażenie z opcjonalną przypisaną nazwą.

    • expression

      Kombinacja co najmniej jednej wartości, operatorów i SQL funkcji, które są obliczane na wartość.

    • column_alias

      Opcjonalny identyfikator kolumny nazewnictwa wyniku wyrażenia. Jeśli nie column_alias podano Databricks Runtime, zostanie on pochodny.

  • star_clause

    Skrócona nazwa wszystkich kolumn, do których można odwoływać się w klauzuli FROM . Lista kolumn jest uporządkowana według kolejności s i kolejności from_itemkolumn w każdym from_itemobiekcie .

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

    • Nazwa_tabeli

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

    • 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 odwoływać się.

  • from_item

    Źródło danych wejściowych dla elementu SELECT. Jeden z poniższych programów:

    • Nazwa_tabeli

      Identyfikuje tabelę, która może zawierać specyfikację czasową. Aby uzyskać szczegółowe informacje, zobacz Wykonywanie zapytań dotyczących starszej migawki tabeli (podróży czasowej).

    • view_name

      Identyfikuje widok.

    • DOŁĄCZYĆ

      Łączy co najmniej dwie relacje przy użyciu sprzężenia.

    • [ LATERAL ] table_valued_function

      Wywołuje funkcję tabeli. Aby odwołać się do kolumn uwidocznionych przez poprzednią from_item klauzulę w tej samej FROM klauzuli, należy określić LATERALwartość .

    • VALUES

      Definiuje tabelę śródliniową.

    • [ LATERAL ] ( zapytanie )

      Oblicza relację przy użyciu zapytania. Zapytanie poprzedzone LATERAL prefiksem może odwoływać się do kolumn uwidocznionych przez poprzednią from_item klauzulę FROM . Taka konstrukcja jest nazywana skorelowanym lub zależnym zapytaniem.

      LATERALjest obsługiwany od czasu Databricks Runtime 9.0.

    • TABLESAMPLE

      Opcjonalnie zmniejsz rozmiar zestawu wyników, próbkując tylko ułamek wierszy.

    • table_alias

      Opcjonalnie określa etykietę dla elementu from_item. Jeśli parametr table_alias zawiera column_identifierich liczbę, musi być zgodna z liczbą kolumn w elemecie from_item.

  • PRZESTAWNE

    Używane do perspektywy danych; Można uzyskać zagregowane wartości na podstawie określonej wartości kolumny.

  • WIDOK LATERALNY

    Używany w połączeniu z funkcjami generatora, takimi jak EXPLODE, która 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 agregacji (MIN, MAX, COUNT, SUM, AVG) do grupowania wierszy na podstawie wyrażeń grupowania i wartości zagregowanych 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 są filtrowane wiersze generowane przez GROUP BY . Klauzula HAVING jest używana do filtrowania wierszy po wykonaniu grupowania. Jeśli określisz HAVING 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 , wymagana jest co najmniej jedna funkcja okna na liście SELECT lub klauzuli QUALIFY.

Wybierz tabelę delty

Oprócz standardowych SELECT opcji tabel delta obsługuje opcje podróży czasowej opisane w tej sekcji. Aby uzyskać szczegółowe informacje, zobacz Wykonywanie zapytań o starszą migawkę tabeli (podróż czasowa).

AS OF Składni

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version

gdzie

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

Ani timestamp_expressionversion nie może być podquery.

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

Użyj składni, @ aby określić znacznik czasu lub wersję. Sygnatura czasowa 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 events@v123wartość .

Przykład

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123