Create Triggers
Triggers allow events to be periodically generated. A trigger also works like a Stream Source with a predefined schema.
Purpose
For some use cases, the system should be able to periodically generate events based on a specified time interval to periodically execute queries.
A trigger can be performed for a 'start'
operation, for a given <time interval>
, or for a given '<cron expression>'
.
Syntax
The syntax for a trigger definition is as follows:
CREATE TRIGGER <trigger name> at ('start'| every <time interval>| '<cron expression>');
Similar to streams, triggers can be used as inputs. They adhere to the following stream definition and produce the triggered_time
attribute of the long
type.
CREATE STREAM <trigger name> (triggered_time long);
Supported Triggers
The following types of triggers are currently supported:
Trigger type | Description |
---|---|
start | An event is triggered when a stream is started. |
every <time interval> | An event is triggered periodically at the given time interval. Minimum supported time interval is millisecond. |
<cron expression> | An event is triggered periodically based on the given cron expression. For configuration details, see CronTrigger. |
Examples
Trigger an event when the stream is started.
The following query triggers an event when the stream is started:
CREATE TRIGGER InitTrigger WITH (expression = 'start');
Trigger events regularly at specific time intervals.
The following query triggers events every five minutes:
CREATE TRIGGER FiveMinTriggerStream WITH(interval = 5 min);
Trigger events at a specific time on specified days.
The following query triggers an event at 10.15 AM every weekday:
CREATE TRIGGER FiveMinTriggerStream1 WITH (expression = '0 15 10 ? * MON-FRI');
The following stream worker uses a trigger that runs a query worker every minute as the source.
@App:name("runQueryWorker")
@App:description("Execute a query worker every minute.")
@App:qlVersion("2")
CREATE TRIGGER InitTrigger WITH (interval = 1 minute);
-- query.worker.name is the name of a query worker that already exists in the fabric.
CREATE SINK queryWorkerStream WITH (type='query-worker', query.worker.name='queryWorkerSample')(startTime string);
INSERT INTO queryWorkerStream
SELECT time:dateFormat(eventTimestamp(), 'yyyy/MM/dd HH:mm:ss') as startTime
FROM InitTrigger