Skip to content

[FEATURE] Add support for MATCH_RECOGNIZE clause (BigQuery) to JSQLParser #2350

Description

@zedach

Grammar or Syntax Description

SQL Example

WITH Operations AS (
  SELECT 1 AS OperationID, 120.00 AS Amount, 'C001' AS CatalogID,
         DATE '2025-01-03' AS OperationDate UNION ALL
  SELECT 2, 20.00, 'C001', DATE '2025-01-04' UNION ALL
  SELECT 3, 175.00, 'C001', DATE '2025-01-05' UNION ALL
  SELECT 4,  30.00, 'C001', DATE '2025-01-10' UNION ALL
  SELECT 5, 190.00, 'C001', DATE '2025-01-11' UNION ALL
  SELECT 6, 250.00, 'C001', DATE '2025-01-12'
)

SELECT *
FROM Operations
MATCH_RECOGNIZE (
  PARTITION BY CatalogID
  ORDER BY OperationDate ASC
  MEASURES
    FIRST(OperationDate) AS START_DT,
    LAST(OperationDate)  AS END_DT,
    SUM(Amount)          AS TOTAL_AMOUNT,
    COUNT(*)             AS ROW_COUNT
  AFTER MATCH SKIP  PAST LAST ROW   
  PATTERN (low mid+ high+)                      
  DEFINE
    low AS Amount < 50,
    mid AS Amount between 100 and 200,
    high AS Amount > 200
  OPTIONS ( use_longest_match = FALSE )
)
ORDER BY CatalogID, START_DT;

This query sgould return this result

CatalogID	START_DT	END_DT	         TOTAL_AMOUNT	 ROW_COUNT
C001	        2025-01-10	2025-01-12	  470.0	                 3

Thank you for considering this feature.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions