📚 Qlik Sense Kurs – Artikel 27 von 28
← Vorheriger Artikel: Performance Tuning
→ Nächster Artikel: Data Governance
Was ist Deployment? Professionelles Ausrollen von Qlik-Apps über Environments (DEV/TEST/PROD) mit Version Control, Testing und rollback-fähigem Change Management!
Was kannst Du über Deployment & Version Control lernen?
Nach diesem Guide kannst Du:
- Multi-Environment-Setup (DEV/TEST/PROD) aufbauen
- Git für Qlik Scripts nutzen
- Deployment-Pipeline mit Testing implementieren
Zeitinvestment: 30 Min Lesen + 4 Std Hands-on
Quick Win: In 1 Stunde hast Du Git für Deine Scripts eingerichtet
Was ist das Prinzip von Controlled Change Management?
Das Problem: Script-Änderungen direkt in Production, keine Versionierung, kein Rollback möglich – Production-Outages!
Die Lösung: Structured Deployment Pipeline – DEV → TEST → PROD mit Version Control und automatisierten Tests!
Was sind die drei Environments in Deployment & Version Control?
| Environment | Zweck | Wer nutzt? |
|---|---|---|
| DEV | Entwicklung, Experimente, Breaking Changes OK | Entwickler |
| TEST | Integration Testing, UAT, Pre-Production | QA, Business User |
| PROD | Live System, stabil, nur getestete Changes | End Users |
Wie konfiguriert man umgebungsspezifische Einstellungen?
Wie wird die Datei Environment.qvs (NICHT in Git!) für Deployment & Version Control verwendet?
//============================================
// Environment.qvs
// Manually created on each server
// DO NOT commit to Git!
//============================================
SET vEnvironment = 'PROD'; // DEV, TEST oder PROD
Wie verwalte ich Deployment & Version Control für die Datei Config_DEV.qvs?
//============================================
// DEV Configuration
//============================================
TRACE >>> Loading DEV Configuration;
// Paths
SET vDataPath = 'C:QlikDevData';
SET vQVDPath = 'C:QlikDevQVD';
SET vLogPath = 'C:QlikDevLogs';
// Database
SET vDBServer = 'DEV-SQL-01';
SET vDBName = 'SalesDB_Dev';
SET vDBUser = 'qlik_dev_user';
// Settings
SET vDebugMode = 1;
SET vRowLimit = 10000; // Limit für schnellere DEV-Reloads
SET vLogLevel = 'DEBUG'; // Verbose logging
TRACE >>> DEV Configuration loaded;
Wie verwalte ich Deployment & Version Control für die Datei Config_TEST.qvs?
//============================================
// TEST Configuration
//============================================
TRACE >>> Loading TEST Configuration;
// Paths
SET vDataPath = 'test-nasQlikData';
SET vQVDPath = 'test-nasQlikQVD';
SET vLogPath = 'test-nasQlikLogs';
// Database
SET vDBServer = 'TEST-SQL-01';
SET vDBName = 'SalesDB_Test';
SET vDBUser = 'qlik_test_user';
// Settings
SET vDebugMode = 0;
SET vRowLimit = 0; // Full data in TEST
SET vLogLevel = 'INFO';
TRACE >>> TEST Configuration loaded;
Wie verwalte ich Deployment und Version Control für die Datei Config_PROD.qvs?
//============================================
// PROD Configuration
//============================================
TRACE >>> Loading PROD Configuration;
// Paths
SET vDataPath = 'prod-nasQlikData';
SET vQVDPath = 'prod-nasQlikQVD';
SET vLogPath = 'prod-nasQlikLogs';
// Database
SET vDBServer = 'PROD-SQL-CLUSTER';
SET vDBName = 'SalesDB';
SET vDBUser = 'qlik_prod_user';
// Settings
SET vDebugMode = 0;
SET vRowLimit = 0;
SET vLogLevel = 'WARNING'; // Nur Warnings und Errors
TRACE >>> PROD Configuration loaded;
Wie funktioniert der Main Script mit Environment Detection?
//============================================
// MAIN SCRIPT
//============================================
// Load environment (not in Git!)
$(Must_Include=lib://Scripts/Environment.qvs)
// Load environment-specific config
$(Must_Include=lib://Scripts/Config_$(vEnvironment).qvs)
TRACE ======================================;
TRACE Running in: $(vEnvironment);
TRACE Data Path: $(vDataPath);
TRACE DB Server: $(vDBServer);
TRACE ======================================;
// ... Rest of script uses config variables
Wichtig: Environment.qvs ist das EINZIGE File das nicht in Git kommt – wird manuell auf jedem Server erstellt!
Wie richte ich Git Version Control ein?
Wie ist die Repository-Struktur für Deployment & Version Control?
qlik-sales-analytics/
├── .git/
├── .gitignore
├── README.md
├── CHANGELOG.md
├── scripts/
│ ├── 01_Config_DEV.qvs
│ ├── 01_Config_TEST.qvs
│ ├── 01_Config_PROD.qvs
│ ├── 02_Functions.qvs
│ ├── 03_Subroutines.qvs
│ ├── 10_Load_Staging.qvs
│ ├── 20_Transform.qvs
│ └── 30_Model.qvs
├── docs/
│ ├── Architecture.md
│ └── DataDictionary.xlsx
└── tests/
└── validation_tests.qvs
Was ist eine .gitignore-Datei?
# Environment-specific (not in Git!)
Environment.qvs
**/Environment.qvs
# Credentials
**/credentials.txt
**/passwords.txt
# QVD Files (binary, zu groß)
*.qvd
# Logs
*.log
logs/
# Temp files
*.tmp
*.bak
~$*
# OS files
.DS_Store
Thumbs.db
Was ist die Branch-Strategie im Deployment & Version Control?
# Branch-Struktur
main # Production-ready code
├── dev # Integration branch
│ ├── feature/new-customer-dimension
│ ├── feature/sales-forecast
│ └── bugfix/null-handling
# Workflow:
# 1. Feature entwickeln
git checkout -b feature/new-dimension dev
# 2. Committen
git add scripts/20_Transform.qvs
git commit -m "feat: Add customer segmentation dimension"
# 3. Push
git push origin feature/new-dimension
# 4. Merge zu dev
git checkout dev
git merge feature/new-dimension
# 5. Testen in TEST environment
# 6. Deploy zu PROD
git checkout main
git merge dev
git tag v1.2.0
git push origin main --tags
Was ist die Commit-Message Convention?
# Format: :
# Types:
feat: # Neue Funktionalität
fix: # Bug Fix
refactor: # Code-Umstrukturierung
docs: # Dokumentations-Änderung
test: # Test-Ergänzungen
perf: # Performance-Verbesserung
# Beispiele:
git commit -m "feat: Add incremental loading for sales data"
git commit -m "fix: Correct date parsing for German locale"
git commit -m "perf: Optimize QVD loads with WHERE EXISTS"
git commit -m "docs: Update README with deployment instructions"
Wie erfolgt die Pre-Deployment Validation?
Was sind Validation Subroutines im Deployment & Version Control?
//============================================
// File: 99_Validation.qvs
//============================================
SUB ValidateDeployment
TRACE ======================================;
TRACE PRE-DEPLOYMENT VALIDATION;
TRACE ======================================;
// 1. Row Count Validation
CALL CheckMinRows('Facts_Sales', 1000);
CALL CheckMinRows('Dim_Customer', 100);
// 2. Data Quality Validation
LET vQualityScore = GetQualityScore('TRF_Sales');
IF $(vQualityScore) < 0.95 THEN
TRACE [ERROR] Quality score too low: $(vQualityScore);
EXIT SCRIPT;
END IF
// 3. Model Validation
CALL CheckSyntheticKeys();
CALL CheckCircularReferences();
// 4. Date Range Validation
LET vMaxDate = Date(Max(OrderDate), 'DD/MM/YYYY');
LET vToday = Date(Today(), 'DD/MM/YYYY');
IF $(vMaxDate) < $(vToday) - 7 THEN
TRACE [WARNING] Data is older than 7 days!;
END IF
TRACE ======================================;
TRACE VALIDATION PASSED;
TRACE ======================================;
END SUB
// Execute validation
CALL ValidateDeployment;
Wie überprüfe ich die Zeilenanzahl?
SUB CheckMinRows(pTable, pMinRows)
LET vActualRows = NoOfRows('$(pTable)');
TRACE [CHECK] $(pTable): $(vActualRows) rows (min: $(pMinRows));
IF $(vActualRows) < $(pMinRows) THEN
TRACE [ERROR] Table $(pTable) has too few rows!;
EXIT SCRIPT;
END IF
END SUB
Was ist die Deployment Checklist?
✓ Pre-Deployment (1-2 Tage vor Deployment):
- [ ] Code Review durchgeführt
- [ ] Alle Tests in DEV bestanden
- [ ] Merge zu dev-Branch
- [ ] Deployment in TEST-Environment
- [ ] UAT (User Acceptance Testing) erfolgreich
- [ ] Performance-Tests OK
- [ ] Dokumentation aktualisiert
- [ ] CHANGELOG.md aktualisiert
✓ Deployment Day:
- [ ] Backup von PROD-App erstellen
- [ ] Downtime kommunizieren (wenn nötig)
- [ ] Merge zu main-Branch
- [ ] Tag erstellen (v1.2.0)
- [ ] Scripts zu PROD kopieren
- [ ] Test-Reload in PROD durchführen
- [ ] Validation-Tests ausführen
- [ ] Smoke Tests (kritische Charts)
✓ Post-Deployment:
- [ ] Monitoring prüfen (keine Errors?)
- [ ] Performance-Metriken vergleichen
- [ ] User-Feedback sammeln (erste Stunden)
- [ ] Team informieren (Deployment erfolgreich)
Was ist eine Rollback-Strategie im Deployment & Version Control?
Wie mache ich ein Backup vor dem Deployment?
# 1. Backup erstellen
# QMC → Apps → Sales Analytics → More Actions → Export
# Speichern als: SalesAnalytics_v1.1.0_backup_20250107.qvf
# 2. Scripts sichern
cd /qlik/scripts/SalesAnalytics
cp -r . ../SalesAnalytics_backup_20250107/
# 3. Git Tag für Rollback
git tag v1.1.0-pre-deployment
Wie führe ich einen Rollback durch?
# Option 1: Git Revert
git revert
git push origin main
# Option 2: Git Reset (wenn noch nicht gepusht)
git reset --hard v1.1.0
git push origin main --force
# Option 3: Backup-App wiederherstellen
# QMC → Apps → Import → SalesAnalytics_backup.qvf
Wichtig: Rollback-Plan VORHER definieren und testen! Im Notfall keine Zeit für Troubleshooting.
Wie funktioniert Automated Testing im Deployment & Version Control?
Was ist eine Test Suite Datei?
//============================================
// File: tests/ValidationTests.qvs
//============================================
// Test 1: Data Completeness
SUB TestDataCompleteness
TRACE [TEST] Data Completeness;
LET vExpectedTables = 5;
LET vActualTables = NoOfTables();
IF $(vActualTables) <> $(vExpectedTables) THEN
TRACE [FAIL] Expected $(vExpectedTables) tables, got $(vActualTables);
LET vTestsFailed = $(vTestsFailed) + 1;
ELSE
TRACE [PASS] All tables loaded;
END IF
END SUB
// Test 2: Date Ranges
SUB TestDateRanges
TRACE [TEST] Date Ranges;
LET vMinDate = Num(Min(OrderDate));
LET vMaxDate = Num(Max(OrderDate));
LET vExpectedMin = Num(MakeDate(2020, 1, 1));
IF $(vMinDate) < $(vExpectedMin) THEN
TRACE [FAIL] Data too old: $(vMinDate);
LET vTestsFailed = $(vTestsFailed) + 1;
ELSE
TRACE [PASS] Date ranges valid;
END IF
END SUB
// Test 3: No Synthetic Keys
SUB TestNoSyntheticKeys
TRACE [TEST] No Synthetic Keys;
FOR i = 0 TO NoOfTables() - 1
LET vTableName = TableName($(i));
IF Left('$(vTableName)', 4) = '$Syn' THEN
TRACE [FAIL] Synthetic key found: $(vTableName);
LET vTestsFailed = $(vTestsFailed) + 1;
END IF
NEXT i
TRACE [PASS] No synthetic keys;
END SUB
// Execute all tests
LET vTestsFailed = 0;
CALL TestDataCompleteness;
CALL TestDateRanges;
CALL TestNoSyntheticKeys;
IF $(vTestsFailed) > 0 THEN
TRACE ======================================;
TRACE [ERROR] $(vTestsFailed) tests failed!;
TRACE ======================================;
EXIT SCRIPT;
ELSE
TRACE ======================================;
TRACE [SUCCESS] All tests passed!;
TRACE ======================================;
END IF
Welche Dokumentationsanforderungen gibt es für Deployment & Version Control?
Wie erstelle ich ein README.md Template für Deployment & Version Control?
# Sales Analytics Qlik App
## Overview
Sales analytics application with incremental loading and customer segmentation.
## Architecture
- **Staging Layer**: Raw extracts from source systems
- **Transform Layer**: Business logic and data quality
- **Model Layer**: Star schema with Facts_Sales + Dimensions
## Environments
- **DEV**: Development server (qlik-dev-01)
- **TEST**: Testing server (qlik-test-01)
- **PROD**: Production server (qlik-prod-cluster)
## Deployment
See [Deployment Guide](docs/Deployment.md)
## Configuration
Environment-specific configs in `scripts/Config_[ENV].qvs`
## Data Sources
- SQL Server: Sales transactions (daily)
- Excel: Product catalog (weekly)
- REST API: Customer data (hourly)
## Reload Schedule
- Staging: Every hour
- Transform + Model: Every 4 hours
## Contacts
- Owner: John Doe (john.doe@company.com)
- Team: BI Team
## Version
Current: v1.2.0
Was steht im CHANGELOG.md zu Deployment & Version Control?
# Changelog
## [1.2.0] - 2025-01-10
### Added
- Customer segmentation dimension (RFM analysis)
- Incremental loading for sales data
- Data quality dashboard
### Changed
- Optimized QVD loads (+50% faster)
- Updated customer hierarchy
### Fixed
- Date parsing for international formats
- NULL handling in product mapping
## [1.1.0] - 2024-12-15
### Added
- Initial version with basic star schema
Was sind die Best Practices für Deployment & Version Control?
✓ Version Control:
- [ ] Git für alle Scripts
- [ ] .gitignore konfiguriert
- [ ] Branch-Strategy definiert (main/dev/feature)
- [ ] Commit-Conventions festgelegt
✓ Environments:
- [ ] DEV/TEST/PROD getrennt
- [ ] Environment-spezifische Configs
- [ ] Environment.qvs auf jedem Server
✓ Deployment:
- [ ] Deployment-Checklist
- [ ] Pre-Deployment Validation
- [ ] Backup vor Deployment
- [ ] Rollback-Plan
- [ ] Post-Deployment Monitoring
✓ Documentation:
- [ ] README.md
- [ ] CHANGELOG.md
- [ ] Architecture Diagram
- [ ] Deployment Guide
Wie kann ich bei Deployment & Version Control Probleme beheben?
⚠️ Problem: Script funktioniert nicht nach Deployment in TEST
Ursache: Environment.qvs nicht erstellt oder falsche Config geladen
Lösung:
// 1. Prüfe: Environment.qvs existiert?
// lib://Scripts/Environment.qvs mit SET vEnvironment = 'TEST'
// 2. Prüfe: Welche Config wird geladen?
TRACE Environment: $(vEnvironment);
TRACE Data Path: $(vDataPath);
// 3. Prüfe: Config-File existiert?
// Config_TEST.qvs muss existieren
⚠️ Problem: Git Merge Conflicts in Scripts
Lösung: Conflicts manuell auflösen
# 1. Merge versuchen
git merge dev
# 2. Conflicts anschauen
git status
# Conflicts in: scripts/20_Transform.qvs
# 3. File öffnen, Conflicts suchen
# <<<<<<< HEAD
# ... dein Code
# =======
# ... anderer Code
# >>>>>>> dev
# 4. Manuell auflösen, Markers entfernen
# 5. Committen
git add scripts/20_Transform.qvs
git commit -m "fix: Resolve merge conflicts in transform layer"
⚠️ Problem: Rollback nach fehlgeschlagenem Deployment
Sofort-Maßnahmen:
- Backup-App aus QMC importieren
- Alte Scripts aus Backup-Ordner zurückkopieren
- Test-Reload durchführen
- Git auf alten Stand zurücksetzen
Post-Mortem:
- Was ist schief gelaufen?
- Warum haben Tests nicht gefangen?
- Wie verhindern wir das?
Was sind die nächsten Schritte für Deployment & Version Control?
Du kannst jetzt professionelles Deployment durchführen! Als nächstes:
1. Data Governance: Standards und Prozesse etablieren. Data Governance zeigt wie.
2. Monitoring: Post-Deployment Monitoring aufsetzen.
Welche verwandten Themen gibt es im Kurs zu Deployment & Version Control?
- Variables & Includes – Environment Configs
- Monitoring – Post-Deployment Tracking
- Data Governance – Standards etablieren
Slug: qlik-deployment
Keywords: Qlik Deployment, Qlik Version Control, Git for Qlik, DEV TEST PROD Qlik, Qlik Environment Management, Deployment Pipeline Qlik, Rollback Strategy Qlik, Qlik CI CD