measures_aggregate.sql 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. PRAGMA FeatureR010="prototype";
  2. $input = SELECT * FROM AS_TABLE([
  3. <|time: 0, value: 1u, name: "A"|>,
  4. <|time: 100, value: 2u, name: "A"|>,
  5. <|time: 200, value: 3u, name: "B"|>,
  6. <|time: 300, value: 3u, name: "B"|>,
  7. <|time: 400, value: 4u, name: "A"|>,
  8. <|time: 500, value: 5u, name: "A"|>,
  9. ]);
  10. SELECT * FROM $input MATCH_RECOGNIZE (
  11. ORDER BY CAST(time AS Timestamp)
  12. MEASURES
  13. SUM(A.value + 1u + LENGTH(A.name)) AS aggr_expr,
  14. FIRST(A.value) AS first_a,
  15. LAST(A.value) AS last_a,
  16. COUNT(A.value) AS count_a,
  17. COUNT(DISTINCT A.value) AS count_distinct_a,
  18. AGGREGATE_LIST(A.value) AS aggrlist_a,
  19. AGGREGATE_LIST_DISTINCT(A.value) AS aggrlist_distinct_a,
  20. FIRST(B.value) AS first_b,
  21. LAST(B.value) AS last_b,
  22. COUNT(B.value) AS count_b,
  23. COUNT(DISTINCT B.value) AS count_distinct_b,
  24. AGGREGATE_LIST(B.value) AS aggrlist_b,
  25. AGGREGATE_LIST_DISTINCT(B.value) AS aggrlist_distinct_b,
  26. FIRST(C.value) AS first_c,
  27. LAST(C.value) AS last_c,
  28. COUNT(C.value) AS count_c,
  29. COUNT(DISTINCT C.value) AS count_distinct_c,
  30. AGGREGATE_LIST(C.value) AS aggrlist_c,
  31. AGGREGATE_LIST_DISTINCT(C.value) AS aggrlist_distinct_c
  32. PATTERN (A* B C* B A*)
  33. DEFINE
  34. A AS A.name = "A" AND COALESCE(FIRST(B.value + 1u + LENGTH(B.name)) = 5, TRUE),
  35. B AS B.name = "B" AND FIRST(A.value + 1u + LENGTH(A.name)) = 3,
  36. C AS C.name = "C"
  37. );