Compartir a través de


WATERMARK (cláusula)

Se aplica a: casilla marcada como SíDatabricks SQL casilla marcada como Sí Databricks Runtime 12.0 y versiones posteriores

Agrega una marca de agua a una relación en una instrucción SELECT. La cláusula WATERMARK solo se aplica a las consultas en datos de streaming con estado, que incluyen combinaciones y agregaciones de secuencias de flujo.

Sintaxis

from_item
{ table_name [ TABLESAMPLE clause ] [ watermark_clause ] [ table_alias ] |
  JOIN clause |
  [ LATERAL ] table_valued_function [ table_alias ] |
  VALUE clause |
  [ LATERAL ] ( query ) [ TABLESAMPLE clause ] [ watermark_clause ] [ table_alias ] }

watermark_clause
  WATERMARK named_expression DELAY OF interval

Parámetros

  • named_expression

    Una expresión que proporciona un valor de tipo timestamp. La expresión debe ser una referencia a la columna existente o una transformación determinista en las columnas existentes. La expresión agrega una columna del tipo de marca de tiempo que se usa para realizar un seguimiento de la marca de agua. La columna agregada está disponible para su consulta.

  • interval_clause

    Un literal de intervalo que define el umbral de retraso de la marca de agua. Debe ser un valor positivo menor que un mes.

Ejemplos

-- Creating a streaming table performing time window row count, with defining watermark from existing column
> CREATE OR REFRESH STREAMING TABLE window_agg_1
  AS SELECT window(ts, '10 seconds') as w, count(*) as CNT
  FROM
  STREAM stream_source WATERMARK ts DELAY OF INTERVAL 10 SECONDS AS stream
  GROUP BY window(ts, '10 seconds');

-- Creating a streaming table performing time window row count, with deriving a new timestamp column to define watermark
> CREATE OR REFRESH STREAMING TABLE window_agg_2
  AS SELECT window(ts, '10 seconds') as w, count(*) as CNT
  FROM
  STREAM stream_source WATERMARK to_timestamp(ts_str) AS ts DELAY OF INTERVAL 10 SECONDS AS stream
  GROUP BY window(ts, '10 seconds');