Utilize AWS Quicksight to gain analytical insights for your SAAS platform.
Published: 2024-01-31 13:56:43

**Problem Statement**
Developing analytics for constantly evolving SAAS platforms can present significant challenges in terms of time and effort. What strategies can be employed to overcome these obstacles?

**Solution**
AWS QuickSight can become very handy and scalable for this problem. They also have strong community support which flattens the learning curve.

There are various methods to incorporate QuickSight into your client-side application and provide a business intelligence solution. However, my preferred approach is to embed the dashboard. By doing so, your platform can effectively manage the accessibility of the dashboard and avoid the need to create all users on AWS.

**Product / UX:** If you have multiple services, a helpful solution is to create a dashboard. This dashboard should have a summary of the platform and service-specific KPIs and reports. QuickSight allows you to create an Analysis with multiple tabs. For example, the first tab can include a summary of analytics for the platform, and subsequent tabs can have service-specific reports.

![Sample Dashboard](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/3jx9sog3jfsf6zjxv1u3.png)

After finalizing the dashboard, you have the option to export it as a **template**. This template can be utilized to create a client-specific dashboard, where you can associate data sources of the same kind to each dashboard during deployment. Once the dashboard is deployed, an anonymous user can access it through an embed URL generated using their [API](https://docs.aws.amazon.com/cli/latest/reference/quicksight/generate-embed-url-for-anonymous-user.html). This URL can be inserted in the iframe on your client-specific application. The API lets you control the session length and where it can be embedded. In my case, I limit the session to 30 minutes and specific subdomains for each client.

With QuickSight, you have a variety of options to extract data from various sources, both with and without a pipeline. Take a look at the image below to see the available data sources.

![Types of Datasources](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/k0z0ofwei4h7h55ytkjf.png)

In case your data is located elsewhere and cannot be directly linked to Quicksight, you can create a task to transfer daily data to s3 and then import the data to Quicksight SPICE from s3. Quicksight also offers an incremental loading feature.

**Data Loading and Refreshing**
With QuickSight, you can create a dashboard that consolidates data from various sources into multiple datasets.

These are the steps you can follow to create the dataset.

Steps:

- Create Data Source
- To optimize performance, it's recommended to generate a DataSet from your data source and set it up to load in the [SPICE](https://docs.aws.amazon.com/quicksight/latest/user/spice.html). This way, your data source won't be responsible for sorting and aggregating operations.
- Create a Refresh Schedule for the dataset (if your dataset is configured to does not cache data in SPICE, QuickSight will query your database for each sorting and analytical operation [mostly for RDS].)
- Connect dataset to dashboard. [API](https://docs.aws.amazon.com/cli/latest/reference/quicksight/create-dashboard.html)


![Data Pipeline](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/01sfcefuyjh2ibfxfx6o.png)


**Automation**
AWS QuickSight has API for almost every operation you can imagine, and that gives you the power to automate the entire deployment process.

You can find all the available API for QuickSight in below link.

https://docs.aws.amazon.com/cli/latest/reference/quicksight/index.html

**Resources**
https://docs.aws.amazon.com/cli/latest/reference/quicksight/index.html
https://docs.aws.amazon.com/cli/latest/reference/quicksight/generate-embed-url-for-anonymous-user.html
https://docs.aws.amazon.com/quicksight/latest/user/spice.html
https://community.amazonquicksight.com/