Remark (2017.11.30): CQL is no longer part of the default download. If you want to use cql, it must be installed. See How to install new features. A comfortable way is to use "#REQUIRED de de.uniol.inf.is.odysseus.parser.cql2.feature.feature.group" (see Features and Updates)
This document describes the basic concepts of the Continuous Query Language (CQL) of Odysseus and shows how to use the language.
The Continuous Query Language (CQL) is a SQL based declarative query language. This document shows how to formulate queries with CQL.
...
Code Block | ||
---|---|---|
| ||
#PARSER CQL #TRANSCFG Standard #DROPALLQUERIES #DROPALLSOURCES #QUERY CREATE STREAM nexmark:person (timestamp STARTTIMESTAMP, id INTEGER, name STRING, email STRING, creditcard STRING, city STRING, state STRING) CHANNEL localhost : 65440 #QUERY CREATE STREAM nexmark:bid (timestamp STARTTIMESTAMP, auction INTEGER, bidder INTEGER, datetime LONG, price DOUBLE) CHANNEL localhost : 65442 #QUERY CREATE STREAM nexmark:auction (timestamp STARTTIMESTAMP, id INTEGER, itemname STRING, description STRING, initialbid INTEGER, reserve INTEGER, expires LONG, seller INTEGER, category INTEGER) CHANNEL localhost : 65441 #QUERY CREATE STREAM nexmark:category (id INTEGER, name STRING, description STRING, parentid INTEGER) CHANNEL localhost : 65443 #PARSER CQL #TRANSCFG Standard #DROPALLQUERIES /// Query 1: Currency Conversion #QNAME Nexmark:Q1 #ADDQUERY SELECT auction, DolToEur(price) AS euro, bidder, datetime FROM nexmark:bid [UNBOUNDED]; ///Query 2: Selection #QNAME Nexmark:Q2 #ADDQUERY SELECT auction, price FROM nexmark:bid WHERE auction=7 OR auction=20 OR auction=21 OR auction=59 OR auction=87; ///Query 3: Local Item Suggestion #QNAME Nexmark:Q3 #ADDQUERY SELECT p.name, p.city, p.state, a.id FROM nexmark:auction [UNBOUNDED] AS a, nexmark:person [UNBOUNDED] AS p WHERE a.seller=p.id AND (p.state='Oregon' OR p.state='Idaho' OR p.state='California') AND a.category = 10; ///Query 4: Average Price for a Category #QNAME Nexmark:Q4 #ADDQUERY SELECT AVG(q.final) FROM nexmark:category [UNBOUNDED] AS c, (SELECT MAX(b.price) AS final, a.category FROM nexmark:auction [UNBOUNDED] AS a, nexmark:bid [UNBOUNDED] AS b WHERE a.id = b.auction AND b.datetime < a.expires AND a.expires < Now() GROUP BY a.id, a.category) AS q WHERE q.category = c.id GROUP BY c.id; ///Query 5: Hot Items #QNAME Nexmark:Q5 #ADDQUERY SELECT b2.auction FROM (SELECT b1.auction, COUNT(auction) AS num FROM nexmark:bid [SIZE 60 MINUTES ADVANCE 1 MINUTE TIME] AS b1 GROUP BY b1.auction ) AS b2 WHERE num >= ALL (SELECT count(auction) AS c FROM nexmark:bid [SIZE 60 MINUTES ADVANCE 1 MINUTE TIME] AS b2 GROUP bY b2.auction) ///Query 6: Average Selling Price by Seller #QNAME Nexmark:Q6 #ADDQUERY SELECT AVG(Q.final) AS s, Q.seller FROM ( SELECT MAX(B.price) AS final, A.seller FROM nexmark:auction [UNBOUNDED] AS A , nexmark:bid [UNBOUNDED] AS B WHERE A.id=B.auction AND B.datetime < A.expires AND A.expires < ${NOW} GROUP BY A.id, A.seller) [SIZE 10 TUPLE PARTITION BY A.seller] AS Q GROUP BY Q.seller; ///Query 7: Monitor New Users #QNAME Nexmark:Q7 #ADDQUERY SELECT p.id, p.name, a.reserve FROM nexmark:person [SIZE 12 HOURS ADVANCE 1 TIME] AS p, nexmark:auction [SIZE 12 HOURS ADVANCE 1 TIME] AS a WHERE p.id = a.seller; |
...