Sisense Community logo
     
    • Community Feedback
    • Chapters
    • Events
    • Forums
      • Help and How To
      • Product Feedback Forum
      • Strategy & Use Cases
    • Blogs
    • KB Docs
      • KB Docs
      • Add-Ons & Plug-Ins
      • APIs
      • Best Practices
      • Blox
      • CDT
      • Cloud Managed Service
      • Data Models
      • Data Sources
      • Embedding Analytics
      • How-Tos & FAQs
      • Onboarding
      • PySisense
      • Security
      • Sisense Administration
      • Sisense Intelligence & AI
      • Troubleshooting
      • Widget & Dashboard Scripts
    • Support
    • Learning
      • Sisense Academy: Free Courses and Certifications
      • Official Developer Documentation
      • Official Product Documentation
      • Official Sisense Youtube Channel
      • Sisense Compose SDK Playground
      • Official Sisense Discord
    • Use Case Gallery
    •      
    Discussions
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
    •                    
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
    Discussions
    • HomeChevronRightIcon
    • All postsChevronRightIcon
    Knowledge Base Docs

    Created Mar 17, 2026

    7 members

    4 discussions

    Specific guides written by Sisense experts and trusted partners.

    Knowledge Base Docs
    • Add-ons & Plug-Ins

      5 members · 137 discussions

               
    • Best Practices

      4 members · 22 discussions

               
    • Blox

      4 members · 87 discussions

               
    • Cloud Managed Service

      2 members · 3 discussions

               
    • Data Sources

      2 members · 40 discussions

               
    • Embedding Analytics

      3 members · 33 discussions

               
    • Onboarding

      1 members · 2 discussions

               
    • Security

      2 members · 10 discussions

               
    • Sisense Administration

      2 members · 90 discussions

               
    • Sisense Intelligence & AI

      3 members · 5 discussions

               
    • Troubleshooting

      1 members · 154 discussions

               
    • Widget & Dashboard Scripts

      11 members · 221 discussions

               
    • Data Models

      2 members · 48 discussions

               
    • APIs

      2 members · 89 discussions

               
    • How-Tos & FAQs

      2 members · 252 discussions

               
    • CDT

      2 members · 167 discussions

               
    • PySisense

      4 members · 4 discussions

               
                       
                                       
    • Anhelina Kravchenko

      Anhelina Kravchenko

      How to export .ecdata/.sdata and .dash files

      Table of contents Introduction Understanding file types: .sdata vs .smodel Exporting ElastiCube data GUI method (both platforms) REST API method (both platforms) Linux (.sdata) Windows (.ecdata) Exporting dashboards (.dash) Creating a sample ElastiCube (reduced data set) Important notes Introduction This article demonstrates how to export your ElastiCube data file and dashboard .dash file from Sisense. Purpose: Exporting these files allows you to easily import them into another Sisense environment and have your ElastiCube/Dashboard up and running quickly. This is useful for backups, migration between servers, and dev-to-prod promotion. What these files contain: The data file (.ecdata on Windows, .sdata on Linux) contains both the data and the logic structure of the ElastiCube model. The .dash file contains the dashboard widget structure, layout logic, and the reference to the relevant ElastiCube. Note: Security settings and users are stored in MongoDB and are NOT included in these export files. Understanding file types: .sdata vs .smodel When working with Sisense data models, you will encounter two different export file types. It is important to understand the difference: .sdata Contains : Model schema + connection settings + cube data Use case : Full backup/migration - includes everything needed to rebuild the ElastiCube without re-importing from source .smodel Contains : Model schema + connection settings only ( no data ) Use case : Lightweight transfer of the model design without cube data - requires a rebuild after import to populate data from the source When to use .sdata: You need a complete backup including all cube data. You are migrating to a new server and want to avoid a full rebuild from source databases. You are sharing a working model with the support team for troubleshooting purposes. The source database is unavailable or difficult to reconnect on the target environment. When to use .smodel: You only need the model design and connection configuration. You plan to rebuild from source after import. File size is a concern (smodel files are much smaller since they exclude data). You are doing version control / dev-to-prod promotion where data will be rebuilt anyway. Exporting ElastiCube data GUI method (both platforms) This method works on both Linux and Windows via the Sisense web interface: Open the Data page. For the relevant ElastiCube, click the menu icon ( ... ) and select Export Model . Select to export the model schema and the data . Click Export . The . sdata file will download to your local machine.

      REST API method (both platforms) Export full data model (schema + data): GET {{URL}}/api/v2/datamodel-exports/stream/full Linux (.sdata) Option 1 - Sisense CLI: Use the Sisense CLI to export the .sdata file. Reference: Sisense CLI Commands The export command should be used: si elasticubes export -name MyCube -path "/opt/path/to/NameOfCube" -file cubeName.sdata The ElastiCube is exported to /opt/sisense/storage/backups/ by default. Option 2 - REST API (v2) : Export a full data model (schema and data) as a stream: GET {{URL}}/api/v2/datamodel-exports/stream/full
      Limitation: There is a 2 GB size limit when using the REST API. To get the ID of the model for API calls, use: GET {{URL}}/api/v2/datamodels
      Windows (.ecdata) Step 1: Open the ElastiCube Manager, go to Servers and choose Manage Servers to open the Sisense Server Console. Step 2: Stop the relevant ElastiCube and click Export . Step 3: Choose the save location for the .ecdata file.
      Note: If your ElastiCube is very large, the export can take a while to complete. We recommend stopping your Web server (IIS / IIS Express) to avoid the ElastiCube from automatically starting during this time as a result of incoming queries. Exporting dashboards (.dash) The process is the same for both Windows and Linux . From the Sisense web UI: Open Sisense web application. Navigate to the relevant dashboard. Click the more options menu (three dots) on the dashboard. Choose Export Dashboard . The dashboard will be downloaded to your local drive as a .dash file
      From the REST API: Export a dashboard to a .dash file: GET {{URL}}/api/v1/dashboards/{id}/export/dash
      Note: When you export multiple dashboards, they are bundled into a single .dash file. Creating a sample ElastiCube (reduced data set) If the .ecdata/.sdata file is too large to transfer, you can create a smaller sample data set. This method works on both Windows and Linux : Duplicate the model - this ensures your original dashboards are not impacted. Build the duplicated model with a limited number of rows - set a row limit during the build to produce a smaller data set. Export the smaller model using any of the methods described above.
      Important notes File naming: When exporting .sdata files, avoid spaces and dates in file names for easier handling (e.g., use SampleECommerce.sdata instead of Sample ECommerce-2025-03-27.sdata ). Security data not included: User permissions, security settings, and sharing configurations are stored in MongoDB and are not part of these export files. API size limit: The REST API v2 datamodel export/import has a 2 GB size limit.

      3 weeks ago
      0
               
    • Ihor Yokhym

      Ihor Yokhym

      Fixing Snowflake connection failure caused by JDBC driver NullPointerException [Linux]
               

      Introduction Resolve the Snowflake JDBC driver "HTTP request: null" communication error in Sisense (Cloud and On-Premises). This guide outlines how to upgrade the Snowflake JDBC driver to version 3.24.2 or later to bypass a known NullPointerException bug. Step-by-Step Guide Symptom When attempting to connect to Snowflake, the connection fails, and the logs display the following error message: Code Type: Error Message JDBC driver encountered communication error. Message: Exception encountered for HTTP request: null. This behavior stems from a known issue within the Snowflake JDBC driver itself (SNOW-1958601: NullPointerException for cacheFile in net.snowflake:snowflake-jdbc:3.23.0 ). The issue is resolved in connector version 3.23.2 and later or upgrade to Sisense version 2026.2.1+ . To completely safeguard your environment, follow the steps below to upgrade to version 3.24.2. Step 1: Download the Updated JDBC Driver Download the stable snowflake-jdbc-3.24.2.jar file or later directly from the official Snowflake repository or Maven Central. Maven repository: download driver Snowflake documentation Step 2: Upload the Driver to File Management Navigate to the File Management section on your Sisense server and upload the newly downloaded .jar file to the target Snowflake connector directory. /connectors/framework/SnowflakeJDBC/ [Screenshot: Sisense File Management interface showing the SnowflakeJDBC directory] Description: The image shows the Sisense File Management browser with the snowflake-jdbc-3.24.2.jar file successfully uploaded into the connectors framework directory. Step 3: Update the Connector Configuration Open the Sisense Admin portal. Navigate to Service Configuration → Manage Connectors → SnowflakeJDBC. Update the configuration properties to point directly to the new driver version ( 3.24.2 ). [Screenshot: Service Configuration UI for Manage Connectors] Description: This screenshot highlights the driver version field within the SnowflakeJDBC configuration menu where the version number needs to be updated. Step 4: Restart the Query Service To apply the changes and force Sisense to initialize the new JDBC driver, restart the Query service. Conclusion A known NullPointerException bug in the 3.23.0 Snowflake JDBC driver causes connection handshakes to fail with a generic null HTTP request error. Upgrading your Sisense environment to use the 3.24.2 driver patch (or later) via Service Configuration and executing a Query service restart successfully resolves the communication roadblock. References/Related Content  Maven repository: download driver Snowflake documentation GitHub Issue #2105: snowflakedb/snowflake-jdbc NullPointerException

      1 month ago
      0
               
    • Ihor Yokhym

      Ihor Yokhym

      Connecting Sisense to Amazon DocumentDB via generic JDBC [Linux]
                                               

      Introduction: Learn how to successfully connect Sisense to Amazon DocumentDB using a generic JDBC connection. This guide applies to Sisense Linux editions (both Cloud and On-Premises deployment models) and resolves common TLS-related connection reset errors. Step-by-Step Guide:   Step 1: Whitelist the Sisense Instance Before modifying any configurations in Sisense, verify that your Sisense instance IP address or network range is properly whitelisted in your AWS DocumentDB cluster's security groups. The default connection port is 27017 . Step 2: Download the driver Get the JDBC Driver for Amazon DocumentDB from the Amazon website and Github: AWS DocumentDB: Documentation AWS DocumentDB: Driver Github Step 3: Register the connector in Sisense 2.1 Go to Admin > Server & Hardware > System Management > Configuration . 2.2 Scroll to the bottom and click Manage Connectors . 2.3 In the left pane, click +JDBC Connector and fill in: Connector ID: [YOUR_NAME] Display Name: [YOUR_NAME] Class Name: software.amazon .documentdb.jdbc.DocumentDbDriver Upload JAR File: upload jar file Click Create . Step 4: Use the Generic JDBC Connection String Because of architectural differences, connecting via the native Sisense MongoDB connector can result in errors. Instead, connect using the generic AWS DocumentDB JDBC driver syntax. JDBC Connection String Template jdbc:documentdb://<hostname>:<port>/<database-name>?<options> Step 5: Configure TLS Settings and Resolve Socket Exceptions According to official AWS DocumentDB JDBC Driver documentation, the driver’s default behavior is tls=true. If your DocumentDB configuration expects plain text, a protocol mismatch occurs: the JDBC driver attempts an encrypted SSL handshake with a database node expecting unencrypted packets. DocumentDB will abruptly drop the network socket, resulting in the following error: java.net.SocketException: Connection reset To fix this, modify your connection string based on your database environment: For Non-TLS Environments: Explicitly turn off TLS encryption by adding tls=false and completely removing the tlsAllowInvalidHostnames flag. For TLS Environments: Ensure both tls=true and tlsAllowInvalidHostnames=true are active. Code Type: JDBC Connection String Example (TLS Disabled) jdbc:documentdb://<a target="_blank" rel="noopener noreferrer nofollow" href="http://my-cluster.cluster-xyz.us-east-1.docdb.amazonaws.com:27017/my_database?tls=false"><u>my-cluster.cluster-xyz.us-east-1.docdb.amazonaws.com:27017/my_database?tls=false</u></a> [Screenshot: Generic JDBC connection setup window in the Sisense Data tab] Description: The image above illustrates where to input the customized DocumentDB JDBC connection string and credential details within the Sisense Data Connector UI. Conclusion:  Successfully connecting Sisense to Amazon DocumentDB requires leveraging the generic JDBC driver framework rather than the native MongoDB connector. The most common pitfall is a TLS mismatch; explicitly declaring tls=false in your connection parameters will bypass the java.net .SocketException when working with unencrypted database nodes. References/Related Content  Sisense Documentation: Deploy Custom JDBC connector AWS DocumentDB: Documentation AWS DocumentDB: Driver Github

      1 month ago
      0
               
    • Micael Santana

      Micael Santana

      How to Replace Plugin Widgets in React Compose SDK [Linux]
                               

      This article explains how to replace plugin widgets inside embedded dashboards that use Compose SDK. You’ll learn how the system works internally, registration functions, and how to override the default behavior of the registration. Step 1: Understand the goal When working with embedded dashboards that contain Custom Widget Plugins, for example: Histogram, Tabber etc. The default behavior of CSDK is show an error placeholder: The main idea of Custom Widgets is to replace them, so the CSDK renders it instead of the original widget inside the DashboardById component. Step 2: Custom Component To start you must create the component itself, to do it you should implement CustomWidgetComponent , and fetch widget data using the useExecuteCustomWidgetQuery hook. import { CustomWidgetComponent, useExecuteCustomWidgetQuery } from '@sisense/sdk-ui'; const ResultsTable: CustomWidgetComponent = (props) => { const { data } = useExecuteCustomWidgetQuery(props); if (!data) { return null; } return ( <table style={{ margin: '20px' }}> <thead> <tr> {data.columns.map((column, columnIndex) => ( <th key={columnIndex}>{column.name}</th> ))} </tr> </thead> <tbody> {data.rows.map((row, rowIndex) => ( <tr key={rowIndex}> {row.map((cell, cellIndex) => ( <td key={cellIndex}>{cell.text}</td> ))} </tr> ))} </tbody> </table> ); }; What it does: The component itself it's just a component from React, so you implement: charts, simple tables etc. The key is the useExecuteCustomWidgetQuery that executes the widget query and returns structured data so your component can render however you want. Note: If you prefer working with raw query results instead of formatted data, you should use extractDimensionsAndMeasures together with useExecuteQuery . Step 3: The Data The CustomWidgetComponent receives properties similar to those by plugins internally, like: metadata, filters, configuration. This means: Some logic from plugin widgets can often be reused. Data remains compatible with Fusion. Migration from plugin widgets → Compose SDK is simplified Compose SDK mainly handles rendering, while configuration and data still come from the Sisense. Step 4: Register the custom widget After creating your component, you must register it before rendering the dashboard. Registration tells the SDK which component should be used when it encounters a Custom Widget Type. import {DashboardById,useCustomWidgets }from'@sisense/sdk-ui'; functionApp() { const { registerCustomWidget }=useCustomWidgets(); registerCustomWidget('histogramwidget',ResultsTable); return<DashboardByIddashboardOid={'66f4d4dd384428002ae0a21d'}/>; } Important Registration must happen before the dashboard renders. Once registered, the widget is stored inside the main Compose SDK context. Any dashboard within that context will automatically use your custom widget. Step 5: Understand more about how it works internally Internally, the SDK keeps registered widgets inside a registry managed by the CSDK Context: So the rendering flow will be: Dashboard loads widget metadata. CSDK checks if that widget type exists in the registry: If registered → renders your custom component If not → renders the error placeholder The registry uses a key-value structure for fast lookup and to avoid repeated registrations. Step 6: Why widgets are designed to register only once Registration happens once per context lifecycle by design. This provides several benefits: Performance: prevents repeated registrations on re-renders Predictability: ensures only one implementation per widget type Stability: avoids conflicts between components trying to register the same widget Memory safety: prevents the registry from growing uncontrollably Since registrations are stored in a Context map, calling registerCustomWidget multiple times is unnecessary and discouraged. Step 7: How to unregister it? If you need to unregister a component, recently we added a new method named unregisterCustomWidget , to the CSDK Custom Widgets, that you can use to do it: Note: this was added in v2.26.0 , of Compose SDK. import { useCustomWidgets } from '@sisense/sdk-ui'; export const FunnelWidget = () => { const { registerCustomWidget, unregisterCustomWidget } = useCustomWidgets(); const [type, setType] = useState<'funnel' | 'treemap'>('funnel'); const widget = type === 'funnel' ? CustomFunnel : CustomTreemap; useEffect(() => { registerCustomWidget('histogramwidget', widget); return () => unregisterCustomWidget('histogramwidget'); }, [registerCustomWidget, unregisterCustomWidget, widget]); return ( <div> <Select value={type} onValueChange={(v) => setType(v as 'funnel' | 'treemap')} > <SelectTrigger className="w-[180px] my-3"> <SelectValue placeholder="Chart Type" /> </SelectTrigger> <SelectContent> <SelectGroup> <SelectItem value="funnel">Funnel</SelectItem> <SelectItem value="treemap">Treemap</SelectItem> </SelectGroup> </SelectContent> </Select> <DashboardById key={`dashboard-${type}`} dashboardOid={'68dae1429e8028a69c6a41ee'} /> </div> ); }; Using it you don't need to re-render the Sisense Main Context to change the register type, but you still need to re-render the Dashboard Component. Best practice recommendation Register custom widgets once during application initialization whenever possible. Only force a context remount if you specifically need dynamic registration behavior. Conclusion:  Custom Widgets in Compose SDK provide a powerful way to replace plugin widgets while still using the original widget data. Understanding that registration is stored in a context-level registry explains: why widgets are registered once, why repeated registration isn’t needed and why remounting the context is sometimes required for advanced scenarios. References/Related Content  Compose SDK documentation: DashboardById Component . Compose SDK documentation: Custom Widgets . Compose SDK documentation: Sinsense Context Provider . Mentioned Plugins: Tabber , Histogram . Disclaimer: This post outlines a potential custom workaround for a specific use case or provides instructions regarding a specific task. The solution may not work in all scenarios or Sisense versions, so we strongly recommend testing it in your environment before deployment. If you need further assistance with this, please let us know.

      1 month ago
      0