Sisense ElastiCube Sets are collections of ElastiCubes with identical schemas that allow you to query running ElastiCubes within the ElastiCube Set while other ElastiCubes are building.
Note: From Sisense V6.5 onwards, you can query ElastiCubes during accumulative builds without ElastiCube Sets. However, to ensure that your users can query ElastiCubes after a failed build, you can implement ElastiCube Sets to handle your queries while Sisense rebuilds the failed ElastiCube.
Grouping ElastiCubes into ElastiCube sets has several benefits:
- Allowing viewers to query the most up-to-date cubes within an ElastiCube Set.
- Reducing server load during builds by using multiple nodes in which only the non-building node is queried.
- Achieving data redundancy by running builds interchangeably across multiple nodes.
To maximize availability and reduce build and dashboard response times, administrators can distribute resource allocation across multiple Sisense nodes. By adding ElastiCubes across multiple servers to a single ElastiCube Set, administrators can configure ElastiCube Sets to run builds interchangeably via the Sisense Orchestrator Service so the most up-to-date and complete ElastiCubes are queried.
The Sisense Orchestrator Service is an automated service that can be configured to synchronize builds across the ElastiCube Set. If you change your schemas within any of the ElastiCubes, you must manually change the schemas in all of the ElastiCubes and rebuild the cube entirely.
This page provides the following information:
- Instructions on Creating and Deleting ElastiCube Sets.
- A walkthrough for how you can create a set and configure the Sisense Orchestrator Service. See Working with ElastiCube Sets.
- (Optional) Instructions on how to implement and configure the Sisense Orchestrator Service. See Activating the Sisense Orchestrator Service.
- How to update an ElastiCube within an ElastiCube Set.
From the Admin page, Administrators can create ElastiCube Sets.
ElastiCube Sets require at least two ElastiCubes. The administrator can add multiple ElastiCubes to a set, however, ElastiCubes can only be part of a single ElastiCube Set at a time. After an administrator creates an ElastiCube Set or adds an ElastiCube to an existing set, the ElastiCube is disabled in the original server and no further actions can be performed outside of the set.
Sisense recommends that you develop ElastiCubes in a Dev environment or separate ElastiCube to ensure they work before adding them to an ElastiCube Set.
To create an ElastiCube Set:
- Click Admin in the upper right corner and select the ELASTICUBES & Data Sets tab on the left.
- Hover over the ElastiCube you want to add to the ElastiCube Set and click on the menu that appears. Click Create ElastiCube Set.
- In the Create ElastiCube Set window, enter a name for the set and select the ElastiCubes you want to include in the set.
- From the Routing Strategy list, select a strategy for how you want to route traffic to your ElastiCube Set. See Routing Queries in ElastiCube Sets for more information.
- From the Failover ElastiCube list, select which ElastiCube you prefer to use if the other ElastiCubes in the set are not available. Failover ElastiCubes only handle queries when an ElastiCube that is part of the ElastiCube Set fails. (This feature is available in Sisense V6.7 onwards).
- Click Create.
- In the Existing Dashboards popup message, indicate if you want to associate your ElastiCube’s dashboards with the ElastiCube Set or maintain the association with the original ElastiCube.
- Click OK. The ElastiCube Set is created and displayed in the Admin page.
Adding ElastiCubes to ElastiCube Sets
After you have created an ElastiCube Set, you can add more ElastiCubes to the set.
When you add an ElastiCube to an existing ElastiCube Set, any dashboards associated with that ElastiCube are passed on to the ElastiCube Set.
Note: You cannot add ‘localhost’ to an ElastiCube Set. Instead, you can add your localhost as a new server with its IP address as the server name and then add ElastiCubes from it to an ElastiCube Set.
To add an ElastiCube to the ElastiCube Set:
- Click Admin in the upper right corner and select the ELASTICUBES tab on the left.
- Hover over the ElastiCube you want to add to the ElastiCube Set and click on the menu that appears. Click Add to ElastiCube Set and select the set that you want to add the ElastiCube to.
In the ElastiCube Set table, click and select the ElastiCubes to be added to the set. Click Save after you have selected the relevant ElastiCubes.
The ElastiCube is added to the ElastiCube Set and displayed in the ElastiCube Set table on the Admin page.
Administrators can delete ElastiCube Sets. Deleting an ElastiCube Set removes the set from the Admin page and any dashboards associated with that set.
To delete an ElastiCube Set:
- Hover over its title and click the Trash icon.
- Click Delete to confirm that you want to delete the ElastiCube Set.
This section describes how to create your first ElastiCube Set and configure it for high availability.
In this example, let’s assume that you have an ElastiCube, ElastiCube A, and you want to add it to a set to ensure that the data can always be queried, even during a build.
The first step is to create a copy of ElastiCube A. The ElastiCubes can have different names, but the schemas must be identical.
Note: If your ElastiCubes are located on a single node, the ElastiCubes cannot have the same name.
In the ElastiCube Manager, we will save a new version of ElastiCube A as ElastiCube B. In Sisense, you can see both ElastiCubes are identical (Select Admin > ELASTICUBES)
Now, let’s create an ElastiCube Set that contains both ElastiCubes. Click > Create ElastiCube Set. For more information, see Creating ElastiCube Sets.
Select the ElastiCubes to be added to the set. For this set, we will select ElastiCube A and B, which have different names, but identical schemas.
Click Create and confirm that you want to create a new set with these ElastiCubes. The set and its ElastiCubes are now displayed at the top of the Admin page.
Now that the set is built, it’s time to schedule automatic builds with the Sisense Orchestrator Service. This service automatically builds the ElastiCubes according to your preferences. For example, you can schedule the builds to run every 10 minutes or at midnight when queries are at their fewest.
To schedule automatic builds, first you should disable any scheduled builds you have for the ElastiCubes. In the ElastiCube Manager in the top menu, select ElastiCube > Schedule Build Settings for each ElastiCube with a scheduled build, then select Disable > Update.
Now that all the ElastiCubes’ scheduled builds are disabled, it’s time to configure the Sisense Orchestrator Service to build the ElastiCubes within the set. To configure the Sisense Orchestrator Service, you must modify the Config.JSON file that was installed when you installed the latest version of Sisense. This file defines how the ElastiCube Set is being built, the order of the build, and how frequently a build occurs.
This file is located in the Sisense.Orchestration Config folder (/Sisense.Orchestration/Config/) of your Sisense Installation folder.
For this set, let’s assume that you want to schedule an accumulative build for midnight. Within the elastiCubes object, we listed both ElastiCubes to be built by the Sisense Orchestrator Service. The order of the ElastiCube builds is in the order of oldest to newest. Next, in the timer object, we listed the hour when the build is to take place. The value is defined in Cron format, so midnight equals 0 minutes 0 hours “0 0 * * * *”.
Finally, we define the flow of the build. We want an accumulative build, but if for some reason this fails, we want to run an entire build as a back-up. Remember, when an accumulative build fails, the ElastiCube needs to be completely rebuilt to ensure that the data is intact. In the build object, we define the type of builds to be initiated and their order. The order of the values determines what build type is initiated first. In this example, the value is “FullUpdateExisting”,”Full”, which means run an accumulative build first and if that fails, run a full build. For a complete explanation on how to define the rest of the objects list in the Config.JSON file, see Activating the Sisense Orchestrator Service.
Now, save the file and Sisense automatically begins to run the builds according to the schedule defined in the timer object.
The Sisense Orchestrator Service automatically builds the ElastiCubes within the set, but if the schema changes, you must manually rebuild each ElastiCube within the set so the schemas match across all the ElastiCubes. While working with the schemas of an ElastiCube that is part of an ElastiCube Set, you should stop the Sisense Orchestrator Service.
The ElastiCube Set is now configured and running ElastiCubes can be queried while the other ElastiCubes are being built.
The Sisense Orchestrator Service automates the build process for ElastiCube Sets and determines how frequently the build process occurs.
To activate the Sisense Orchestrator Service, you must create and save a JSON file called config.json in the Sisense.Orchestration Config folder (/Sisense.Orchestration/Config/) of your Sisense Installation folder. This file defines how the ElastiCube Set is being built, the order of the build, and how frequently a build occurs.
After you save the file, the Sisense Orchestrator Service automatically begins to build ElastiCubes in your ElastiCube Set as defined by you in the config.json file. You can review the progress of the build in the /Sisense.Orchestration/Logs folder in a log file whose file name you define in the JSON file.
Note: During this phase it is recommended to stop the Sisense Orchestrator Service while importing data and reactivate it after the importing process is completed.
The objects that you must include in the config.json file and their descriptions are provided in the table below:
|Servers||The servers block contains a server object that defines each server that hosts an ElastiCube within your ElastiCube Set.
Each server must include a server name, IP, port, and a unique API key.
For example, if you have two different servers, each server must be represented as a separate object with its own name, IP, and port.
|ServerName||Your server’s name. The value of this key is used when associating the ElastiCube Set with a server in the value of the Tasks key.|
|IP||The IP address of your server.|
|Port||The port of your web server.|
|API||The access token used to identify your requests to the Sisense web server. For more information about the access token, see Retrieving a Token.|
|Tasks||The Tasks object contains an array of ElastiCube objects. This object can contain multiple ElastiCube objects, but a minimum of two are required for a set.|
|Name||The name of the plan. The value of this parameter is the filename of the log file for the Sisense Orchestrator Service.|
|ElastiCubes||The ElastiCube object that holds an array of ElastiCubes. Each ElastiCube must include the name of its server and the name of the cube as defined in the Elastic Manager.|
|Server||The name of the server that hosts the ElastiCube.|
|Cube||The name of the cube to be included in the set.|
|Timer||The frequency of builds in Cron format. |
-To run a build each night at midnight, enter the value "0 0 * * *"
-To run a build every hour, enter the value "0 * * * *"
See the full Cron format reference here.
|Build||The Build object contains two keys, Queue and Flow, which determine the order in which the build is completed and the type of build.|
|Queue||The value of this key is the type of build Sisense should attempt and in what order. There are two possible values delimited by a comma:|
FullUpdateExisting: Attempts an accumulative build.
Full: Attempts an entire build.
Sisense recommends the following value:
In this example, Sisense attempts to do an accumulative build first, and if it fails, Sisense attempts an entire build. If the build fails for all builds, Sisense retries again according to the next scheduled build.
|Flow||Determines the order of the build. A build occurs according to the value of Timer. For example, if your builds are scheduled for midnight, then the Orchestator begins to build the ElastiCubes at midnight according to the order you define below. |
Single: Builds a single cube, then waits for the next time a build is scheduled according to the value of Timer. The cube to be built is a cube that previously failed or the cube with the oldest build.
Sync: Builds the cubes with the oldest build first and then the remaining cubes in the order of oldest to newest until all ElastiCubes are updated.
All: Builds the cube with the oldest build first and then the remaining cubes asynchronously.
|This object determines what triggers activate Sisense to send an email to users you define in the Emails block|
|When||Indicates when an email alert is triggered. Email alerts can be triggered for the following scenarios:|
None: No email is ever sent.
Build: An email is sent when a build is complete.
Fail: An email is sent when a build fails.
|Emails||This object defines who receives an email and their email address when an email is triggered according to the events you define in the Email object.|
|The email address where emails are to be sent depending on the value of the When key.|
|Name||The name of the recipient of the email.|
|LogLevel||The type of info returned in the log. The possible values you can enter are Info and Error.|
The following is an example of a config.json file. In this example, the ElastiCube Set contains two ElastiCubes, ElastiCube1 and ElastiCube2, hosted on the two different servers, Server1 and Server2. The ElastiCubes, even though they are located on separate servers, are connected through the Tasks object. The Sisense Orchestrator Service attempts to build the ElastiCube Set every 10 minutes. If the build fails, Sisense sends an email to [email protected]
Overcoming Build Failures in ElastiCube Sets
In Sisense, if an accumulative build fails, you must rebuild the ElastiCube that failed entirely to ensure the validity of the ElastiCube.
If you use the Sisense Orchestrator Service, Sisense recommends that you define the value of the Queue key as “FullUpdateExisting, Full”
In this configuration, the Sisense Orchestrator Service attempts to build the set using accumulative builds and in the event of a failure, a full build is initiated.
As part of the config.json file, you must provide a token that Sisense uses for authenticating your ElastiCube Sets.
You can retrieve this token through Sisense’s API documentation. After you retrieve the token, save it as the value of apiKey in the config.json file.
To retrieve a token:
- In Sisense, access the API documentation, select Admin> REST API > REST API Reference.
- In the REST API Reference site, select Version 1.0 in the top-right corner of the page.
- Open the authentication method.
- Enter your login credentials and click Run. The access_token is displayed in the Response Body below.
- Copy the token and paste it into the value of apiKey in the config.json file.
The Sisense Orchestrator Service automatically updates your data across ElastiCubes within an ElastiCube Set. If you want to modify the schema, for example, by adding new tables, you must manually rebuild the ElastiCubes and then import that ElastiCube to the other machines hosting your ElastiCube Set.
While rebuilding your ElastiCube, you should deactivate the Sisense Orchestrator Service to prevent it from updating the ElastiCubes with different schemas.
After the schemas are identical for all the ElastiCubes across the ElastiCube Set, you can reactivate the Sisense Orchestrator Service to automatically update your ElastiCubes.
To update an ElastiCube within ElastiCube Set:
- Stop the Sisense Orchestrator Service. Open Windows Services, select Sisense.Orchestrator, and click .
- Apply your schema changes to the ElastiCube and run a full build.
- Export the ElastiCube and import it on your other machines. For more information, see Importing and Exporting Elasticube Data.
- In Windows Services, restart the Sisense Orchestrator Service by selecting Sisense.Orchestrator and clicking .
Hey! Was this article helpful?
Questions? Ask the community.