Variables

Variables represent a specific piece of information that may change throughout project execution. Variables are declared using the SPLASH syntax.

Syntax

typeName {variableName[:=any_expression] [, ...]}

Usage

Variables may be declared within any declare block, SPLASH UDF, or Flex procedures. Multiple variables may be declared on a single line.

The declaration of a variable can also include a optional initial value, which must be a constant expression. Variables without an initial value initialize to NULL.

Variables can be of complex types. However, complex variables can only be used in local declare blocks and declare blocks within a Flex stream.

Variables declared in a local declare block may subsequently be used in SELECT clauses, but cause compiler errors when used in WHERE clauses.

For SPLASH language details, see SPLASH Programmers Guide.

Example

This example defines a variable, then uses the variable in both a regular stream and a FLEX stream.

declare 
 INTEGER ThresholdValue := 1000;
end;
//
// Create Schemas
Create Schema TradeSchema(
    Ts bigdatetime, 
    Symbol STRING, 
    Price MONEY(4), 
    Volume INTEGER
);

Create Schema ControlSchema (
    Msg STRING, 
    Value   INTEGER
); // 
// Input  Trade Window
//

CREATE  INPUT  WINDOW TradeWindow
  SCHEMA TradeSchema
  PRIMARY KEY (Ts);

// 
// Input Stream for Control Messages
//

CREATE INPUT STREAM ControlMsg SCHEMA ControlSchema ;

//
// Output window, only has rows that were greater than the thresholdvalue 
// was when the row was received
CREATE  Output  WINDOW OutTradeWindow
	SCHEMA (Ts bigdatetime, Symbol STRING, Price MONEY(4), Volume INTEGER)
	PRIMARY KEY (Ts)
as
select * 
	from TradeWindow 
	where TradeWindow.Volume > ThresholdValue;

//
//Flex Stream to process the control message
CREATE FLEX FlexControlStream 
  IN ControlMsg 
  OUT OUTPUT WINDOW SimpleOutput 
  SCHEMA ( a integer, b string, c integer)
     PRIMARY KEY ( a)
BEGIN
    ON ControlMsg
    {
    	// change the value of ThresholdValue
    	if ( ControlMsg.Msg = 'set')  {ThresholdValue:=ControlMsg.Value;}
    	// The following is being populate so you can see that the ThresholdValue is being set
    	output [a=ControlMsg.Value; b=ControlMsg.Msg; c=ThresholdValue; |];
    }
    ;
END
;