This topic describes
AggregateByPredicate.sbapp, the Aggregate operator predicate dimension sample.
This sample demonstrates use of the predicate-based Aggregate operator. The predicate-based aggregate uses Boolean strings
sent to a control port to open, emit from, and close aggregate windows. Data entered on the
TradesIn port are not processed until true is sent to the
CloseWindow field of the control port, or both.
The following table lists the predicate expressions entered in the three predicate dimension fields of the Edit Dimension dialog for this sample.
|Predicate Field||Expression Entered|
|Open a window in the current group when||input1.OpenWindow|
|For windows in the current group, Emit if||input1.EmitWindow || input1.CloseWindow|
|For windows in the current group, Close if||input1.CloseWindow|
input1 in these expressions refers to input port 1 of the Aggregate operator. In this sample's case, a Union operator precedes the
input port of the Aggregate operator, which combines two input streams,
TradesIn. You send tuples to the
WindowControl stream to open, emit, or close windows.
CloseWindow are all fields of type bool in the schema of the
WindowControl stream. So you need only send
false to one or more of these ports to cause a window control action.
Thus, opening an aggregate window is a matter of sending a tuple containing
true in the
OpenWindow field of the
WindowControl port. With a window open, you can now send tuples to the
TradesIn stream. However, a computation based on the input trade values is not emitted from the window until you send a tuple containing
true to the
EmitWindow field of the
In StreamBase Studio, import this sample with the following steps:
From the top menu, click→ .
operatorto narrow the list of options.
Select Operator sample group from the Data Constructs and Operators category.
StreamBase Studio creates a single project for the all operator samples.
In the Project Explorer, open the sample you just loaded.
Open the package folder (most samples contain a single package folder. Open the top-level package folder if your sample contains more than one folder).
AggregateByPredicate.sbappapplication and click the Run button. This opens the SB Test/Debug perspective and starts the application.
If you see red marks, wait a moment for the project in Studio to load its features.
If red marks do not resolve themselves in a moment, select the project and right-click→ from the context menu.
No output is displayed in the Application Output view yet, but the dequeuer is prepared to receive output. This view will eventually show the output of the application.
In the Manual Input view, select the
WindowControlstream from the Input stream drop-down list.
true, then click .
TradesInin the Input stream drop-down list.
Enter several volume and price pairs, clickingafter each pair. For example, enter Volume=1000, Price=39.45. Make up any pairs of numbers and send them to the application. Notice that no output is showing in the Application Output view, but you can see the tuples you are sending by switching to the Application Input view.
In the Input stream drop-down, re-select
Click, then enter
EmitWindowfield and click . Notice that a single tuple now appears in the Application Output view, showing the calculated VWAP for the volume and price tuples you sent. (Select the tuple to see it in more detail in the Details pane.)
TradesInin the Input stream drop-down list, and send several more pairs of volume and price data.
WindowControlin the Input stream drop-down list. Again click , then enter
truein both the
CloseWindowfields. Click Send Data. Another tuple displays in the Application Output view.
When done, press F9 or click the Stop Running Application button.
When you load the sample into StreamBase Studio, Studio copies the sample project's files to your Studio workspace, which is normally part of your home directory, with full access rights.
Load this sample in StreamBase Studio, and thereafter use the Studio workspace copy of the sample to run and test it, even when running from the command prompt.
Using the workspace copy of the sample avoids permission problems. The default workspace location for this sample is:
See Default Installation Directories for the default location of
studio-workspace on your system.