The example below randomly samples an input stream and inserts samples into a named window for later processing. A variable named Dice is “rolled” each time a new row enters the input stream. A row is copied into the window if Dice = 1.
-- Variable for random number CREATE VARIABLE INTEGER Dice; CREATE VARIABLE INTEGER DiceSides = 6; -- Input stream CREATE INPUT STREAM StreamIn SCHEMA ( Val INTEGER ); -- Each time a row enters the input stream, -- roll the Dice ON StreamIn SET Dice = TO_INTEGER(RANDOM() * TO_FLOAT(DiceSides)) + 1; -- Some data entering the input stream ATTACH INPUT ADAPTER RMG TYPE RandomTuplesGeneratorAdapterType TO STREAM StreamIn PROPERTIES RATE = "20" ,ROWCOUNT = "600" ; -- Named window for samples CREATE WINDOW WR SCHEMA( Val INTEGER ,Dice INTEGER ) KEEP 150 ROWS ; -- Randomly sample the input stream INSERT WHEN Dice = 1 THEN WR SELECT Val, Dice FROM StreamIn ;
Here is a result, out of 600 messages that entered the input stream, 96 ended in the window; I was using a six-sided die — not bad.