VISUALIZATION & DASHBOARD DESIGN

Qlik Sense Tables & Straight Tables: From Raw Data to Structured Insights

Autor

Qlik Doktor

September 28, 2025 · 12 min read

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:

  1. Left sidebar → «Custom objects» → «Visualization bundle»
  2. Select «Straight table»
  3. 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:

  1. Under the expression → «Number formatting»
  2. Select «Money»
  3. Format pattern: $#,##0
  4. 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:

  1. Click on the «Revenue» measure
  2. Scroll to «Sorting»
  3. Select «Descending»

Result: Table sorted by highest revenue first.

Step 5: Enable Totals

Where: Properties → Appearance → Presentation

Action:

  1. Scroll to «Totals»
  2. Enable «Show totals»
  3. 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:

  1. Scroll to «Background color»
  2. Select «By expression»
  3. 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,000
  • RGB(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
  • <= 10 marks 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:

  1. Scroll to «Exploration menu»
  2. Enable «Exploration menu»
  3. 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:

  1. Use Straight Table (not the classic table)
  2. Max 8 columns for clarity
  3. Text left, numbers right aligned
  4. Number formats always set correctly
  5. Conditional formatting used sparingly (1-2 columns)
  6. Sorting by most important measure
  7. Virtual scrolling for performance
  8. Chart Exploration for flexible users

Tables aren’t as glamorous as charts, but they’re indispensable for professional analysis dashboards.