Cláusula WATERMARK
Aplica-se a: SQL do Databricks Databricks Runtime 12.0 e superior
Adiciona uma marca d'água a uma relação em uma instrução select. A cláusula WATERMARK
se aplica apenas a consultas em dados de streaming com estado, que incluem junções de fluxo a fluxo e agregação.
Sintaxe
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
-
Uma expressão que fornece um valor do tipo
timestamp
. A expressão precisa ser uma referência à coluna existente ou uma transformação determinística em relação às colunas existentes. A expressão adiciona uma coluna do tipo de carimbo de data/hora usada para rastrear a marca d'água. A coluna adicionada está disponível para consulta. -
Um literal de intervalo que define o limite de atraso da marca d'água. Precisa ser um valor positivo menor que um mês.
Exemplos
-- 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');