27 script commands
Intermediate Keys

AutoNumber

Speicheroptimierte Integer-Schlüssel.

CompositeKey:
LOAD 
    AutoNumber(FieldA & '|' & FieldB) as Key,
    FieldA,
    FieldB
FROM SourceTable;
Details →
Beginner Syntax

Basic LOAD Statement

Basic structure of a LOAD statement with aliases and calculated fields.

TableName:
LOAD Field1 as Alias1, Field2, Field1 * 1.1 as CalculatedField
FROM [lib://DataSource/Data.csv]
(txt, utf8, e...
Details →
Advanced CrossTable

CrossTable

Entpivotisiert breite Tabellen.

CrossTable(Month, Sales, 1)
LOAD * FROM BudgetGrid.csv;
Details →
Advanced Generic Load

Generic Load

Transponiert EAV-Daten.

GENERIC LOAD ID, Attr, Val FROM Data.csv;
Details →
Intermediate Aggregation

GROUP BY

Aggregiert Daten beim Laden.

SalesSummary:
LOAD 
    Region,
    Sum(Amount) as TotalAmount
FROM SalesData.qvd
GROUP BY Region;
Details →
Advanced Hierarchy

Hierarchy

Löst Parent-Child Beziehungen auf.

Hierarchy(NodeID, ParentID, Name, ...)
LOAD * FROM Nodes.csv;
Details →
Beginner Inline

Inline Load

Manuelle Dateneingabe im Skript.

StatusMapping:
LOAD * INLINE [
    StatusCode, StatusDescription
    1, Active
    2, Pending
    3, Inactive
    4, Clo...
Details →
Advanced IntervalMatch

IntervalMatch

Verknüpft Werte mit Zeiträumen.

IntervalMatch(EventDate)
LOAD Start, End FROM Periods.csv;
Details →
Advanced Joins

JOIN vs ApplyMap

Vermeidung von Joins für einfache Lookups.

// Besser: ApplyMap verwenden
Map: MAPPING LOAD ID, Val FROM Dim.qvd;
Details →
Intermediate Schema

Link Table

Verbindet mehrere Fakten via Link Table.

LinkTable:
LOAD DISTINCT CustomerID, ProductID FROM Sales.qvd;
CONCATENATE (LinkTable)
LOAD DISTINCT CustomerID, Product...
Details →
Beginner Syntax

LOAD DISTINCT

Lädt nur eindeutige Zeilenkombinationen.

UniqueCustomers:
LOAD DISTINCT
    CustomerID,
    Region
FROM [lib://Source/Orders.qvd] (qvd);
Details →
Beginner Files

Load from CSV / Text File

Loading from a text file with format options.

TableName:
LOAD Field1, Field2
FROM [lib://Path/File.csv]
(txt, codepage is 1252, embedded labels, delimiter is ';', msq...
Details →
Intermediate Database

Load from Database (SQL)

Loading via SQL SELECT from a database connection.

LIB CONNECT TO 'ConnectionName';

TableName:
SQL SELECT Field1, Field2
FROM Schema.TableName
WHERE Condition;
Details →
Beginner Files

Load from Excel

Loading from an Excel file.

TableName:
LOAD Field1, Field2
FROM [lib://Path/File.xlsx]
(ooxml, embedded labels, table is [Sheet1$]);
Details →
Beginner QVD

Load from QVD

Efficient loading from a QVD file.

TableName:
LOAD *
FROM [lib://Path/File.qvd] (qvd);
Details →
Beginner Filtering

LOAD with WHERE Clause

Loads only rows that match a condition.

TableName:
LOAD *
FROM [lib://Source/File.qvd] (qvd)
WHERE Condition;
Details →
Intermediate Lookups

Mapping Load / ApplyMap

Effiziente 1:1 Lookups.

CountryMap:
MAPPING LOAD CountryCode, CountryName FROM Countries.csv;

Customers:
LOAD
    CustomerID,
    Name,
    Cou...
Details →
Advanced Calendar

Master Calendar

Generiert ein Datum-Schema.

MasterCalendar:
LOAD 
    Date($(vMin) + IterNo() - 1) as Date
AUTOGENERATE 1 
WHILE $(vMin) + IterNo() - 1 <= $(vMax...
Details →
Intermediate QVD

Non-Optimized QVD Load

Any transformation (function, calculation, rename) on a QVD field breaks the optimized read path and is significantly slower.

// Breaks optimization — avoid for large QVDs
TableName:
LOAD SomeFunction(Field1) as Field1
FROM Data.qvd (qvd);
Details →
Intermediate QVD

Optimized QVD Load

Super-fast QVD load with no transformations — preserves the optimized read path.

TableName:
LOAD Field1, Field2
FROM [lib://Path/File.qvd] (qvd);
Details →
Intermediate Keys

QUALIFY

Automatische Feld-Umbenennung.

QUALIFY *;
UNQUALIFY CustomerID;

Customers:
LOAD CustomerID, Name FROM Customers.csv;
Details →
Intermediate Basic

RESIDENT Load

Lädt aus bereits geladener Tabelle.

RawData:
LOAD A, B FROM Source.csv;

TransformedData:
LOAD 
    A,
    B * 2 as CalculatedB
RESIDENT RawData;

DROP TABL...
Details →
Beginner Syntax

Script Comments

Single-line and multi-line comments in load scripts.

// Single-line comment
/* Multi-line
   comment */
Details →
Intermediate Schema

Star Schema

Fakten- und Dimensionstabellen.

FactSales:
LOAD OrderID, CustomerID, ProductID, DateID, Amount FROM Sales.qvd;

DimCustomer:
LOAD CustomerID, CustomerNa...
Details →
Intermediate Keys

Synthetic Key Avoidance

Umbenennen von Feldern zur Vermeidung von SynKeys.

Orders:
LOAD OrderID, Date FROM Orders.csv;

Shipments:
LOAD OrderID, Date as ShipDate FROM Shipments.csv;
Details →
Advanced QVD

WHERE EXISTS

Optimierte Filterung.

Keys: LOAD DISTINCT ID FROM Source.csv;

Data:
LOAD *
FROM Large.qvd (qvd)
WHERE EXISTS(ID);
Details →

How to Use This Reference

Each card shows the command name, a syntax snippet, and a difficulty badge. Click Details to see the full syntax, a working code example, and links to related commands.

Difficulty Levels

  • Beginner: Core commands used in every script (LOAD, SET, LET, DROP).
  • Intermediate: Transformations requiring data modeling knowledge (JOINS, KEEPS, ApplyMap, CROSSTABLE).
  • Advanced: ETL patterns, optimization techniques, and edge cases (incremental loading, QVD optimization, GENERIC LOAD).

Related Resources

Frequently Asked Questions

Where do I write load scripts in Qlik Sense?

Open the Data Load Editor from the navigation menu in your Qlik Sense app. Scripts are organized in tabs. Press Ctrl+K, Ctrl+S to save, and click Load data to execute.

What is the difference between LOAD and SQL SELECT?

LOAD reads from files (CSV, Excel, QVD) and supports Qlik-specific transformations (CROSSTABLE, WHERE clauses with Qlik functions). SQL SELECT sends a query to a database via ODBC/OLEDB and returns the result set. You can combine both: a LOAD statement preceding a SQL SELECT lets you transform database results with Qlik functions.

How do I debug a load script error?

Check the script execution progress window for the exact line number. Use TRACE statements to print variable values during execution. For data issues, add a WHERE RowNo() <= 100 clause to test with a small sample before running the full load.