Skip to main content
Version: Streamsheets 3.0


The core logic for an app is defined within the sheets. A sheet can receive data within its inbox. This data is buffered in messages, each containing a payload. A payload contains structured data (often JSON format), which can be referenced from within the sheet by formulas. The formulas are updated on every step of an app. The steps are executed on message arrival or based on user defined time interval.

The data that comes in and is updated is also the starting point for the logic of the sheet, where spreadsheet formulas allow to analyze the data, visualize it, transform it and optionally send it to other message targets. The calculation order is not based on cell dependencies, but defined by the cell arrangement, meaning from top to bottom and left to right. It is important to have a predefined calculation order for the intention of Streamsheets.

In general a Streamsheet works like a normal spreadsheet application. You can enter values and formulas in cells. You can copy and paste cells, move and delete, format cells and rows and so on. This documentation does not cover working with a normal spreadsheet. We believe you are familiar with that and concentrate on the specifics for Streamsheets sheets. The sheets are always calculated on the server. For this reason you can work on the same sheet simultaneously with different users. The sheet also calculates when no user is connected with the server. It runs or calculates as long as it is started. This way no input stream data gets lost and you can e.g. transform data or generate output from the sheet even if nobody opens the sheet.

In the following sections, we will introduce aspects of Streamsheets that differ from a spreadsheet as you have seen it before:

General Concepts

Create Historic data sets

Creating a small table to visualize and work with data comes in handy from time to time. Use one of the core principles of Streamsheets to achieve a fast solution for an updating table.

Use timeseries functions

If you do not need permanently store data, but need to calculate with data coming in overtime, the set of timeseries functions will help you achieve what you need. This allows for the not permanent storage of data only for aggregation and visualization.