Compartir vía


Sintaxis de canalización de SQL

Se aplica a:marcado como sí Databricks Runtime 16.2 y versiones posteriores

Azure Databricks admite la sintaxis de canalización de SQL que permite redactar consultas a partir de combinaciones de operadores encadenados.

  • Cualquier consulta puede tener cero o más operadores de canalización como sufijo, separados por el carácter de canalización |>.
  • Cada operación canalizada comienza con una o varias palabras clave SQL seguidas de su propia gramática.
  • Los operadores se pueden aplicar en cualquier orden, el número de veces que quiera.
  • Normalmente FROM relation_name se usa para iniciar una canalización, pero cualquier query puede iniciar una canalización.

Sintaxis

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

Parámetros

  • relation_name

    Identifica una tabla o vista que se va a usar como entrada para la canalización. Si no se encuentra la tabla o vista, Azure Databricks genera un error TABLE_OR_VIEW_NOT_FOUND.

  • piped_operation

    Una operación que consume la consulta o la operación de canalización anteriores. Consulte piped_operation para obtener más información.

Ejemplo

Esta es la consulta 13 de la prueba comparativa de TPC-H escrita en 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;

Para escribir la misma lógica mediante operadores de canalización de SQL, puede expresarla de la siguiente manera:

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