Understanding Sisense Architecture

ElastiCube vs. Live Models

Sisense supports both in-memory ElastiCube models and live connections to cloud databases. ElastiCube builds offer high-speed performance, while live models provide real-time querying. Problems often arise when model types are misapplied or mixed improperly within dashboards.

Container-Based and Plugin-Oriented Design

Modern Sisense (Linux) uses a microservices-based Docker environment. Custom plugins, add-ons, or scripts injected into widgets can break functionality during upgrades or across multi-tenant environments.

Common Symptoms

  • "Build failed" messages in ElastiCube Manager
  • Dashboards timing out or failing to load visualizations
  • Plugin widgets not displaying correctly or crashing
  • Role-based data security filters not applying correctly
  • JWT-based embedded analytics returning 403 errors

Root Causes

1. Resource Limits During ElastiCube Builds

Memory exhaustion, concurrent query bottlenecks, or large dataset ingestion can cause builds to fail. Misconfigured build scripts or SQL syntax errors also interrupt the pipeline.

2. Dashboard Performance Degradation

Widgets with inefficient queries, heavy calculated fields, or excessive use of complex joins can lead to timeouts or browser-side rendering delays.

3. Plugin or JavaScript Integration Errors

Custom plugins that depend on deprecated APIs or manipulate the DOM improperly may break post-upgrade. Improper sandboxing or missing define() wrappers trigger widget-level failures.

4. Data Security Rule Misconfiguration

RLS (Row-Level Security) rules incorrectly scoped to user groups or misapplied to filters result in users seeing incomplete or unauthorized data.

5. JWT Signature or Claim Validation Failures

Embedding dashboards with JSON Web Tokens requires valid claims (aud, iss, exp) and a consistent shared secret. Token mismatch leads to 403 or 401 errors at the embed layer.

Diagnostics and Monitoring

1. Analyze ElastiCube Build Logs

Use Sisense Admin → ElastiCube Logs to identify step-level errors, SQL failures, or memory bottlenecks. Check for timeouts or corrupted source tables.

2. Use Browser Console for Widget Debugging

Open DevTools in Chrome/Firefox to inspect plugin errors, missing modules, or REST failures. Review define() module errors or uncaught exceptions.

3. Monitor API Calls and Authentication Headers

For embedded use, inspect Authorization headers, token claims, and clock synchronization. Use curl or Postman to validate JWT payloads before integration.

4. Audit Data Model Relationships

Use the Sisense Data Model tool to confirm join paths and relationship types. Check for circular references, many-to-many joins, and broken field mappings.

5. Check Plugin Compatibility Post-Upgrade

After Sisense upgrades, verify plugin compatibility with the new API version. Use plugin.json versioning and document deprecated features per Sisense release notes.

Step-by-Step Fix Strategy

1. Optimize ElastiCube Build Config

Segment large builds into stages, use incremental loads, and avoid SELECT * queries. Enable multithreading in build settings where applicable.

2. Refactor Widget Queries

Minimize calculated fields in widgets. Use materialized fields in the data model instead. Reduce unnecessary filters and avoid non-indexed joins.

3. Rebuild or Patch Incompatible Plugins

Wrap JavaScript code in AMD define() format, update to supported APIs, and validate against Sisense’s plugin SDK. Test in isolated dashboards before deployment.

4. Realign RLS and Group Filters

Validate user-group mappings in Admin → User Management. Test row-level filters using impersonation or preview mode.

5. Re-sign and Test JWT Tokens

Verify claim format and shared secret. Use tools like jwt.io to inspect tokens. Ensure server clocks are synchronized to prevent exp claim errors.

Best Practices

  • Use incremental builds and time-partitioned tables for large datasets
  • Test plugins in a staging environment after Sisense upgrades
  • Define RLS filters using clear and documented logic across roles
  • Centralize JWT secret management using environment variables
  • Enable resource monitoring to scale hardware with data model size

Conclusion

Sisense empowers organizations with scalable analytics and embeddable dashboards, but production use requires disciplined modeling, secured embedding practices, and plugin hygiene. Through structured debugging, environment validation, and optimized builds, teams can resolve bottlenecks and ensure reliable analytics delivery across platforms and users.

FAQs

1. Why does my ElastiCube build keep failing?

It may be due to resource exhaustion, SQL errors, or misconfigured build order. Check the build logs for failed step details and optimize data source connections.

2. How do I fix slow dashboards?

Reduce calculated fields, optimize widget queries, and move logic into the data model. Use filters efficiently and limit cross-joins.

3. Why aren’t my custom plugins working after an update?

They may depend on deprecated APIs or incorrect module syntax. Wrap them in define() and test against the latest Sisense plugin SDK.

4. What causes JWT authentication to fail?

Clock skew, invalid claims, or incorrect secrets. Always inspect the token with a decoder and test outside your app using curl or Postman.

5. How do I test role-based data access?

Use impersonation in Sisense Admin, and preview dashboards as different user groups. Validate RLS rule logic and group assignments carefully.