Klauzule WATERMARK
Platí pro: Databricks SQL Databricks Runtime 12.0 a vyšší
Přidá vodoznak do vztahu v příkazu select. Klauzule WATERMARK
se vztahuje pouze na dotazy na stavová streamovaná data, která zahrnují spojení datových proudů a agregaci.
Syntaxe
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
-
Výraz, který poskytuje hodnotu typu
timestamp
. Výraz musí být buď odkazem na existující sloupec, nebo deterministickým transformací pro existující sloupce. Výraz přidá sloupec typu časového razítka, který se používá ke sledování vodoznaku. Přidaný sloupec je k dispozici pro dotazování. -
Literál intervalu, který definuje prahovou hodnotu zpoždění meze. Musí to být kladná hodnota menší než měsíc.
Příklady
-- 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');