Sintaks Pipa SQL

Berlaku untuk:dicentang ya Databricks SQL dicentang ya Databricks Runtime 16.2 dan versi lebih baru

Azure Databricks mendukung sintaks alur SQL yang memungkinkan pembuatan kueri dari kombinasi operator berantai.

  • Setiap kueri dapat memiliki nol atau lebih operator pipa sebagai akhiran, yang diuraikan oleh token |> pipa (atau | di Databricks Runtime 18.0 atau lebih tinggi).
  • Setiap operasi pipa dimulai dengan satu atau beberapa kata kunci SQL diikuti oleh tata bahasanya sendiri.
  • Operator dapat menerapkan dalam urutan apa pun, berapa kali.
  • Biasanya FROM relation_name digunakan untuk memulai alur, tetapi kueri apa pun dapat memulai alur.

Sintaksis

{ FROM | TABLE } relation_name { |> piped_operation } [ ...]

Di Databricks Runtime 18.0 ke atas, Anda dapat menggunakan | sebagai ganti |>dari :

{ FROM | TABLE } relation_name { | piped_operation } [ ...]

Parameter

  • nama_relasi

    Mengidentifikasi tabel atau tampilan yang akan digunakan sebagai input untuk alur. Jika tabel atau tampilan tidak dapat ditemukan, Azure Databricks menimbulkan kesalahan TABLE_OR_VIEW_NOT_FOUND.

  • piped_operation

    Operasi yang menggunakan kueri atau operasi pipa sebelumnya. Lihat piped_operation untuk informasi lebih lanjut.

Kondisi kesalahan umum

Contoh

Ini adalah kueri 13 dari tolok ukur TPC-H yang ditulis dalam ANSI SQL:

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

Untuk menulis logika yang sama menggunakan operator pipa SQL, Anda dapat mengekspresikannya seperti ini:

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