Last updated: September 2025 | Reading time: 12 minutes | Level: Beginner to Advanced
Charts show trends. Tables show details. Both belong in every professional dashboard.
What Will You Learn About Qlik Sense Tables?
- Create tables in 10 minutes — with concrete step-by-step instructions
- Number formatting that business users understand (not just techies)
- The most important table settings for different use cases
- Performance optimization when your table gets slow
- When tables are better than charts (and vice versa)
Straight Table vs. Classic Table: What’s the Difference?
Qlik Sense has two table types. You only need one of them.
Why You Should Use Straight Table for New Projects
Where to find it: Visualization Bundle → «Straight table»
Advantages:
- End users can add/remove columns (Chart Exploration)
- Better performance with large datasets
- More formatting options
- Actively developed
Use Straight Table when:
- You’re building a new dashboard
- Users should customize columns themselves
- You need modern features
The Classic Table (Legacy)
Where to find it: Charts → «Table»
Disadvantages:
- Fewer features
- No user customization
- Being deprecated long-term
Only use the classic table if:
- You’re maintaining an existing app
- Migration to Straight Table isn’t possible yet
Recommendation for this tutorial: We use exclusively Straight Table. All instructions refer to it.
How to Create Your First Straight Table in Qlik Sense
We’ll build a sales analysis table. Step by step, ready to follow along. For a complete reference of all table properties, see the Qlik official table documentation and the table properties reference.
The Scenario
Goal: Analyze top customers by revenue
Required columns:
- Customer name
- Region
- Revenue
- Number of orders
- Average order value
Step 1: Add the Straight Table
Where: Your sheet in edit mode
Action:
- Left sidebar → «Custom objects» → «Visualization bundle»
- Select «Straight table»
- Drag it onto your sheet
Result: Empty table with «Add dimension» and «Add measure»
Step 2: Add Dimensions (Categories)
Dimensions are your row categories. Here: customers and regions.
Dimension 1: Customer name
Where: Click "Add dimension"
Field: [CustomerName]
Label: Customer
Dimension 2: Region
Where: Click "Add dimension" again
Field: [Region]
Label: Region
Result: Table now shows all customers with their regions. No measures yet.
Step 3: Add Measures
Measures are your numeric columns. Here: revenue and orders.
Measure 1: Revenue
Expression: Sum([Sales])
Label: Revenue
Number format setup:
- Under the expression → «Number formatting»
- Select «Money»
- Format pattern:
$#,##0 - Decimals:
0
Measure 2: Number of orders
Expression: Count([OrderID])
Label: Orders
Number format:
Type: Number
Format pattern: #,##0
Decimals: 0
Measure 3: Average order value
Expression: Sum([Sales]) / Count([OrderID])
Label: Avg Order Value
Number format:
Type: Money
Format pattern: $#,##0
Decimals: 0
Result: Table now shows customers with all measures.
Step 4: Set Up Sorting
Where: Properties → Data → Measures → Revenue
Action:
- Click on the «Revenue» measure
- Scroll to «Sorting»
- Select «Descending»
Result: Table sorted by highest revenue first.
Step 5: Enable Totals
Where: Properties → Appearance → Presentation
Action:
- Scroll to «Totals»
- Enable «Show totals»
- Totals function: «Sum» (for revenue and orders)
Result: Bottom row shows grand totals.
Done! Your first working sales table is ready.
Essential Table Settings You Need to Know
Column Alignment
Where: Properties → Data → Columns → [Column name]
The rule:
Text = Left-aligned
Numbers = Right-aligned
Why?
- Numbers right-aligned = digits line up = easier to compare
- Text left-aligned = standard reading direction
Specific setup:
For text columns (Customer, Region):
Properties → Data → Dimensions → [CustomerName]
Text alignment: Left
For number columns (Revenue, Orders):
Properties → Data → Measures → [Sales]
Text alignment: Right
Number Formatting
Where: Properties → Data → Measures → [Measure name] → Number formatting
Standard formats for business:
Whole numbers (orders, counts):
Type: Number
Format pattern: #,##0
Example: 1,234
Currency (revenue, costs):
Type: Money
Format pattern: $#,##0
Example: $234,567
Currency with decimals:
Type: Money
Format pattern: $#,##0.00
Example: $234,567.89
Percentage (margin, growth):
Type: Number
Format pattern: 0.0%
Example: 12.5%
Percentage without decimals:
Type: Number
Format pattern: 0%
Example: 13%
Large numbers abbreviated (millions):
Type: Number
Format pattern: #,##0,,"M"
Example: 2.3M (for 2,345,678)
Large numbers abbreviated (thousands):
Type: Number
Format pattern: #,##0,"K"
Example: 234K (for 234,567)
Column Width
Where: Properties → Appearance → Presentation → Column widths
The options:
Auto (default):
Width: Auto
Behavior: Qlik distributes space evenly
Problem: Sometimes too narrow or too wide
Fit to content:
Width: Fit to content
Behavior: Column adjusts to content
Good for: Text columns with varying lengths
Custom (pixels):
Width: Custom
Pixels: 150
Good for: Fixed widths for uniform design
Recommended widths:
Customer name: 200px (text can be long)
Region: 100px (short categories)
Revenue: 120px (numbers with currency)
Orders: 100px (shorter numbers)
Percentages: 80px (compact values)
Pagination vs. Scrolling
Where: Properties → Appearance → Presentation → Pagination
The options:
Virtual scrolling (recommended):
Type: None (Virtual scrolling)
Behavior: Smooth scrolling through all data
Performance: Only loads visible rows
Good for: Analysis tables with many rows
Pagination (classic):
Type: Page by
Rows: 50
Behavior: "Previous/Next" buttons
Good for: Reports with fixed pages
When to use which:
Virtual scrolling when:
- Users should browse through data
- Modern, fluid UX desired
- Performance optimization needed
Pagination when:
- Classic reports (e.g., for printing)
- Fixed page structure needed
- Users expect «Page 1 of 10»
Totals Configuration
Where: Properties → Appearance → Presentation → Totals
Show totals: On/Off
Totals function:
Sum:
When: Revenue, costs, counts
Example: Total revenue across all customers
Average:
When: Percentages, ratings, averages
Example: Average margin
Count:
When: Number of rows
Example: Number of customers in the list
None:
When: Sum doesn't make sense
Example: Customer number, date columns
Specific setup:
For revenue column:
Properties → Data → Measures → Revenue
Totals function: Sum
For margin column (percentage):
Properties → Data → Measures → Margin
Totals function: Average
Conditional Formatting: Adding Color to Your Tables
Conditional formatting highlights important values. Don’t overdo it — only mark what matters most. For efficient conditional formatting expressions, see our guide on expression optimization for chart calculations. When your formatting uses set identifiers to compare against totals or specific periods, the set analysis for chart expressions tutorial covers the syntax in detail.
Color-Coding Revenue Performance
Goal: High revenue = Green, Low revenue = Red
Where: Properties → Data → Measures → Revenue
Action:
- Scroll to «Background color»
- Select «By expression»
- Enter the following expression:
If(Sum([Sales]) >= 100000,
RGB(200, 230, 201), // Light green for >100K
If(Sum([Sales]) >= 50000,
RGB(255, 249, 196), // Light yellow for 50-100K
RGB(255, 205, 210))) // Light red for <50K
Explanation:
If(Sum([Sales]) >= 100000, ...)checks if revenue exceeds 100,000RGB(200, 230, 201)is a light green- If not, it checks if above 50,000 (then yellow)
- Otherwise: red
Important: Use light colors!
- Dark colors: Text becomes unreadable
- Light pastel tones: Text stays readable
Marking Negative Values in Red
Goal: Positive profit = normal, negative = red
Expression:
If(Sum([Profit]) < 0,
RGB(255, 205, 210), // Light red for loss
RGB(255, 255, 255)) // White for profit
Highlighting the Top 10
Goal: Only color-code the best 10 customers
Expression:
If(Rank(Sum([Sales])) <= 10,
RGB(200, 230, 201), // Green for Top 10
RGB(255, 255, 255)) // White for all others
Explanation:
Rank(Sum([Sales]))returns the position in the ranking<= 10marks only the first 10
Standard Color Palette for Conditional Formatting
Positive/Good (Green tones):
Dark: RGB(76, 175, 80)
Medium: RGB(139, 195, 74)
Light: RGB(200, 230, 201) ← Recommended for tables
Neutral/Caution (Yellow tones):
Dark: RGB(255, 193, 7)
Medium: RGB(255, 235, 59)
Light: RGB(255, 249, 196) ← Recommended for tables
Negative/Critical (Red tones):
Dark: RGB(244, 67, 54)
Medium: RGB(239, 83, 80)
Light: RGB(255, 205, 210) ← Recommended for tables
Why light tones? Dark backgrounds require white text = additional complexity. Light backgrounds work with default black text.
Chart Exploration: Let Users Customize Their View
Chart Exploration is the killer feature of Straight Tables. Users can customize columns themselves — without edit permissions.
What Is Chart Exploration?
End users can:
- Add/remove columns
- Change column order
- Adjust sorting
- Save their view
Without needing to:
- Have edit permissions
- Change the original
- Affect other users
How to Enable Chart Exploration
Where: Properties → Data
Action:
- Scroll to «Exploration menu»
- Enable «Exploration menu»
- Done!
Result: Users see a «…» menu in the top right corner of the table.
What Users Can Do
Add columns:
Click ... → Add column
Select from available fields/measures
Column appears in their view
Remove columns:
Click on column header → Remove
Column disappears (only for this user)
Change sorting:
Click on column header
Select "Sort ascending" or "Sort descending"
Save view:
Click ... → Save
Enter name: "My Top Customer Analysis"
Can be loaded again later
When to Enable Chart Exploration
Enable it when:
- Users have different analysis needs
- Flexible exploration is desired
- Power users should create their own views
Disable it when:
- Fixed reporting (e.g., for management)
- Compliance reports with fixed structure
- Users could be confused by too many options
Practical Scenarios for Qlik Sense Tables
Scenario 1: Top Products Dashboard
Business question: Which products are our bestsellers?
Dimensions:
1. [ProductName] Label: Product
2. [Category] Label: Category
Measures:
// 1. Revenue
Sum([Sales])
Label: Revenue
Format: $#,##0
// 2. Units Sold
Sum([Quantity])
Label: Units
Format: #,##0
// 3. Average Price
Sum([Sales]) / Sum([Quantity])
Label: Avg Price
Format: $#,##0.00
// 4. Market Share
Sum([Sales]) / Sum(TOTAL [Sales])
Label: Market Share
Format: 0.0%
Sorting:
By revenue descending (highest first)
Conditional formatting:
Market share column:
>10% = Green (important products)
5-10% = Yellow (medium)
<5% = Red (small)
Scenario 2: Customer Analysis with Risk Assessment
Business question: Which customers need attention?
Dimensions:
1. [CustomerName] Label: Customer
2. [Segment] Label: Segment
Measures:
// 1. Annual Revenue
Sum([Sales])
Label: Revenue 2025
Format: $#,##0
// 2. Orders
Count([OrderID])
Label: Orders
Format: #,##0
// 3. Days Since Last Order
Today() - Max([OrderDate])
Label: Days Since Order
Format: #,##0
// 4. Risk Status
If(Today() - Max([OrderDate]) > 90, 'High',
If(Today() - Max([OrderDate]) > 60, 'Medium',
'Low'))
Label: Risk
Conditional formatting:
Risk column background color:
'High' = RGB(255, 205, 210) // Light red
'Medium' = RGB(255, 249, 196) // Light yellow
'Low' = RGB(200, 230, 201) // Light green
Expression:
If([Risk] = 'High', RGB(255, 205, 210),
If([Risk] = 'Medium', RGB(255, 249, 196),
RGB(200, 230, 201)))
Sorting:
By "Days Since Order" descending
(Customers with longest gap first)
Scenario 3: Budget vs. Actual Report
Business question: Where are we deviating from the budget?
Dimensions:
1. [Department] Label: Department
2. [CostCenter] Label: Cost Center
Measures:
// 1. Budget (Plan)
Sum([BudgetPlanned])
Label: Budget
Format: $#,##0
// 2. Actual
Sum([ActualSpend])
Label: Actual Spend
Format: $#,##0
// 3. Variance (Absolute)
Sum([ActualSpend]) - Sum([BudgetPlanned])
Label: Variance
Format: $#,##0
// 4. Variance (Percent)
(Sum([ActualSpend]) - Sum([BudgetPlanned])) / Sum([BudgetPlanned])
Label: Variance %
Format: 0.0%
Conditional formatting:
Variance columns (both):
// For absolute column:
If(Sum([ActualSpend]) - Sum([BudgetPlanned]) > 0,
RGB(255, 205, 210), // Red: Over budget
RGB(200, 230, 201)) // Green: Under budget
// For percentage column:
If((Sum([ActualSpend]) - Sum([BudgetPlanned])) / Sum([BudgetPlanned]) > 0.1,
RGB(255, 205, 210), // Red: >10% over
If((Sum([ActualSpend]) - Sum([BudgetPlanned])) / Sum([BudgetPlanned]) > 0,
RGB(255, 249, 196), // Yellow: Slight overrun
RGB(200, 230, 201))) // Green: Under budget
Totals:
All columns: Sum
Shows total budget and total variance
Performance Optimization for Qlik Sense Tables
When Does a Table Get Slow?
Symptom: Table takes >3 seconds to load
Common causes:
- More than 1,000 rows at once
- Complex expressions in every row
- Many conditional formatting rules
- No calculation condition
Enable Virtual Scrolling
Where: Properties → Appearance → Presentation → Pagination
Set:
Type: None (uses virtual scrolling)
What happens:
- Only visible rows are rendered
- New rows load as you scroll
- Performance improvement with >100 rows
Set a Calculation Condition
Where: Properties → Data → General
What it is: An expression that determines WHEN the table gets calculated.
Example 1: Only calculate with a filter
Count(DISTINCT [Region]) > 0
Meaning: Table only calculates when at least one region is selected.
Example 2: Limit maximum rows
Count(DISTINCT [Customer]) <= 500
Meaning: Table only calculates when max 500 customers are in the filter.
Example 3: Specific time periods
Count(DISTINCT [Year]) = 1
Meaning: Table only calculates when exactly ONE year is selected.
When to use:
- With very large datasets
- When the table makes no sense without a filter
- Performance-critical dashboards
Simplify Expressions
Slow: Complex calculation per row
If(Sum([Sales]) > Sum(TOTAL [Sales])/10
AND Sum([Sales]) < Sum(TOTAL [Sales])/2,
'Medium',
If(Sum([Sales]) >= Sum(TOTAL [Sales])/2,
'High',
'Low'))
Better: Pre-calculate in the load script
// In the load script:
LOAD *,
If(Sales > AverageSales * 0.1,
If(Sales >= AverageSales * 0.5, 'High', 'Medium'),
'Low') as SalesCategory
FROM DataSource;
// In the table:
[SalesCategory] // Simply use the field
Implement Pagination for Very Large Tables
When virtual scrolling isn’t enough:
Properties → Appearance → Presentation → Pagination
Type: Page by
Rows per page: 50
Shows: «Page 1 of 20» with Previous/Next buttons
Troubleshooting Common Table Problems
Why Do My Numbers Look Wrong?
Symptom: 2345678 instead of 2,345,678 or $2.35M
Cause: Number format not set
Solution:
Properties → Data → Measures → [Your column]
Number formatting → Custom
Format pattern: #,##0
For different formats see the Number Formatting section above.
Why Do Totals Show Wrong Values?
Symptom: Total row shows average instead of sum
Cause: Wrong totals function
Solution:
Properties → Data → Measures → [Your column]
Totals function: Sum (instead of Average)
Rule of thumb:
- Revenue, costs, counts: Sum
- Percentages, ratings: Average
- IDs, text: None
Why Isn’t Conditional Formatting Working?
Symptom: Colors don’t appear
Possible causes & solutions:
Cause 1: Wrong expression syntax
// Wrong:
Sum([Sales]) >= 100000 RGB(76, 175, 80)
// Correct:
If(Sum([Sales]) >= 100000,
RGB(76, 175, 80),
RGB(255, 255, 255))
Cause 2: Background instead of text color
Make sure you're setting "Background color", not "Text color"
Cause 3: Incorrect RGB values
// Wrong:
RGB(76, 175, 80, 0.5) // Too many parameters
// Correct:
RGB(76, 175, 80) // Only 3 values: Red, Green, Blue
Why Does the Table Show Too Many Rows?
Symptom: 10,000+ rows, completely overwhelming
Solution 1: Require a filter
Calculation Condition:
Count(DISTINCT [Region]) > 0
Message: "Please select at least one region"
Solution 2: Limit to Top N
In the dimension:
Properties → Data → Dimensions → [Customer]
Limitation: Fixed number: Top 100
By measure: Sum([Sales])
Shows only: The top 100 customers by revenue
How to Fix Columns That Are Too Narrow or Wide
Solution:
Properties → Appearance → Presentation → Column widths
Option 1: Auto (Qlik distributes evenly)
Option 2: Fit to content (adjusts to content)
Option 3: Custom - Set your own pixel width
Recommended widths:
Long text (Customer, Product): 200px
Short categories (Region): 100px
Currency: 120px
Counts: 100px
Percentages: 80px
Best Practices for Qlik Sense Tables
Go-Live Checklist
Column structure:
✓ Max 8 columns without horizontal scrolling
✓ Most important columns on the left
✓ Text left-aligned, numbers right-aligned
✓ Column headers are self-explanatory
Formatting:
✓ Number formats set (not "Auto")
✓ Thousands separator for large numbers
✓ Currency symbol present ($)
✓ Percentages with % symbol
Conditional formatting:
✓ Max 1-2 columns with colors (don't overdo it)
✓ Light pastel tones (text stays readable)
✓ Consistent color logic (Red = bad)
Sorting:
✓ Default sort by most important column
✓ Usually: Highest revenue first (DESC)
✓ For risk: Highest risk first
Performance:
✓ Calculation condition for large data
✓ Virtual scrolling enabled
✓ Loads in <3 seconds
Usability:
✓ Totals show meaningful values
✓ Export function enabled
✓ Search function available (for many rows)
✓ Chart Exploration enabled (if desired)
Quick Reference: Qlik Sense Tables
Basic Setup
1. Object: Visualization bundle → Straight table
2. Dimensions: Categories like Customer, Product, Region
3. Measures: Numeric values like Revenue, Count
4. Sorting: By most important measure DESC
5. Totals: Sum for sums, Average for percentages
Standard Formats
Currency: $#,##0
Whole numbers: #,##0
Percentage: 0.0%
Large numbers: #,##0,"K" (thousands)
Large numbers: #,##0,,"M" (millions)
Conditional Formatting Template
// Positive = Green, Negative = Red
If([Value] > 0,
RGB(200, 230, 201), // Light green
RGB(255, 205, 210)) // Light red
// 3-level (Good/Medium/Bad)
If([Value] >= [Target],
RGB(200, 230, 201), // Green
If([Value] >= [Target] * 0.8,
RGB(255, 249, 196), // Yellow
RGB(255, 205, 210))) // Red
Performance Settings
Virtual Scrolling: Properties → Presentation → Pagination: None
Calculation Condition: Properties → Data → General
Limitation: Properties → Data → Dimensions → Limitation
Top N: Fixed number: Top 100, By measure: Sum([Sales])
Common Expressions
// Sum
Sum([Sales])
// Count
Count([OrderID])
// Average
Avg([Rating])
// Percent of total
Sum([Sales]) / Sum(TOTAL [Sales])
// Growth vs. previous year
(Sum([Sales_Current]) - Sum([Sales_PreviousYear])) / Sum([Sales_PreviousYear])
// Days since last order
Today() - Max([OrderDate])
// Ranking
Rank(Sum([Sales]))
When to Use Table vs. Chart
Use tables for:
✓ Detail analysis after chart insights
✓ Exact numbers matter (not just trends)
✓ Search function needed
✓ Export to Excel desired
✓ Compliance reports with precise values
✓ Drill-down into individual transactions
When your table data reveals patterns that need visual exploration, scatter plots for pattern discovery help uncover hidden correlations between numeric columns.
Use bar charts for visual comparison:
✓ Trends over time (Line Chart)
✓ Category comparisons (Bar Chart)
✓ Performance at a glance (Gauge)
✓ Proportions (Pie Chart)
✓ Overview dashboards (KPI Objects)
The combination is key:
Dashboard layout recommendation:
- Top: KPIs (quick overview)
- Middle: Charts (trends & comparisons)
- Bottom: Table (details & drill-down)
Summary: Qlik Sense Tables for Structured Insights
Tables are your tool for detail analysis. They show the exact numbers behind the trends in your charts.
Key takeaways:
- Use Straight Table (not the classic table)
- Max 8 columns for clarity
- Text left, numbers right aligned
- Number formats always set correctly
- Conditional formatting used sparingly (1-2 columns)
- Sorting by most important measure
- Virtual scrolling for performance
- Chart Exploration for flexible users
Tables aren’t as glamorous as charts, but they’re indispensable for professional analysis dashboards.