Klauzula ramy okna (databricks SQL)

Określa przesuwany podzbiór wierszy w partycji, na której działa funkcja agregacji lub okna analitycznego.

Składnia

{ frame_mode frame_start |
  frame_mode BETWEEN frame_start AND frame_end } }

frame_mode
{ RANGE | ROWS }

frame_start
{ UNBOUNDED PRECEDING |
  offset_start PRECEDING |
  CURRENT ROW |
  offset_start FOLLOWING }

frame_end
{ offset_stop PRECEDING |
  CURRENT ROW |
  offset_stop FOLLOWING |
  UNBOUNDED FOLLOWING }

Parametry

  • frame_mode

    • WIERSZE

      Jeśli zostanie określony, przesuwana ramka okna jest wyrażona pod względem wierszy poprzedzających lub po bieżącym wierszu.

    • ZAKRES

      Jeśli zostanie określona, funkcja okna musi określić klauzulę ORDER BY (Databricks SQL) z pojedynczym wyrażeniem obExpr.

      Granice okna przesuwanego są następnie wyrażane jako przesunięcie z obExpr bieżącego wiersza.

  • frame_start

    Pozycja początkowa przesuwanej ramki okna względem bieżącego wiersza.

    • NIEZWIĄZANE POPRZEDNIE

      Określa, że ramka okna zaczyna się na początku partycji.

    • offset_start poprzednie

      Jeśli tryb to ROWS, offset_start jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przed bieżącym wierszem, który rozpoczyna ramka.

      Jeśli tryb to RANGE, offset_start jest dodatnią wartością literału typu, który można odjąć od obExpr. Ramka rozpoczyna się w pierwszym wierszu partycji, dla której obExpr jest większy lub równy obExpr - offset_start w bieżącym wierszu.

    • BIEŻĄCY WIERSZ

      Określa, że ramka rozpoczyna się od bieżącego wiersza.

    • offset_start PONIŻEJ

      Jeśli tryb to ROWS, offset_start jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przeszłości do bieżącego wiersza, który rozpoczyna ramka. Jeśli tryb to RANGE, offset_start jest dodatnią wartością literału typu, który można dodać do obExprelementu . Ramka rozpoczyna się w pierwszym wierszu partycji, dla której obExpr jest większy lub równy obExpr + offset_start w bieżącym wierszu.

  • frame_stop

    Koniec przesuwanej ramki okna względem bieżącego wiersza.

    Jeśli nie zostanie określona, ramka zostanie zatrzymana w bieżącym wierszu. Koniec okna przesuwanego musi być większy niż początek okna.

    • offset_start poprzednie

      Jeśli frame_mode to ROWS, offset_stop jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przed bieżącym wierszem, który zatrzymuje ramka. Jeśli frame_mode to RANGE, offset_stop jest dodatnią wartością literału tego samego typu co offset_start. Ramka kończy się ostatnim wierszem poza partycją, dla której obExpr wartość jest mniejsza lub równa obExpr - offset_stop bieżącemu wierszowi.

    • BIEŻĄCY WIERSZ

      Określa, że ramka zatrzymuje się w bieżącym wierszu.

    • offsetStop FOLLOWING

      Jeśli frame_mode to ROWS, offset_stop jest dodatnią liczbą literału całkowitego definiującą liczbę wierszy przeszłości do bieżącego wiersza, który kończy ramka. Jeśli frame_mode to RANGE, offset_stop jest dodatnią wartością literału tego samego typu co offset_start. Ramka kończy się ostatnim wierszem partycji, dla której obExpr wartość jest mniejsza lub równa obExpr + offset_stop bieżącemu wierszowi.

    • NIEZWIĄZANE Z NASTĘPUJĄCYMI

      Określa, że ramka okna zatrzymuje się na końcu partycji.