WITHIN Clause Oracle Fusion Middleware Online Documentation Library

Pattern Recognition With MATCH_RECOGNIZE 19-25

19.10 INCLUDE TIMER EVENTS Clause

Use this clause in conjunction with the DURATION clause for non-event detection queries. Typically, in most pattern match queries, a pattern match output is always triggered by an input event on the input stream over which pattern is being matched. The only exception is non-event detection queries where there could be an output triggered by a timer expiry event as opposed to an explicit input event on the input stream. pattern_inc_timer_evs_clause::= pattern_clause::= on page 19-11, pattern_skip_match_clause::= on page 19-19, pattern_ definition_clause::= on page 19-14, duration_clause::= on page 19-22, subset_clause::= on page 19-25 For more information, see Section 19.9, DURATION Clause .

19.11 SUBSET Clause

Using this clause, you can group together one or more correlation variables that are defined in the DEFINE clause. You can use this named subset in the MEASURES and DEFINE clauses just like any other correlation variable. For example: SUBSET S1 = Z,X The right-hand side of the subset Z,X is a comma-separated list of one or more correlation variables as defined in the PATTERN clause. The left-hand side of the subset S1 is the union of the correlation variables on the right-hand side. You cannot include a subset variable in the right-hand side of a subset. subset_clause::= non_mt_subset_definition_list::= on page 19-25 non_mt_subset_definition_list::= subset_definition::= on page 19-25 subset_definition::= subset_name::= on page 19-26, non_mt_corr_list::= on page 19-26 19-26 Oracle Complex Event Processing CQL Language Reference subset_name::= const_string::= on page 7-12 non_mt_corr_list::= correlation_name::= on page 19-11 Consider the query q55 in Example 19–27 and the data stream S11 in Example 19–28 . Stream S11 has schema c1 integer, c2 integer. This example defines subsets S1 through S6. This query outputs a match if the c2 attribute values in the input stream form the shape of the English letter W. Now suppose we want to know the sum of the values of c2 for those tuples which form the incrementing arms of this W shape. The correlation variable X represents tuples that are part of the first incrementing arm and Z represent the tuples that are part of the second incrementing arm. So we need some way to group the tuples that match both. Such a requirement can be captured by defining a SUBSET clause as the example shows. Subset S4 is defined as X,Z. It refers to the tuples in the input stream that match either X or Z. This subset is used in the MEASURES clause statement sumS4.c2 as sumIncrArm. This computes the sum of the value of c2 attribute in the tuples that match either X or Z. A reference to S4.c2 in a DEFINE clause like S4.c2 = 10 will refer to the value of c2 in the latest among the last tuple that matched X and the last tuple that matched Z. Subset S6 is defined as Y. It refers to all the tuples that match correlation variable Y. The query returns the stream in Example 19–29 . Example 19–27 MATCH_RECOGNIZE with SUBSET Clause Query query id=q55[CDATA[ select T.firstW, T.lastZ, T.sumDecrArm, T.sumIncrArm, T.overallAvg from S11 MATCH_RECOGNIZE MEASURES S2.c1 as firstW, lastS1.c1 as lastZ, sumS3.c2 as sumDecrArm, sumS4.c2 as sumIncrArm, avgS5.c2 as overallAvg PATTERNA W+ X+ Y+ Z+ SUBSET S1 = Z S2 = A S3 = A,W,Y S4 = X,Z S5 = A,W,X,Y,Z S6 = Y DEFINE W as W.c2 prevW.c2, X as X.c2 prevX.c2, Y as S6.c2 prevY.c2, Z as Z.c2 prevZ.c2 as T ]]query