Amazon QuickSight

Amazon QuickSight is AWS's serverless, cloud-native business intelligence (BI) service. It connects to AWS data sources (Athena, Redshift, RDS, S3, OpenSearch) and external databases, accelerates queries through the SPICE in-memory engine, and lets users author and share interactive dashboards. QuickSight Q layers natural-language Q&A on top, and embedded analytics and Generative BI features extend dashboards into customer-facing apps.


Key Features:


Common Use Cases:


Service Limits & Quotas:


Pricing Model:


Code Example:


import boto3

qs = boto3.client("quicksight", region_name="us-west-2")
account_id = "123456789012"

# Create an Athena dataset and ingest into SPICE
qs.create_data_set(
    AwsAccountId=account_id,
    DataSetId="sales-by-region",
    Name="Sales by Region",
    PhysicalTableMap={
        "tbl-1": {
            "RelationalTable": {
                "DataSourceArn": f"arn:aws:quicksight:us-west-2:{account_id}:datasource/athena-prod",
                "Schema": "analytics",
                "Name": "sales_by_region",
                "InputColumns": [
                    {"Name": "region", "Type": "STRING"},
                    {"Name": "sales",  "Type": "DECIMAL"},
                    {"Name": "ts",     "Type": "DATETIME"},
                ],
            }
        }
    },
    ImportMode="SPICE",
    Permissions=[{
        "Principal": f"arn:aws:quicksight:us-west-2:{account_id}:user/default/analyst@example.com",
        "Actions": ["quicksight:DescribeDataSet", "quicksight:PassDataSet"],
    }],
)

# Generate an embed URL for a dashboard reader (5-minute single-use URL)
embed = qs.generate_embed_url_for_registered_user(
    AwsAccountId=account_id,
    SessionLifetimeInMinutes=600,
    UserArn=f"arn:aws:quicksight:us-west-2:{account_id}:user/default/viewer@example.com",
    ExperienceConfiguration={
        "Dashboard": {"InitialDashboardId": "sales-overview"},
    },
)
print(embed["EmbedUrl"])
  


Common Interview Questions:

What is SPICE and when should you use Direct Query instead?

SPICE caches data in QuickSight's columnar in-memory engine for fast, predictable performance. Use SPICE for dashboards that need sub-second response and can tolerate scheduled refreshes. Use Direct Query when freshness is critical (e.g., real-time ops dashboards) and the source can sustain the query load.

How does QuickSight pricing differ from other BI tools?

Authors pay a monthly subscription, but Readers pay per session with a monthly cap — making it dramatically cheaper than seat-based BI tools for organizations with many occasional viewers.

How do you embed a dashboard in a SaaS app?

Generate a one-time embed URL via generate_embed_url_for_registered_user or generate_embed_url_for_anonymous_user, then load it in an iframe with the QuickSight Embedding SDK. Anonymous embedding requires session capacity pricing.

How is row-level security configured?

Create a permissions dataset that maps user names or groups to row filters (e.g., region = 'WEST'). Attach it to the target dataset; QuickSight applies the filter on every query for that user.

What is QuickSight Q?

A natural-language Q&A layer. You define a Q topic (a curated subset of fields, synonyms, and metrics) and users ask questions in English; QuickSight generates the corresponding visual. The Generative BI add-on extends this to authoring and narratives via Amazon Q.

How do you keep a SPICE dataset fresh?

Schedule incremental or full refreshes (hourly to monthly), trigger refresh via API after upstream pipeline completion, or use near-real-time refresh on supported sources. Watch refresh duration as datasets grow — it impacts SLA on dashboards.


QuickSight is the natural BI choice for AWS-centric data stacks. Its session-based pricing, native AWS integration, and embedded analytics support make it well-suited to both internal reporting and customer-facing analytics inside SaaS products.