In this blog we are covering the best practices which should be followed while using Helical Insight to create your reports, dashboards, embedding, Single Sign On, optimal performance, higher security etc.
a) Dynamic DB Switching :
– There are certain cases when we would like the report or dashboard to all together switch to a different database (in the same server or different server based on a specific logic) then dynamic db switching can be used. With this feature rather than creating different set of metadata, reports and dashboards individually for every organization, we can create common reports, dashboards. So basically based on the logged in organization/role/profile that has logged in, the report can gets switched and we can see the respective reports, metadata and the dashboards also which are all related to that organization.
– You can refer to the blog https://www.helicalinsight.com/dynamic-database-switching/ to learn more about dynamic db switching. There is an option of using Groovy plain JDBC or Groovy Managed JDBC to switch connection. The mapping of list of all the datasources can be saved in a physical file or in a table from which it can be fetched. You can reach out to firstname.lastname@example.org to know more if you have any questions.
b) Public Data Source:
– Ideally speaking for a person to view the report or dashboard datasource has also to be shared.
– When we do not want to share the dataSource again and again, then we can make it as public (accessible to all the users).
– This happens because there is no security applied to the data source. Even though no security is applied it does not mean that anyone can view the connection details, it simply means they can run the reports and dashboard built using this specific DB without having the need to share it.
– Even though it is public, every one cannot see database connection details. Read this to understand how to make a dataSource as public.
– Shall you have any more questions please reach out on email@example.com
c) Data source sharing in execute mode :
– In case if you don’t want to make a dataSource public, then you can always share the data source in various mode. But it is always advisable to share it in execute mode so that the users can be able to execute the reports, dashboards (where they can only view reports and dashboards) etc. This gives it enhanced security.
d) Connecting to DB:
– Ideally speaking you should create a new user like bi_user at your database and this user should have only access to limited tables and columns which are required for reporting purposes. And at helical insight datasoures page you should only connect with this specific bi_user.
– This will have 2 benefits. Firstly this is more secure. Secondly the performance at metadata page will be much faster since only those tables and columns will be loaded which are required for reporting purposes.
FILE BROWSER :
a) Public Folder :
– Similar to making datasource public, you can also make a folder public. So if you make a folder public whatever is saved in that everybody will get access to it without the need of explicitly sharing it.
– Even though everybody will get access to it they will still see the reports and dashboard with limited data (based on the security conditions which are defined at the metadata level)
– Refer to this to learn more about public folder.
b) Bundled sharing :
– When we want to share all the reports present in a particular folder, then rather than sharing every report individually we can share the entire folder, so that every report, dashboard and metadata that is present in the folder will be automatically shared.
c) Related things to be placed in same folder :
– It always recommended placing all the reports, dashboards and metadata which are all related to a same type in a same folder, so that it is easy to access and avoiding any confusion.
– Ex: If we create reports, dashboards and metadata related to students , then it is advisable to create a folder with name as students create subfolders like metadata, reports and dashboards. Hence with a single sharing all the required resources will get shared.
d) No access permission :
– Let us say that you have shared an entire folder with an organization which has 5 dashboard, but you want to hide one dashboards and only share the remaining 4 dashboard from that organization.
– In this case you can share the home folder.
– Then navigate to that dashboard which you do not want to share, select -> right click -> share -> at the permissions select no access and save.
– Now this specific dashboard cannot be accessed by the users of that organization.
a) Limited no. of tables & columns :
– The metadata file contains all the information related to tables, joins, aliases, security, custom SQL etc. Our Helical Insight application always needs to parse through the metadata file to create the SQL
– At the metadata level, if we have many number of tables and columns and views etc, then it will affect the performance as will become really heavy and parsing through it will take more time.
– So, it is always recommended to create simple metadata’s by limiting the no. of tables etc based on the reporting needs. For example for all the HR related reports dashboards you can have HR metadata, for sales people you can have sales metadata etc.
b) Views to handle complex logics :
– At the metadata level we have the option of creating views which can be used to handle more complex calculations. So that at adhoc level it is easier to create the reports by simply drag drop operations.
– However, as much as possible, we should have pre calculated tables and columns since databases are optimized for handling those calculations. This will ensure high performance. If we try to handle more and more complex calculations at the BI level we might not really get very optimal performance.
c) Dynamic view as parameterization :
– At the metadata level, we also have the option to create dynamic views.
– In this Dynamic view, we can pass the session variables like current logged in user, organization etc, also at report level what are the filters applied and based on this the data will be returned accordingly.
– These features can be used for more dynamic requirements.
d) Do not have Cyclic joins :
– At metadata level, we have the option to create joins between tables. So these joins should be unidirectional, if not it may result in either wrong data or some time errors.
– Ex: Let’s say there are three tables (T1,T2,T3)… we can create joins in the way like T1 joins T2 and T2 join T3 …Here make sure that you do not join T3 to T1 , in this case it will become a cyclic join and result in wrong data.
USER ROLE MANAGEMENT :
a. Multiple Profile Values
– At the user role management level we have profiles, so a user can have profilename and multiple profile values.
– When we have many profiles values to be assigned to a particular user, then it is advisable to create a table at the database, where the hierarchy is defined and we should pass higher hierarchy at implementation.
– Example: If an organization we are implementing data security and are passing the emp_id as profilevalue to see the data, then that means the CEO who should get access to all the data he will get emp_id of all the employees passed as comma separated value. With more employees this will become really big and not advisable.
b. Single Sign On in case of embedding
– If you are having a product within which you are planning to embed Helical Insight and your product is having its own userrole management, then ideally you should also implement Single Sign On.
– We provide various types of Single Sign On support which includes CAS, LDAP, Active Directory, ADFT, JWT token, token based authentication mechanism etc. You can find the documentation about these various SSO options on our website.
– It is advisable to only drag the bare minimum columns that are necessary for the visualization, so that it both looks clearer and also give good performance.
– Filter names should always be kept simple and same for different reports when we use the same filter, so that at the dashboard level we can avoid multiple variables (a common variable can be used for all the reports).
– Filter names and Column names should be simple and make sure that you do not use any reserved keywords like (Date, Time, Subject, filter etc).
– You can also set the cache refresh from the customization (ex: 5mins, 1hr etc), so that the report gets updated for every mentioned time. Though it is not advisable to keep very high refresh rates, because that will always fire unnecessary SQLqueries to your database.
– When you create a report ex: table and applied some customizations, and now if you want to change the visualization to bar chart or any other, then make sure that you delete the previously applied customizations. If not it may either give an error or the new visualization may not get loaded. This happens because each chart is having its own JS code in the customization, if you don’t delete it will try to apply one customization on other kind of chart which might not be relevant to that chart.
– In the same way as above, when you apply any CSS or JS to any report and if you want to change the visualization, then make sure that the previously applied JS or CSS scripts are deleted.
– By default the chart look and feel, font, color, legend, labels etc are specified in backend files. Hence if you have any specific preference of the same, it can be done in this specific files. This can help in reducing the customization requirement from: (file is h3.js and other js , present in the location “..\hi\apache-tomcat-9\webapps\hi-ee\js\vendors“).
– After creating a report with the necessary requirements, you can click on the SQL at the report, by which you can understand what logic is applied and SQL is created and also you can verify it.
– There is also an option to copy the SQL, (at top right of SQL section), you can copy and verify whether the proper data is shown or not.
– It is advisable to keep most of the users at read only mode at adhoc report level and only few users should have access to create report. Reason being adhoc reports creation can generate a lot of adhoc sql which can affect your database performance
– If your reports have large amount of data, then ideally speaking end users should not be allowed to do data export / only should be able to do limited data export. The reason being in case if many people start clicking on raw data export it can put a lot of load on the database. Rather the data export should be limited or the request can be taken and when the server is free the export can happen and the exported file can be saved at a specific location. Reach out on firstname.lastname@example.org to know more about this.
– Similar to the point mentioned above, pdf export as well as email scheduling should also be limited and this option should not be given to all. Hardware should be accordingly increased as and when there are more users, more exports and more email scheduling which is happening as these processes are resource intensive.
– We have different kinds of charts available like tabular reports, axis charts (like bar chart, line chart etc), non-axis charts (pie-chart, donut chart) etc. You can refer to the below images to understand which kind of charts will be relevant based on what all you have dragged.
– At the dashboard level, there is an option of grouping. Grouping can be done for any component like report, text, image, input parameter etc. Some of the use cases of grouping includes may be putting all the input parameters together and giving a background color. Second use case is when you want to put things on top of one another like putting an icon inside a donut, or putting an image next to a card .
– Read here to learn about grouping. Also about overlays and how to put things on top of each other.
– In order to achieve proper alignment of reports in dashboard, Right click on report -> alignment -> give the dimensions required. The entire width is 100, so lets say there are 5 components each can be given a width of 20 and first component can be 0 from left, second 21 from left, third 41 from left so on and so forth. Using right click alignment option can give you pixel perfect position and alignment very quickly.
– Refer to this link to learn about various right click customizations and alignment options.
– When you right click on any component you can customize it, then without closing this multimodal you can simply right click on the next component and customize. Hence this can reduce your efforts. For example let’s say you have 10 reports whom you want to give header, first right click on first report give header and apply, without closing the multimodal window right click on second report. The opened multimodal will now start pointing to second report.
– Having same filter names at report level ensures there are not unnecessary dashboard variables because they may affect performance.
– Make sure do not have lots of panels in dashboard. This can help in better performance as well as help users to understand the dashboard as well quickly.
– When you have multiple input parameters at dashboard, it is better to have a submit button so that all the reports will get updated only after clicking on submit button.
Learn how to implement submit button here.
– Dashboard designer best practices should ideally be followed for a good dashboard. learn here about dashboard designer best practices
WHITE LABELLING :
– With the help of White labelling, you can change the look and feel of the application as you wish, but make sure that you give unique names to the classes, divs etc so that you can avoid CSS conflict.
– It is ideal that you create your own CSS and invoke it. Do not make direct changes in the CSS files of Helical Insight, this will help in easier upgradation.
SSO BEST PRACTICES :
– Use SSO when embedding within any other product and if you would like to maintain the same session as well as synching of user role management.
– There are various methods of SSO supported like CAS, LDAP, Active Directory, ADFS, JWT and external token based authentication mechanism. The same documents you can find on our website or you can reach out on email@example.com to learn more.
– When you have implemented SSO, make sure that you logout Helical Insight when a person is logging out from the parent application. There is helical insight logout API which can be triggered.
– In the SSO embedded mode, increase the session timeout of helical insight so that it should not show helical insight logout page (default logout session time is 30 min). Refer to this link.
– Whenever a person is loggin into helical insight a tomcat session gets created. With a lot of already logged in users, helical insight tomcat memory can get full. So make sure you have sufficient hardware allocated to it.
– Using session less is most preferred method of SSO so that tomcat session gets killed automatically after serving the request by an end user. JWT method of implementing SSO supports session less. Learn here more about JWT SSO method.
PERFORMANCE AND SECURITY :
– Performances get increased by increasing JVM memory & RAM processing. Allocate sufficient memory, processing and JVM.
– How to increase JVM memory? Refer to this link.
– There is caching functionality for ensuring better performance of application. We have a file cache.xml, where we can make the cache enable, set the cache time out etc. It is not advisable to keep the cache time to very less time otherwise it will keep on querying the database again and again. Learn how to Customize cache memory
– On the home page of helical insight , there is a section where you can see logger settings. This log should always be kept as error (if it is necessary to change log to any other option, then you have to revert it back to error after completion of your needs). Otherwise this can generate a lot of logs which can fill the memory.
– HA and load balancing: When you have many users logging in at a same time it may result in some sort of load on application .So, rather than having a single big server, it is advisable to have multiple servers.
– When you integrate the Helical Insight on any parent application, then make sure that you enable https on the Helical Insight. This will make sure that on all the browsers it is visible without any CORS or blocking issue.
Introducing World's First
Business Intelligence (BI)
Business Intelligence (BI)
Helical Insight Community Edition
Open Source With Lowest
Total Cost Of Ownership
And High ROI
Total Cost Of Ownership
And High ROI
Make Quick Informed
Decisions From Your
Decisions From Your
Various Data Visualization Options Like Reports, Dashboard, Geographical
Analytics, Statistical & Scientific Charts etc.
Analytics, Statistical & Scientific Charts etc.