Aggregate Operator Predicate Dimension Sample

About This Sample

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 EmitWindow or 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

The 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, WindowControl and TradesIn. You send tuples to the WindowControl stream to open, emit, or close windows. OpenWindow, EmitWindow, and CloseWindow are all fields of type bool in the schema of the WindowControl stream. So you need only send true or 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 WindowControl port.

Importing This Sample into StreamBase Studio

In StreamBase Studio, import this sample with the following steps:

  • From the top-level menu, click File>Import Samples and Community Content.

  • Enter sample group to narrow the list of options.

  • Select Operator sample group from the Data Constructs and Operators category.

  • Click Import Now.

StreamBase Studio creates a single project for the all operator samples.

Running This Sample in StreamBase Studio

  1. In the Project Explorer view, open the sample you just loaded.

    If you see red marks on a project folder, wait a moment for the project to load its features.

    If the red marks do not resolve themselves after a minute, select the project, right-click, and select Maven>Update Project from the context menu.

  2. Open the src/main/eventflow/ folder.

  3. Open the AggregateByPredicate.sbapp file and click the Run button. This opens the SB Test/Debug perspective and starts the module.

  4. No output is displayed in the Output Streams view yet, but the dequeuer is prepared to receive output. This view will eventually show the output of the application.

  5. In the Manual Input view, select the WindowControl stream from the Input stream drop-down list.

  6. In the OpenWindow field, type true, then click Send Data.

  7. Select TradesIn in the Input stream drop-down list.

  8. Enter several volume and price pairs, clicking Send Data after 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 Output Streams view, but you can see the tuples you are sending by switching to the Input Streams view.

  9. In the Input stream drop-down, re-select WindowControl.

  10. Click Clear, then enter true in the EmitWindow field and click Send Data. Notice that a single tuple now appears in the Output Streams 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.)

  11. Re-select TradesIn in the Input stream drop-down list, and send several more pairs of volume and price data.

  12. Re-select WindowControl in the Input stream drop-down list. Again click Clear, then enter true in both the EmitWindow and CloseWindow fields. Click Send Data. Another tuple displays in the Output Streams view.

  13. When done, press F9 or click the Terminate EventFlow Fragment button.

Sample Location

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.