Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Geçerlidir:
Databricks SQL
Databricks Runtime 16.2 ve üzeri
Zincirleme bir işlem kullanarak önceki sorgunun sonucunu işler.
Sözdizimi
{ 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 ] ]
Parametreler
-
Sorgudan döndürülecek sütunları, ifadelerin yürütülmesi ve yinelenenlerin kaldırılması işlemleri dahil olmak üzere, toplar.
Databricks Runtime 18.0 veya üzerinde sütun listesi toplama işlevleri içerebilir. İsteğe bağlı
GROUP BYyan tümcesi gruplandırma ifadelerini belirtir veSELECTkanal işleci yalnızca yan tümcedenGROUP BYönceki ifadeleri döndürür. AtlanırsaGROUP BY, tüm satırlar tek bir grup olarak değerlendirilir. Önceki sürümler için bunun yerine işlemini kullanınAGGREGATE.GROUP BY
Satırların hangi ifadelere göre gruplandırıldığı belirtir. Belirtilmezse, tüm satırlar tek bir grup olarak değerlendirilir.
-
Gruplandırma sütunlarını tanımlayan bir ifade. Daha fazla bilgi için bkz. GROUP BY.
-
Gruplandırma ifadesi sonucunu adlandıran isteğe bağlı bir sütun tanımlayıcısı.
column_aliassağlanmazsa, Azure Databricks türetilir.
-
UZATMA
Sorgu seçme listesine yeni sütunlar ekler.
-
Bir değer olarak değerlendirilen bir veya daha fazla değer, işleç ve SQL işlevinin birleşimi.
expression, bucolumn_aliastümcesinde, sorgu seçme listesindeki sütunlara referanslar ve öncekiEXTEND'in referanslarını içerebilir. -
İfade sonucunu adlandıran isteğe bağlı bir sütun tanımlayıcısı.
column_aliassağlanmazsa Azure Databricks türetilir.
-
SET
Sorgu seçme listesindeki mevcut sütunları yeni değerlerle geçersiz kılar.
İşlem,
SETyan tümcesinde görünüm sırasına göre gerçekleştirilir. Herhangi bir ifadenin sonucu, önceki ifadelerle güncelleştirilen sütunları gözlemleyebilir.-
Güncelleştirilecek sütunun adı. Sütun yoksa Azure Databricks bir UNRESOLVED_COLUMN hatası oluşturur.
ifade
Bir değer olarak değerlendirilen bir veya daha fazla değer, işleç ve SQL işlevinin birleşimi.
-
DROP column_name [, ...]
Sorgu seçme listesinden sütunları kaldırır.
Sütun yoksa Azure Databricks bir UNRESOLVED_COLUMN hatası oluşturur.
table_alias OLARAK
Sorgunun sonucuna bir ad atar.
-
Sorgunun sonucunu sağlanan koşula göre filtreler.
-
Sorgu tarafından döndürülebilecek en fazla satır sayısını sınırlar. Bu yan tümce genellikle bir ORDER BY'ü izleyerek belirleyici bir sonuç üretir.
-
Sorgu tarafından döndürülen belirli sayıda satırı atlar. Bu yan tümce, genellikle bir sonuç kümesinde sayfalandırma yapmak için LIMIT ile birlikte ve belirleyici bir sonuç üretmek için ORDER BY ile birlikte kullanılır.
Birleşim
Sağlanan ifadelere ve isteğe bağlı gruplandırma ifadelerine göre sorgunun sonuç kümesini toplar.
Bu işlem, gruplandırma sütunlarının toplanan sütundan önce göründüğü bir sonuç kümesi oluşturur.
TOPLAM
Toplanacak ifadeleri belirtir.
-
Bir veya daha fazla toplama işlevi içeren bir ifade. Daha fazla bilgi için bkz. GROUP BY.
-
GROUP BY
Satırların hangi ifadelere göre gruplandırıldığı belirtir. Belirtilmezse, tüm satırlar tek bir grup olarak değerlendirilir.
-
İfade sonucunu adlandıran isteğe bağlı bir sütun tanımlayıcısı.
column_aliassağlanmazsa Azure Databricks türetilir.
-
Birleştirme kullanarak iki veya daha fazla ilişkiyi birleştirir. Daha fazla bilgi için bkz. JOIN.
-
Sorgunun sonuç kümesinin satırlarını sıralar. Çıkış satırları bölmeler boyunca sıralanır. Bu parametre,
SORT BY,CLUSTER BYveDISTRIBUTE BYile birbirini dışlar ve birlikte belirtilemez. -
UNION,EXCEPTveyaINTERSECTişleçleri kullanarak sorguyu bir veya daha fazla alt sorguyla birleştirir. -
Satırların yalnızca bir bölümünü örneklemek suretiyle sonuç kümesinin boyutunu küçültür.
-
Veri perspektifi için kullanılır. Toplanan değerleri belirli sütun değerlerine göre alabilirsiniz. Daha fazla bilgi için bkz. PIVOT.
-
Veri perspektifi için kullanılır. Birden çok sütun grubunu satırlara bölebilirsiniz. Daha fazla bilgi için bkz. UNPIVOT.
Yaygın hata koşulları
- MULTIPLE_QUERY_RESULT_CLAUSES_WITH_PIPE_OPERATORS
- PIPE_OPERATOR_AGGREGATE_EXPRESSION_CONTAINS_NO_AGGREGATE_FUNCTION
- PIPE_OPERATOR_CONTAINS_AGGREGATE_FUNCTION
- UNRESOLVED_COLUMN
Örnekler
-- 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