SELECT

Berlaku untuk:check marked yes Databricks SQL check marked yes Databricks Runtime

Menyusun tataan hasil dari satu atau beberapa referensi tabel. Klausul SELECT dapat menjadi bagian dari kueri yang juga mencakup ekspresi tabel umum (CTE), operasi yang diatur, dan berbagai klausul lainnya.

Sintaks

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

Parameter

  • petunjuk

    Petunjuk membantu pengoptimal Azure Databricks membuat keputusan perencanaan yang lebih baik. Azure Databricks mendukung petunjuk yang memengaruhi pemilihan strategi gabungan dan partisi ulang data.

  • ALL

    Pilih semua baris yang cocok dari referensi tabel. Diaktifkan secara default.

  • DISTINCT

    Pilih semua baris yang cocok dari referensi tabel setelah menghapus duplikat dalam hasil.

  • named_expression

    Ekspresi dengan nama yang ditetapkan opsional.

    • expression

      Kombinasi satu atau beberapa nilai, operator, dan fungsi SQL yang mengevaluasi nilai.

    • column_alias

      Pengenal kolom opsional yang menamai hasil ekspresi. Jika tidak ada column_alias yang disediakan, Databricks SQL akan memperolehnya.

  • star_clause

    Singkatan untuk memberi nama semua kolom yang dapat dirujuk dalam FROM klausul atau kolom atau bidang referensi tabel tertentu dalam FROM klausa.

  • table_reference

    Sumber input untuk SELECT. Referensi input ini dapat diubah menjadi referensi streaming dengan menggunakan STREAM kata kunci sebelum referensi.

  • LATERAL VIEW

    Digunakan bersama dengan fungsi generator seperti EXPLODE, yang menghasilkan tabel virtual yang berisi satu atau lebih baris. LATERAL VIEW menerapkan baris ke setiap baris output asli.

    Di Databricks SQL, dan dimulai dengan Databricks Runtime 12.2 klausa ini tidak digunakan lagi. Anda harus memanggil fungsi generator bernilai tabel sebagai table_reference.

  • WHERE

    Memfilter hasil klausul FROM berdasarkan predikat yang disediakan.

  • GROUP BY

    Ekspresi yang digunakan untuk mengelompokkan baris. Ini digunakan bersama dengan fungsi agregat (MIN, MAX, COUNT, SUM, AVG) untuk mengelompokkan baris berdasarkan ekspresi pengelompokan dan nilai agregat di setiap grup. Jika klausul FILTER dilampirkan ke fungsi agregat, hanya baris yang cocok yang diteruskan ke fungsi tersebut.

  • HAVING

    Predikat di mana baris yang dihasilkan oleh GROUP BY difilter. Klausul HAVING digunakan untuk memfilter baris setelah pengelompokan dilakukan. Jika Anda menentukan HAVING tanpa GROUP BY, ini menunjukkan GROUP BY tanpa ekspresi pengelompokan (agregat global).

  • QUALIFY

    Predikat yang digunakan untuk memfilter hasil fungsi jendela. Untuk menggunakan QUALIFY, setidaknya satu fungsi jendela harus ada dalam daftar SELECT atau klausul QUALIFY.

Pilih pada tabel Delta

Selain opsi standar SELECT, tabel Delta mendukung opsi perjalanan waktu yang dijelaskan di bagian ini. Untuk detailnya, lihat Bekerja dengan riwayat tabel Delta Lake.

AS OF sintaks

table_identifier TIMESTAMP AS OF timestamp_expression

table_identifier VERSION AS OF version
  • timestamp_expression dapat berupa salah satu dari:
    • '2018-10-18T22:15:12.013Z', yaitu, string yang dapat ditransmisikan ke stempel waktu
    • cast('2018-10-18 13:36:32 CEST' as timestamp)
    • '2018-10-18', yaitu, string tanggal
    • current_timestamp() - interval 12 hours
    • date_sub(current_date(), 1)
    • Ekspresi lain yang sedang atau dapat ditransmisikan ke stempel waktu
  • version adalah nilai panjang yang dapat diperoleh dari output DESCRIBE HISTORY table_spec.

Baik timestamp_expression maupun version tidak boleh berupa subkueri.

Contoh

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

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

@ sintaks

Gunakan @ sintaks untuk menentukan stempel waktu atau versi. Stempel waktu harus dalam format yyyyMMddHHmmssSSS. Anda dapat menentukan versi setelah @ dengan menambahkan v ke versi tersebut. Misalnya, untuk meminta versi 123 untuk tabel events, tentukan events@v123.

Contoh

> SELECT * FROM events@20190101000000000

> SELECT * FROM events@v123

Contoh

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