WATERMARK, klauzula
Dotyczy: Databricks SQL 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
-
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ń. -
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');