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.
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"])
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.
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.
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.
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.
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.
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.