Freigeben über


WATERMARK-Klausel

Gilt für: Häkchen bei ja Databricks SQL Häkchen bei ja Databricks Runtime 12.0 und höher

Fügt einer Beziehung in einer select-Anweisung ein Wasserzeichen hinzu. Die WATERMARK-Klausel gilt nur für Abfragen zustandsbehafteter Streamingdaten, die Stream-Stream-Joins und Aggregationen enthalten.

Syntax

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

Parameter

  • named_expression

    Ein Ausdruck, der einen Wert vom Typ timestamp bereitstellt. Der Ausdruck muss entweder ein Verweis auf die vorhandene Spalte oder eine deterministische Transformation für vorhandene Spalten sein. Der Ausdruck fügt eine Spalte vom Zeitstempeltyp hinzu, die zum Nachverfolgen des Wasserzeichens verwendet wird. Die hinzugefügte Spalte steht für Abfragen zur Verfügung.

  • interval_clause

    Ein Intervallliteral, das den Verzögerungsschwellenwert des Wasserzeichens definiert. Muss ein positiver Wert sein, der kleiner als ein Monat ist.

Beispiele

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