Clause WATERMARK
S’applique à : Databricks SQL Databricks Runtime 12.0 et versions ultérieures
Ajoute un filigrane à une relation dans une instruction select. La clause WATERMARK
s’applique uniquement aux requêtes sur les données de streaming avec état, qui incluent les jointures flux-flux et l’agrégation.
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
Paramètres
-
Expression qui fournit une valeur de type
timestamp
. L’expression doit être une référence à la colonne existante, ou une transformation déterministe par rapport à des colonnes existantes. L’expression ajoute une colonne de type timestamp qui est utilisée pour suivre le filigrane. La colonne ajoutée est disponible pour l’interrogation. -
Littéral d’intervalle qui définit le seuil de délai du filigrane. Doit être une valeur positive inférieure à un mois.
Exemples
-- 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');