Kanallı işlem

Geçerlidir:evet olarak işaretlendi Databricks SQL evet olarak işaretlendi 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

  • SELECT cümlecik

    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 BY yan tümcesi gruplandırma ifadelerini belirtir ve SELECT kanal işleci yalnızca yan tümceden GROUP BY önceki ifadeleri döndürür. Atlanırsa GROUP BY , tüm satırlar tek bir grup olarak değerlendirilir. Önceki sürümler için bunun yerine işlemini kullanın AGGREGATE .

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

        Gruplandırma sütunlarını tanımlayan bir ifade. Daha fazla bilgi için bkz. GROUP BY.

      • column_alias

        Gruplandırma ifadesi sonucunu adlandıran isteğe bağlı bir sütun tanımlayıcısı. column_alias sağlanmazsa, Azure Databricks türetilir.

  • UZATMA

    Sorgu seçme listesine yeni sütunlar ekler.

    • ifade

      Bir değer olarak değerlendirilen bir veya daha fazla değer, işleç ve SQL işlevinin birleşimi.

      expression, bu column_alias tümcesinde, sorgu seçme listesindeki sütunlara referanslar ve önceki EXTEND'in referanslarını içerebilir.

    • column_alias

      İfade sonucunu adlandıran isteğe bağlı bir sütun tanımlayıcısı. column_alias sağlanmazsa Azure Databricks türetilir.

  • SET

    Sorgu seçme listesindeki mevcut sütunları yeni değerlerle geçersiz kılar.

    İşlem, SET yan 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.

    • sütun_adı

      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.

  • WHERE

    Sorgunun sonucunu sağlanan koşula göre filtreler.

  • LIMIT

    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.

  • OFFSET

    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.

    Not

    LIMIT ve OFFSET kullanarak bir sonuç kümesinde sayfalama yaparken, atlanan satırlar da dahil olmak üzere tüm satırlar işlenir. Ancak sonuç kümesinde yalnızca belirtilen satır alt kümesi döndürülür. Bu teknikle sayfalandırma, yoğun kaynak kullanan sorgular için önerilmez.

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

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

        Gruplandırma sütunlarını tanımlayan bir ifade. Daha fazla bilgi için bkz. GROUP BY.

        Genel bir GROUP BY yan tümcesinin aksine, tam sayı değeri sorguda oluşturulan sonuç kümesini değil girişi sağlayan sütunu tanımlar.

    • column_alias

      İfade sonucunu adlandıran isteğe bağlı bir sütun tanımlayıcısı. column_alias sağlanmazsa Azure Databricks türetilir.

  • JOIN

    Birleştirme kullanarak iki veya daha fazla ilişkiyi birleştirir. Daha fazla bilgi için bkz. JOIN.

  • ORDER BY

    Sorgunun sonuç kümesinin satırlarını sıralar. Çıkış satırları bölmeler boyunca sıralanır. Bu parametre, SORT BY, CLUSTER BYve DISTRIBUTE BY ile birbirini dışlar ve birlikte belirtilemez.

  • set_operator

    UNION, EXCEPTveya INTERSECT işleçleri kullanarak sorguyu bir veya daha fazla alt sorguyla birleştirir.

  • TABLESAMPLE

    Satırların yalnızca bir bölümünü örneklemek suretiyle sonuç kümesinin boyutunu küçültür.

  • PIVOT

    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.

  • UNPIVOT

    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ı

Ö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