Dashboards
Create custom data visualization dashboards with AI-assisted chart creation, drag-and-drop layouts, and public sharing.
Production Ready - Full dashboard system with chart editor, 12+ chart types, workspace sharing, and public links
Overview
Qry Dashboards provide a powerful way to create custom data visualizations. Build interactive dashboards with multiple chart types, tables, KPIs, and share them with your team or publicly.
Key Capabilities:
- Drag-Drop Layout - Resize and reposition tiles freely on a 12-column grid
- 12+ Chart Types - Bar, line, pie, heatmap, sankey, treemap, and more
- Interactive Filters - Add filter controls that dynamically update all tiles
- AI Integration - Add charts directly from AI conversations
- Public Sharing - Generate unique URLs for external viewers
- Auto-Refresh - Configure refresh intervals from 30 seconds to 1 hour
- Workspace Integration - Share dashboards with team members
Quick Start
Creating Your First Dashboard
- Navigate to Dashboards from the left navigation rail
- Click + New Dashboard
- Enter a name and optionally assign to a workspace
- Click Create Dashboard to open the editor
Adding Tiles
- Click + Add Tile in the toolbar
- Choose a tile type: Chart, KPI, Table, or Text
- Configure the datasource and write your SQL query
- Map chart fields (X-axis, Y-axis) and customize appearance
- Click Add Tile to place it on the dashboard
Sharing Dashboards
- Click the Share button in the toolbar
- Toggle "Make Public" to generate a shareable link
- Anyone with the link can view the dashboard (read-only)
Tile Types
| Type | Description | Use Case |
|---|---|---|
| Chart | ECharts visualization with 12+ chart types | Data trends, comparisons, distributions |
| KPI | Single metric with optional comparison | Key performance indicators, targets |
| Table | Data table with sorting | Detailed data views, records listing |
| Text | Static HTML/markdown content | Headers, notes, embedded images |
Chart Types
Qry supports a wide variety of chart types powered by ECharts:
Standard Charts
- Bar / Line / Area - Standard charts for time series and comparisons
- Pie / Funnel - Part-to-whole relationships
- Scatter - Correlation analysis
Advanced Visualizations
- Heatmap - Matrix data visualization
- Treemap - Hierarchical data proportions
- Sankey / Chord - Flow and relationship diagrams
- Gauge - Single value with target
- Radar - Multi-dimensional comparisons
Chart Field Mapping
Different chart types require different field configurations:
| Chart Type | Required Fields |
|---|---|
| Bar/Line/Area | X-axis field, Y-axis field |
| Pie/Funnel | Name field, Value field |
| Heatmap | X field, Y field, Value field |
| Sankey/Chord | Source field, Target field, Value field |
| Treemap | Name field, Value field, Category field |
| Gauge | Value field |
Dashboard Editor
Layout Grid
The editor uses a 12-column grid system:
- Drag tiles to reposition them anywhere
- Resize using the handle in the bottom-right corner
- Tiles snap to grid positions automatically
- Layout saves automatically as you work
Toolbar Actions
| Button | Action |
|---|---|
| + Add Tile | Open tile wizard |
| Refresh | Re-execute all queries |
| Preview | Toggle preview mode (hide grid) |
| Share | Generate public link |
| Settings | Edit dashboard properties and filters |
Tile Configuration Panel
Click any tile to open the configuration panel:
Dataset Section
- Select datasource
- Choose catalog and schema
- Write or edit SQL query
- Run query to preview results
Visualization Section
- Change chart type
- Edit title
- Configure axis mappings (X, Y, Series)
Display Options
- Show/hide legend
- Stacked bars/areas
- Smooth line curves
- Horizontal orientation
Dashboard Filters
Add interactive filter controls that allow users to dynamically filter data across all tiles.
Filter Types
| Type | Description | Example Use |
|---|---|---|
| Select | Single value dropdown | Status, Category |
| Multi-Select | Multiple values selection | Regions, Products |
| Date Range | Start and end date picker | Report periods |
| Date | Single date picker | Snapshot date |
| Text | Free text input | Search terms, Year |
Adding Filters
- Click Settings in the toolbar
- Go to the Filters tab
- Click + Add Filter
- Configure the filter:
- ID - Unique identifier for SQL placeholders (e.g.,
status,date_range) - Label - Display name shown to users
- Type - Select the filter type
- Options - For Select/Multi-Select: define available options
- Default - Optional default value
- ID - Unique identifier for SQL placeholders (e.g.,
Using Filters in SQL Queries
Reference filters in your tile queries using the ${filterId} placeholder syntax:
-- Simple filter
SELECT * FROM orders
WHERE status = ${status}
-- Multi-select filter (use with IN clause)
SELECT * FROM sales
WHERE region IN (${regions})
-- Date range filter
SELECT * FROM transactions
WHERE date >= ${date_range.start}
AND date <= ${date_range.end}
-- Combining multiple filters
SELECT product, SUM(amount) as total
FROM orders
WHERE status = ${status}
AND region IN (${regions})
AND order_date >= ${period.start}
AND order_date <= ${period.end}
GROUP BY product
Filter Placeholder Reference
| Filter Type | Placeholder Syntax | SQL Output Example |
|---|---|---|
| Select | ${status} | 'active' or 123 (numeric) |
| Multi-Select | ${regions} | 'North', 'South', 'East' |
| Date Range | ${range.start}, ${range.end} | '2024-01-01', '2024-12-31' |
| Date | ${date} | '2024-06-15' |
| Text | ${search} | 'keyword' or 2024 (numeric) |
Filter values that are valid numbers (integers or decimals) are automatically inserted without quotes. String values are properly quoted and escaped for SQL safety.
Date Range Presets
The date range picker includes convenient presets organized in tabs:
Presets Tab:
- Today, Yesterday
- Last 7 / 14 / 30 Days
- Last 90 / 180 / 365 Days (in "More" section)
- Year To Date
- This Week / Month / Quarter / Year
- Previous Week / Month / Quarter / Year
Custom Tab:
- Manual start and end date selection
When a preset is selected, the button displays the preset name (e.g., "Year To Date") instead of the date range.
Filter Behavior
- Auto-refresh: Tiles automatically refresh when filter values change
- Debouncing: Text filters wait 300ms after typing stops before triggering refresh
- Loading indicator: Tiles show a spinner overlay during data refresh
- URL sync: Filter values are reflected in the URL for shareable links
- Defaults: Filters use configured defaults on initial dashboard load
Filter Tips
- Use meaningful IDs - Choose descriptive filter IDs like
date_rangeorproduct_category - Add placeholders in comments - Document available filters in SQL comments for clarity
- Test with Preview - Use the SQL editor's Preview button to test filter substitution
- Consider NULL handling - Unset filters substitute as
NULL
Adding Charts from Conversations
When the AI generates a chart in a conversation, you can add it directly to a dashboard:
- Click the Add to Dashboard button on the chart
- Select an existing dashboard or create a new one
- Enter a title for the tile
- Click Add to Dashboard
Supported Chart Sources
| Source | Storage | Behavior |
|---|---|---|
| SQL Charts | Query stored | Re-executes on refresh (live data) |
| Matplotlib/Seaborn | Image embedded | Static snapshot |
| Plotly | HTML embedded | Interactive (click to view fullscreen) |
Plotly Charts
Plotly charts are displayed as preview cards for security. Click View Chart to open a fullscreen modal with full interactivity (zoom, pan, hover). You can also download the chart as an HTML file.
Public Sharing
Making a Dashboard Public
- Click the Share button in the toolbar
- Toggle "Make Public"
- Link is automatically copied to clipboard
- Share the link with anyone - no login required
How Public Dashboards Work
- No login required to view public dashboards
- Data comes from cached snapshots (not live queries)
- Read-only - viewers cannot edit
- Auto-updates when owner creates new snapshot
A snapshot is automatically created when you make a dashboard public. The snapshot caches query results so public viewers don't need database access.
Revoking Access
- Click Share
- Toggle "Make Private"
- Existing links immediately stop working
Workspace Dashboards
Assigning to a Workspace
- Create a new dashboard or edit an existing one
- Select a workspace from the dropdown
- All workspace members can now view and edit the dashboard
Access Control
| User | View | Edit Tiles | Delete/Share Dashboard |
|---|---|---|---|
| Dashboard Owner | Yes | Yes | Yes |
| Workspace Members | Yes | Yes | No |
| Non-members | No | No | No |
Important: Workspace membership grants dashboard access but does NOT grant access to underlying datasources. RBAC permissions still apply - workspace members must have permission on the datasources to execute tile queries.
Configuring Tiles
KPI Tiles
Display key metrics with optional comparisons:
- Single large number display
- Prefix/Suffix (e.g., "$", "%", "M")
- Comparison indicator with up/down arrows
- Compare value and label for context
Table Tiles
Show data in tabular format:
- Sortable columns by clicking headers
- Zebra striping option for readability
- Compact mode for dense data
- Limited to 100 rows displayed
Text Tiles
Add static content:
- Headers and section labels
- Instructions or notes
- Embedded images
- HTML formatting supported
Dashboard Settings
Access settings from the editor toolbar:
| Setting | Description |
|---|---|
| Name | Dashboard title |
| Description | Optional description |
| Workspace | Assign to a team workspace |
| Auto-refresh | Set refresh interval (30s, 1m, 5m, 15m, 30m, 1h) |
Best Practices
Dashboard Design
- Use consistent layouts - Align tiles in rows for visual harmony
- Group related metrics - Place related KPIs together
- Limit tiles per dashboard - 6-12 tiles recommended for readability
- Use clear titles - Be specific about what each tile shows
- Add context - Use text tiles for section headers and notes
Query Performance
- Use LIMIT - Restrict row counts (e.g.,
LIMIT 100) - Aggregate data - Use
GROUP BYinstead of raw rows - Add indexes - For frequently queried columns
- Use snapshots - For expensive queries on public dashboards
Refresh Strategy
| Use Case | Recommended Interval |
|---|---|
| Real-time monitoring | 30 seconds |
| Operational dashboards | 1-5 minutes |
| Daily reports | 30-60 minutes |
| Static analysis | Manual only |
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Escape | Close config panel |
Delete | Delete selected tile (with confirmation) |
Ctrl/Cmd + S | Save dashboard |
Troubleshooting
Tile Shows Error
- Check the error message displayed in the tile
- Open config panel and review the query
- Click "Run Query" to test
- Verify you have datasource permissions
Layout Not Saving
- Ensure you're the owner or workspace member
- Check network connection
- Refresh the page and try again
Chart Not Rendering
- Verify query returns data (run query to test)
- Check field mappings in configuration
- Ensure value fields contain numeric data
- Try a different chart type
Public Dashboard Shows No Data
- Owner must create a snapshot before sharing
- Snapshot may have expired (7-day TTL)
- Owner should refresh and create new snapshot
Limitations
- Maximum 50 tiles per dashboard
- Query results limited to 10,000 rows
- Table tiles display maximum 100 rows
- Public dashboard snapshots expire after 7 days
- Plotly charts require fullscreen modal to interact
Dashboards work great with Python Execution for custom Matplotlib/Plotly charts, Notebooks for scheduled analysis that feeds dashboards, Workspaces for team collaboration, and Qry Nexus for building dashboards from curated Data Products!
For programmatic dashboard management, see the Dashboard API Reference.