WATERMARK, klauzula

Dotyczy:check marked yes Databricks SQL check marked yes Databricks Runtime 12.0 i nowsze

Dodaje znak wodny do relacji w instrukcji select. Klauzula WATERMARK dotyczy tylko zapytań dotyczących danych przesyłania strumieniowego stanowego, które obejmują sprzężenia strumienia i agregację.

Składnia

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

Parametry

  • named_expression

    Wyrażenie, które zawiera wartość typu timestamp. Wyrażenie musi być odwołaniem do istniejącej kolumny lub deterministycznej transformacji względem istniejących kolumn. Wyrażenie dodaje kolumnę typu sygnatury czasowej, która służy do śledzenia znaku wodnego. Dodana kolumna jest dostępna do wykonywania zapytań.

  • interval_clause

    Literał interwału definiujący próg opóźnienia znaku wodnego. Wartość dodatnia musi być mniejsza niż miesiąc.

Przykłady

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