Freigeben über


SQL-Pipelinesyntax

Gilt für:Ja, mit Häkchen markiert Databricks SQL Ja, mit Häkchen markiert Databricks Runtime 16.2 und höher

Azure Databricks unterstützt die SQL-Pipelinesyntax, mit der Abfragen aus Kombinationen von verketteten Operatoren erstellt werden können.

  • Jede Abfrage kann null oder mehr Pipeoperatoren als Suffix aufweisen, durch das Pipetoken |> (oder | in Databricks Runtime 18.0 oder höher) delineiert werden.
  • Jeder gepipete Vorgang beginnt mit einem oder mehreren SQL-Schlüsselwörtern, gefolgt von einer eigenen Grammatik.
  • Operatoren können in beliebiger Reihenfolge und beliebig oft angewendet werden.
  • In der Regel wird FROM relation_name verwendet, um eine Pipeline zu starten, aber eine beliebige Abfrage kann ebenfalls eine Pipeline starten.

Syntax

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

In Databricks Runtime 18.0 und höher können | Sie anstelle von |>:

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

Parameter

  • relation_name

    Gibt eine Tabelle oder Ansicht an, die als Eingabe für die Pipeline verwendet werden soll. Wenn die Tabelle oder Ansicht nicht gefunden werden kann, löst Azure Databricks einen Fehler TABLE_OR_VIEW_NOT_FOUND aus.

  • piped_operation

    Ein Vorgang, der den vorhergehenden Abfrage- oder Pipevorgang verwendet. Ausführliche Informationen finden Sie unter piped_operation.

Beispiel

Dies ist Abfrage 13 aus dem in ANSI SQL geschriebenen TPC-H Benchmark:

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

Wenn Sie dieselbe Logik mithilfe von SQL-Pipeoperatoren schreiben möchten, können Sie sie wie folgt ausdrücken:

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