SELECT
Berlaku untuk: Databricks SQL 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 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.
-
Kombinasi satu atau beberapa nilai, operator, dan fungsi SQL yang mengevaluasi nilai.
-
Pengenal kolom opsional yang menamai hasil ekspresi. Jika tidak ada
column_alias
yang disediakan, Databricks SQL akan memperolehnya.
-
-
Singkatan untuk memberi nama semua kolom yang dapat dirujuk dalam
FROM
klausul atau kolom atau bidang referensi tabel tertentu dalamFROM
klausa. -
Sumber input untuk
SELECT
. Referensi input ini dapat diubah menjadi referensi streaming dengan menggunakanSTREAM
kata kunci sebelum referensi. -
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.
-
Memfilter hasil klausul
FROM
berdasarkan predikat yang disediakan. -
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 klausulFILTER
dilampirkan ke fungsi agregat, hanya baris yang cocok yang diteruskan ke fungsi tersebut. -
Predikat di mana baris yang dihasilkan oleh
GROUP BY
difilter. KlausulHAVING
digunakan untuk memfilter baris setelah pengelompokan dilakukan. Jika Anda menentukanHAVING
tanpaGROUP BY
, ini menunjukkanGROUP BY
tanpa ekspresi pengelompokan (agregat global). -
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 waktucast('2018-10-18 13:36:32 CEST' as timestamp)
'2018-10-18'
, yaitu, string tanggalcurrent_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 outputDESCRIBE 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 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
Artikel terkait
- Klausul CLUSTER BY
- Ekspresi tabel umum (CTE)
- Klausul DISTRIBUSIKAN OLEH
- Klausa GROUP BY
- Klausul HAVING
- Klausul QUALIFY
- Petunjuk
- Klausul VALUES
- IKAT
- Klausul LATERAL VIEW
- Klausul LIMIT
- klausul OFFSET
- Klausul ORDER BY
- Klausul PIVOT
- Kueri
- Klausul TABLESAMPLE
- Setel operator
- Klausul SORT BY
- Klausa bintang
- Fungsi bernilai tabel (TVF)
- referensi tabel
- Klausa UNPIVOT
- DI MANA klausa
- Klausul WINDOW
- Fungsi jendela