Dela via


WATERMARK-sats

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime 12.0 och senare

Lägger till en vattenstämpel i en relation i en select-instruktion. WATERMARK Satsen gäller endast för frågor om tillståndskänsliga strömmande data, som inkluderar stream-stream-kopplingar och aggregering.

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

Parametrar

  • named_expression

    Ett uttryck som ger ett värde av typen timestamp. Uttrycket måste antingen vara en referens till den befintliga kolumnen eller en deterministisk transformering mot befintliga kolumner. Uttrycket lägger till en kolumn av tidsstämpeltyp som används för att spåra vattenstämpeln. Den tillagda kolumnen är tillgänglig för frågor.

  • interval_clause

    En intervallliteral som definierar tröskelvärdet för fördröjning för vattenstämpeln. Måste vara ett positivt värde mindre än en månad.

Exempel

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