次の方法で共有


SQL パイプラインの構文

適用対象: Databricks Runtime 16.2 以降

Azure Databricks では、チェーン演算子の組み合わせからクエリを作成できる SQL パイプライン構文がサポートされています。

  • どのクエリでも、サフィックスとして 0 個以上のパイプ演算子を使用でき、パイプ文字 |>で区切られます。
  • パイプ処理 は、1つ以上の SQL キーワードで始まり、その後に独自の文法が続きます。
  • 演算子は、任意の順序で、何度でも適用できます。
  • 通常、FROM relation_nameはパイプラインを開始するために使用されますが、クエリ はパイプラインを開始できます。

構文

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

パラメーター

  • relation_name

    パイプラインの入力として使用するテーブルまたはビューを識別します。 テーブルまたはビューが見つからない場合、Azure Databricks によって TABLE_OR_VIEW_NOT_FOUND エラーが発生します。

  • piped_operation

    直前のクエリまたはパイプ操作を処理する操作。 詳細については、piped_operation を参照してください。

これは、ANSI SQL で記述された TPC-H ベンチマークのクエリ 13 です。

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

SQL パイプ演算子を使用して同じロジックを記述するには、次のように表現できます。

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