Udostępnij za pośrednictwem


SELECT (podwybierz)

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

Tworzy zestaw wyników z co najmniej jednej referencji do jednej lub więcej tabel . Klauzula SELECT może być częścią zapytania, które zawiera również typowe wyrażenia tabeli (CTE), operacje zestawu i różne inne klauzule.

Składnia

  SELECT 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

  • SELECT klauzula

    Zbiera kolumny, które mają być zwracane z podzapytania, w tym wykonywanie wyrażeń, agregacji i deduplikacji.

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

    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 agregowanymi (MIN, MAX, COUNT, SUM, AVG) do grupowania wierszy 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 BY, oznacza GROUP BY to bez grupowania wyrażeń (agregacja globalna).

  • QUALIFY

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

Wybierz na tabeli Delta

Oprócz standardowych opcji SELECT tabele Delta obsługują opcje podróży czasowej opisane w tej części. Aby uzyskać więcej informacji, zobacz Praca z historią tabel w 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 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 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