Condividi tramite


Clausola WATERMARK

Si applica a: segno di spunta sì Databricks SQL segno di spunta sì Databricks Runtime 12.0 e versioni successive

Aggiunge una filigrana a una relazione in un'istruzione select. La WATERMARK clausola si applica solo alle query sui dati di streaming con stato, che includono join di flusso di flusso e aggregazione.

Sintassi

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

Parametri

  • named_expression

    Espressione che fornisce un valore di tipo timestamp. L'espressione deve essere un riferimento alla colonna esistente o una trasformazione deterministica rispetto alle colonne esistenti. L'espressione aggiunge una colonna di tipo timestamp utilizzata per tenere traccia della filigrana. La colonna aggiunta è disponibile per la query.

  • interval_clause

    Valore letterale intervallo che definisce la soglia di ritardo della filigrana. Deve essere un valore positivo minore di un mese.

Esempi

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