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:

  1. Instructions on Creating and Deleting ElastiCube Sets.
  2. A walkthrough for how you can create a set and configure the Sisense Orchestrator Service. See Working with ElastiCube Sets.
  3. (Optional) Instructions on how to implement and configure the Sisense Orchestrator Service. See Activating the Sisense Orchestrator Service.
  4. How to update an ElastiCube within an ElastiCube Set.

Creating ElastiCube Sets

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:

  1. Click Admin in the upper right corner and select the ELASTICUBES tab on the left.
  2. Hover over the ElastiCube you want to add to the ElastiCube Set and click on the menu that appears. Click Create ElastiCube Set.
    ecube8
  3. In the Create ElastiCube Set window, enter a name for the set and select the ElastiCubes you want to include in the set.
  4. Click Create.
    ecube9
  5. 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.
    ecube10
  6. Click OK. The ElastiCube Set is created and displayed in the Admin page.
    ecube6

After you have created an ElastiCube Set, you can configure the ElastiCube Set’s Hierarchies, Access Rights, and Data Security.

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.

To add an ElastiCube to the ElastiCube Set:

  1. Click Admin in the upper right corner and select the ELASTICUBES tab on the left.
  2. 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.
    addtoset
    OR
    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.
    ecube9

The ElastiCube is added to the ElastiCube Set and displayed in the ElastiCube Set table on the Admin page.

Deleting ElastiCube Sets

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:

  1. Hover over its title and click the Trash   icon.
  2. Click Delete to confirm that you want to delete the ElastiCube Set.

Working with ElastiCube Sets

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)

settutorial0

Now, let’s create an ElastiCube Set that contains both ElastiCubes. Click MenuIcon> 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.

ecubesetCreate

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.

settutorial

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.

DisableSync

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.

{
"servers": {
"localhost":{
"ip":"localhost",
"port":"8081",
"apiKey":"eyJ0eXAiHDHDHsXKSSZJdnUzI1NiJ9.eyJ1c2VyIjoiNTY1N332RW2eygL0uVLufGYC-8vY"
}
},
"tasks":[{
"name":"taskName",
"elasticubes": [{
"server":"localhost",
"cube":"ElastiCube A"
},{
"server":"localhost",
"cube":"ElastiCube B"
}],
"timer":"0 0 * * *",
"build":{
"queue": ["FullUpdateExisting","Full"],
"flow":"sync"
},
"email":{
"when":"Fail"
}
}],
"emails":[{
"email": "[email protected]",
"name": "John Doe"
}],
"logLevel":"info"
}

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.

To stop the Sisense Orchestrator Service, open Windows Services, select Sisense.Orchestrator, and click  servicesstop.

WinServicesSet

After the ElastiCubes are rebuilt, restart the Sisense Orchestrator Service by selecting Sisense.Orchestrator and click startbutton.

startservices

The ElastiCube Set is now configured and running ElastiCubes can be queried while the other ElastiCubes are being built.

Activating the Sisense Orchestrator Service

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:

KeyValue
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.
ServerNameYour 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.
IPThe IP address of your server.
PortThe port of your web server.
APIThe access token used to identify your requests to the Sisense web server. For more information about the access token, see Retrieving a Token.
TasksThe 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.
NameThe name of the plan. The value of this parameter is the filename of the log file for the Sisense Orchestrator Service.
ElastiCubesThe 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.
ServerThe name of the server that hosts the ElastiCube.
CubeThe name of the cube to be included in the set.
TimerThe frequency of builds in Cron format.

Some examples:

-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.
BuildThe Build object contains two keys, Queue and Flow, which determine the order in which the build is completed and the type of build.
QueueThe 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:
"FullUpdateExisting","Full"

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.
FlowDetermines 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.
EmailThis object determines what triggers activate Sisense to send an email to users you define in the Emails block
WhenIndicates 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.
EmailsThis 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.
EmailThe email address where emails are to be sent depending on the value of the When key.
NameThe name of the recipient of the email.
LogLevelThe type of info returned in the log. The possible values you can enter are Info and Error.

Example:

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]

{
"servers": {
"Server1":{
"ip":"localhost",
"port":"80",
"apiKey":"eyJ0eXAiHDHDHsXKSSZJdnUzI1NiJ9.eyJ1c2VyIjoiNTY1N332RW2eygL0uVLufGYC-8vY"
}
"Server2":{
"ip":"192.168.5.134",
"port":"8081",
"apiKey":"dgfhdgSSdSSZJdnUzI1NiJ9.eyJ1c2SDFSDFSDFSFDSFDGSSDFVfasddgdeygL0uVLufDFeY"
}
},
"tasks":[{
"name":"taskName",
"elasticubes": [{
"server":"Server1",
"cube":"ElastiCube1"
},{
"server":"Server2",
"cube":"ElastiCube2"
}],

"timer":"*/10 * * * *",
"build":{
"queue": ["FullUpdateExisting","Full"],
"flow":"sync"
},
"email":{
"when":"Fail"
}
}],
"emails":[{
"email": "[email protected]",
"name": "John Doe"
}],
"logLevel":"info"
}

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”

"queue": ["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.

Retrieving a Token

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:

  1. In Sisense, access the API documentation, select Admin> REST API > REST API Reference.
    RestToken1
  2. In the REST API Reference site, select Version 1.0 in the top-right corner of the page.token2
  3. Open the authentication method.
  4. Enter your login credentials and click Run. The access_token is displayed in the Response Body below.
    token3
  5. Copy the token and paste it into the value of apiKey in the config.json file.token4

Updating ElastiCubes within an ElastiCube Set

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:

  1. Stop the Sisense Orchestrator Service. Open Windows Services, select Sisense.Orchestrator, and click servicesstop.
    WinServicesSet
  2. Apply your schema changes to the ElastiCube and run a full build.
  3. Export the ElastiCube and import it on your other machines. For more information, see Importing and Exporting Elasticube Data.
  4. In Windows Services, restart the Sisense Orchestrator Service by selecting Sisense.Orchestrator and clicking startbutton.