Поделиться через


Предложение WATERMARK

Область применения: флажок Databricks SQL флажок Databricks Runtime 12.0 и более поздних версий

Добавляет водяной знак в отношение в инструкции select. Предложение WATERMARK применяется только к запросам к данным потоковой передачи с отслеживанием состояния, которые включают соединения потокового потока и агрегирование.

Синтаксис

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

Параметры

  • named_expression

    Выражение, предоставляющее значение типа timestamp. Выражение должно быть ссылкой на существующий столбец или детерминированное преобразование для существующих столбцов. Выражение добавляет столбец типа метки времени, который используется для отслеживания водяного знака. Добавленный столбец доступен для запроса.

  • interval_clause

    Литерал интервала, определяющий порог задержки водяного знака. Должно быть положительным значением менее месяца.

Примеры

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