Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Databricks SQL
Databricks Runtime 16.2 dan versi lebih baru
Memproses hasil kueri sebelumnya menggunakan operasi berantai.
Sintaksis
{ SELECT clause [ GROUP BY grouping_expr [ AS column_alias ] [, ...] ] |
EXTEND { expression [ [ AS ] column_alias ] } [ , ...] |
SET { column_name = expression } [, ...] |
DROP column_name [, ...] |
AS table_alias |
WHERE clause |
{ LIMIT clause |
OFFSET clause |
LIMIT clause OFFSET clause } |
aggregation |
JOIN clause |
ORDER BY clause |
set_operator |
TABLESAMPLE clause
PIVOT clause
UNPIVOT clause }
aggregation
AGGREGATE aggregate_expr [ [ AS ] column_alias ] [, ...]
[ GROUP BY grouping_expr [AS column_alias ] ]
Parameter
-
Mengumpulkan kolom-kolom yang akan dikembalikan dari kueri, termasuk pelaksanaan ekspresi, dan deduplikasi.
Di Databricks Runtime 18.0 atau lebih tinggi, daftar kolom dapat berisi fungsi agregat. Klausa opsional
GROUP BYmenentukan ekspresi pengelompokan, danSELECToperator pipa hanya mengembalikan ekspresi sebelumGROUP BYklausa. JikaGROUP BYdihilangkan, semua baris diperlakukan sebagai satu grup. Untuk versi yang lebih lama, gunakan operasi sebagai gantinyaAGGREGATE.GROUP BY
Mengatur berdasarkan ekspresi mana baris dikelompokkan. Jika tidak ditentukan, semua baris diperlakukan sebagai satu grup.
-
Ekspresi yang digunakan untuk mengidentifikasi kolom pengelompokan. Lihat GROUP BY untuk informasi selengkapnya.
-
Pengidentifikasi kolom opsional yang memberi nama hasil ekspresi pengelompokan. Jika tidak ada
column_aliasyang disediakan, Azure Databricks memperolehnya.
-
PERLUAS
Menambahkan kolom baru ke daftar hasil kueri.
-
Kombinasi satu atau beberapa nilai, operator, dan fungsi SQL yang mengevaluasi ke nilai.
expressionmungkin berisi referensi ke kolom dalam daftar pemilihan kueri, sertacolumn_aliassebelumnya dalam klausaEXTENDini. -
Pengidentifikasi kolom opsional yang memberi nama hasil ekspresi. Jika tidak ada
column_aliasyang disediakan Azure Databricks mendapatkannya.
-
SET
Mengganti kolom yang sudah ada dalam daftar pilih kueri dengan nilai baru.
Operasi ini dilakukan sesuai dengan urutannya dalam klausa
SET. Hasil dari setiap ekspresi dapat mengamati kolom yang telah diperbarui oleh ekspresi sebelumnya.-
Nama kolom yang akan diperbarui. Jika kolom tidak ada, Azure Databricks menimbulkan kesalahan UNRESOLVED_COLUMN.
ekspresi
Kombinasi satu atau beberapa nilai, operator, dan fungsi SQL yang mengevaluasi ke nilai.
-
DROP column_name [, ...]
Menghapus kolom dari daftar seleksi kueri.
Jika kolom tidak ada, Azure Databricks menimbulkan kesalahan UNRESOLVED_COLUMN.
SEBAGAI table_alias
Menetapkan sebuah nama pada hasil kueri.
-
Memfilter hasil kueri berdasarkan predikat yang disediakan.
-
Membatasi jumlah maksimum baris yang dapat dikembalikan oleh kueri. Klausa ini biasanya mengikuti ORDER BY untuk menghasilkan hasil deterministik.
-
Melewati sejumlah baris yang dikembalikan oleh kueri. Klausa ini biasanya digunakan bersama dengan LIMIT ke halaman melalui kumpulan hasil, dan ORDER BY untuk menghasilkan hasil deterministik.
Nota
Saat melakukan paging melalui kumpulan hasil menggunakan LIMIT dan OFFSET semua baris diproses, termasuk baris yang dilewati. Namun, hanya subset baris yang ditentukan yang dikembalikan dalam tataan hasil. Penomoran halaman dengan teknik ini tidak disarankan untuk kueri yang memerlukan sumber daya tinggi.
agregasi
Mengagregasi kumpulan hasil kueri berdasarkan ekspresi yang disediakan dan ekspresi pengelompokan opsional.
Operasi ini menghasilkan tataan hasil tempat kolom pengelompokan muncul sebelum kolom agregat.
AGREGAT
Spesifikasikan ekspresi yang akan diagregasi.
-
Ekspresi yang berisi satu atau beberapa fungsi agregat. Lihat GROUP BY untuk informasi selengkapnya.
-
GROUP BY
Mengatur berdasarkan ekspresi mana baris dikelompokkan. Jika tidak ditentukan, semua baris diperlakukan sebagai satu grup.
-
Pengidentifikasi kolom opsional yang memberi nama hasil ekspresi. Jika tidak ada
column_aliasyang disediakan Azure Databricks mendapatkannya.
-
Menggabungkan dua relasi atau lebih menggunakan operasi join. Lihat JOIN untuk informasi selengkapnya.
-
Mengurutkan baris dari kumpulan hasil kueri. Baris output diurutkan di seluruh partisi. Parameter ini saling eksklusif dengan
SORT BY,CLUSTER BY, danDISTRIBUTE BYdan tidak dapat ditentukan bersama-sama. -
Menggabungkan kueri dengan satu atau beberapa subkueri menggunakan operator
UNION,EXCEPT, atauINTERSECT. -
Mengurangi ukuran hasil yang ditetapkan hanya dengan mengambil sampel sebagian kecil dari baris.
-
Digunakan untuk perspektif data. Anda bisa mendapatkan nilai agregat berdasarkan nilai kolom tertentu. Lihat PIVOT untuk informasi selengkapnya.
-
Digunakan untuk perspektif data. Anda dapat membagi beberapa grup kolom menjadi baris. Lihat UNPIVOT untuk informasi selengkapnya.
Kondisi kesalahan umum
- MULTIPLE_QUERY_RESULT_CLAUSES_WITH_PIPE_OPERATORS
- PIPE_OPERATOR_AGGREGATE_EXPRESSION_CONTAINS_NO_AGGREGATE_FUNCTION
- PIPE_OPERATOR_CONTAINS_AGGREGATE_FUNCTION
- UNRESOLVED_COLUMN
Contoh
-- This query
> FROM customer
|> LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%'
|> AGGREGATE COUNT(o_orderkey) c_count
GROUP BY c_custkey
|> AGGREGATE COUNT(*) AS custdist
GROUP BY c_count
|> ORDER BY custdist DESC, c_count DESC;
is equivalent to:
> SELECT c_count, COUNT(*) AS custdist
FROM
(SELECT c_custkey, COUNT(o_orderkey) c_count
FROM customer
LEFT OUTER JOIN orders ON c_custkey = o_custkey
AND o_comment NOT LIKE '%unusual%packages%' GROUP BY c_custkey
) AS c_orders
GROUP BY c_count
ORDER BY custdist DESC, c_count DESC;
-- Using the SELECT clause following a FROM clause
> CREATE TABLE t AS VALUES (0), (1) AS t(col);
> FROM t
|> SELECT col * 2 AS result;
result
------
0
2
-- Adding columns to the result set
> VALUES (0), (1) tab(col)
|> EXTEND col * 2 AS result;
col result
--- ------
0 0
1 2
-- Replacing an expression
> VALUES (0), (1) tab(col)
|> SET col = col * 2;
col
---
0
2
-- Removing a column from the result set
> VALUES (0, 1) tab(col1, col2)
|> DROP col1;
col2
----
1
-- Using a table alias
> VALUES (0, 1) tab(col1, col2)
|> AS new_tab
|> SELECT col1 + col2 FROM new_tab;
col1 + col2
1
-- Filtering the result set
> VALUES (0), (1) tab(col)
|> WHERE col = 1;
col
---
1
-- Using LIMIT to truncate the result
> VALUES (0), (0) tab(col)
|> LIMIT 1;
col
---
0
-- Full-table aggregation
> VALUES (0), (1) tab(col)
|> AGGREGATE COUNT(col) AS count;
count
-----
2
-- Aggregation with grouping
> VALUES (0, 1), (0, 2) tab(col1, col2)
|> AGGREGATE COUNT(col2) AS count GROUP BY col1;
col1 count
---- -----
0 2
-- Using JOINs
> SELECT 0 AS a, 1 AS b
|> AS lhs
|> JOIN VALUES (0, 2) rhs(a, b) ON (lhs.a = rhs.a);
a b c d
--- --- --- ---
0 1 0 2
> VALUES ('apples', 3), ('bananas', 4) t(item, sales)
|> AS produce_sales
|> LEFT JOIN
(SELECT "apples" AS item, 123 AS id) AS produce_data
USING (item)
|> SELECT produce_sales.item, sales, id;
item sales id
--------- ------- ------
apples 3 123
bananas 4 NULL
-- Using ORDER BY
> VALUES (0), (1) tab(col)
|> ORDER BY col DESC;
col
---
1
0
> VALUES (0), (1) tab(a, b)
|> UNION ALL VALUES (2), (3) tab(c, d);
a b
--- ----
0 1
2 3
-- Sampling the result set
> VALUES (0), (0), (0), (0) tab(col)
|> TABLESAMPLE (1 ROWS);
col
---
0
> VALUES (0), (0) tab(col)
|> TABLESAMPLE (100 PERCENT);
col
---
0
0
-- Pivoting a query
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> PIVOT (
SUM(earnings)
FOR COURSE IN ('dotNET', 'Java')
)
year dotNET Java
---- ------ ------
2012 15000 20000
2013 48000 30000
-- Using | as the pipe token (DBR 18.0 and above)
> CREATE TABLE t AS VALUES (0, 1), (0, 2) AS t(a, b);
> FROM t
| WHERE a < 2
| SELECT a, SUM(b) AS total GROUP BY a;
a total
- -----
0 3
-- Using SELECT with aggregates and GROUP BY (DBR 18.0 and above)
> VALUES (0, 1), (0, 2), (1, 3) tab(a, b)
|> SELECT a, SUM(b) AS total GROUP BY a;
a total
- -----
0 3
1 3
-- Full-table aggregation using SELECT (DBR 18.0 and above)
> VALUES (0), (1), (2) tab(col)
|> SELECT SUM(col) AS total;
total
-----
3
-- Using UNPIVOT
> VALUES
("dotNET", 2012, 10000),
("Java", 2012, 20000),
("dotNET", 2012, 5000),
("dotNET", 2013, 48000),
("Java", 2013, 30000)
AS courseSales(course, year, earnings)
|> UNPIVOT (
earningsYear FOR `year` IN (`2012`, `2013`, `2014`)
course year earnings
-------- ------ --------
Java 2012 20000
Java 2013 30000
dotNET 2012 15000
dotNET 2013 48000
dotNET 2014 22500