Montag, 29. Dezember 2025

Power Query: Leistungsprobleme lösen – Ladezeiten optimieren und Fehler vermeiden

Power Query wird langsam? Deine Abfrage braucht 10 Minuten zum laden? Das ist lösbar!

Das klassische Problem: Performance-Probleme entstehen meist durch:

  • Zu viele Transformationen (20+ Steps!)
  • Filter zu spät (erst am Ende statt am Anfang!)
  • Große Datenmengen ohne Optimierung
  • Fehlerhafte Quellverbindungen (Network Timeouts!)
  • Ungünstige M-Code Patterns

Die Lösung: Performance-Audit durchführen → Bottlenecks finden → Optimieren!

In diesem Tutorial lernst du: Wie du Power Query Performance-Probleme diagnosierst & optimierst für Blitzgeschwindigkeit!


1. Performance Probleme erkennen – Die Symptome

Symptom Ursache Lösung
Sehr lange Ladezeit (>1min) Zu viele Zeilen/Spalten? Teure Operationen? Filter früh, Spalten entfernen, Transformationen vereinfachen
Fehler nach einigen Minuten Timeout! Server antwortet nicht Größere Query Timeout setzen oder Split in mehrere Queries
RAM ausgelastet (Excel friert ein) Zu viele Daten im Memory Weniger Spalten, Split groß Queries, Load to Power Pivot
Fehler: "Not Enough Memory" Zu viele Zwischenresultate Berechnet Columns reducen, Load to Data Model, Smaller chunks
Inkonsistente Fehler (manchmal OK, manchmal Fehler) Netzwerk instabil oder Server belastet Query Timeout erhöhen, Server-Load prüfen, Connection testen
Die Wahrheit: 80% der Performance-Probleme = Filter oder Transformationen an falscher Position!

2. Die Top 5 Performance-Killer

1. Filter zu spät (am Ende statt am Anfang!)

❌ FALSCH (Langsam!):
let Source = Csv.Document("riesige_datei.csv"), ← 10 Millionen Zeilen! AddedCols = Table.AddColumn(Source, "Calc", each ...), ← Mit 10M! SplitCols = Table.SplitColumn(AddedCols, ...), ← Noch 10M! PivotData = Table.Pivot(SplitCols, ...), ← JETZT 10M pivotieren! FilteredData = Table.SelectRows(PivotData, each [Region]="Nord") ← Erst hier filtern! in FilteredData

🟢 RICHTIG (Schnell!):
let Source = Csv.Document("riesige_datei.csv"), FilteredData = Table.SelectRows(Source, each [Region]="Nord"), ← SOFORT filtern! AddedCols = Table.AddColumn(FilteredData, "Calc", each ...), ← Mit nur 100K SplitCols = Table.SplitColumn(AddedCols, ...), PivotData = Table.Pivot(SplitCols, ...) in PivotData

2. Zu viele Spalten laden (du brauchst nicht alle!)

Best Practice: Nur Spalten laden die du brauchst!
NICHT: Alle 50 Spalten aus DB SONDERN: Table.SelectColumns(Source, {"ID", "Name", "Umsatz", "Datum"}) ← Nur 4!

3. Komplexe Transformationen (Pivot, Unpivot, etc.) auf großen Daten

Pivot mit 10 Millionen Zeilen = Horror!
Lösung: Erst filtern/aggregieren → Dann Pivot auf kleineren Daten!

4. Fehlerhafte Data Type Änderungen

Problem: Table.TransformColumnTypes auf großer Tabelle = langsam!
Bessere Lösung: M-Code Manual Type Change für kritische Spalten nur!
NICHT: Table.TransformColumnTypes(Source, {{"A", type text}, {"B", type number}, ...}) SONDERN: Nur kritische Spalten in Applied Steps!

5. Keine Query Folding (Die M-Code wird nicht auf Source übertragen!)

Query Folding = Magic! Wenn Power Query die Transformationen zur Datenquelle "pusht"
→ Server macht die Arbeit (schnell!) statt Excel (langsam!)
Problem: Viele M-Code Funktionen brechen Query Folding ab!

3. Query Folding verstehen – Die Game-Changer

Query Folding = Power Query sendet Filter/Transformationen zur Datenquelle statt lokal zu verarbeiten!

Wie erkennst du Query Folding?

In Power Query Editor:
  1. Step auswählen in Applied Steps
  2. Rechtsklick → "View Native Query" (wenn verfügbar!)
  3. Wenn native Query angezeigt wird → Query Folding aktiv! ✅
  4. Wenn "View Native Query" grayed out → Query Folding broken! ❌

Query Folding breakers (vermeiden!):

❌ Text.Combine() – Broken! ❌ Table.AddColumn() mit komplexer Formel – Broken! ❌ List.Transform() – Broken! ❌ Custom Functions – Often broken! ✅ Table.SelectRows() (Filter) – Wird "gefolded"! ✅ Table.SelectColumns() (Spalten) – Wird "gefoldet"! ✅ Table.Sort() – Wird "gefolded"!

4. Fallstudie 1: 10M Zeilen Verkaufsdaten – Vor & Nach Optimierung

Szenario: Datenbank mit 10 Millionen Verkaufszeilen

VORHER (Langsam – 5 Minuten!):
Step Problem Zeilen
1. Source (DB Query) Alle 10M Zeilen mit 30 Spalten 10M ❌
2. Add custom Column Komplexe Berechnung auf 10M 10M 🐌
3. Pivot Region Pivot 10M Zeilen! 10M 🔥
4. Filter Region ZU SPÄT! 9.9M

NACHHER (Optimiert – 10 Sekunden!):
Step Optimierung Zeilen
1. Source (DB Query mit Filter!) Nur Region="Nord" + nötige Spalten 100K ✅
2. Select Columns Nur 5 Spalten brauchen 100K ✅
3. Add Custom Column Jetzt nur auf 100K! 100K ✅
4. Pivot Region Viel kleinere Daten 100K ✅

Resultat: 5 Minuten → 10 Sekunden! 🚀 (99% schneller!)

5. Best Practices für Performance-Optimierung

Tipp 1: Filter immer am Anfang!

Regel: Wenn du in Datenquelle filtern kannst (SQL WHERE, etc.) → TU ES!
Dann nur noch kleine Daten transformieren!

Tipp 2: Spalten früh selektieren!

Nach dem Filter: Table.SelectColumns() → Nur nötige Spalten!
10M Zeilen × 30 Spalten vs. 10M Zeilen × 5 Spalten = großer Unterschied!

Tipp 3: Query Folding aktivieren!

Komplexe M-Code Funktionen vermeiden → Query Folding bleibt aktiv!
View Native Query prüfen ob Folding noch funktioniert!

Tipp 4: Aggregation VOR großen Transformationen!

Statt 10M Zeilen zu pivotieren → Erst aggregieren (GROUP BY) → Dann Pivot auf 1000 Zeilen!

Tipp 5: Query Timeout erhöhen (für große Daten)!

Power Query Options → Data Load → Query Timeout (Default 10 Minuten)
Für sehr große Operationen → 30 Minuten oder mehr!

6. Debugging Performance – Schritt-für-Schritt

Die Checkliste:

Schritt 1: Applied Steps durchgehen
  • Klick auf jeden Step → Zeilen zählen in Vorschau
  • Wo "explodiert" die Zeilenzahl?
  • Wo wird's langsam?

Schritt 2: Query Folding prüfen
  • View Native Query verfügbar?
  • Wo bricht Folding ab?

Schritt 3: M-Code Analysis
  • Advanced Editor öffnen
  • Query Folding breaker identifizieren
  • Vereinfachen oder anders schreiben

Schritt 4: Restrukturieren
  • Filter am Anfang?
  • Spalten selektieren?
  • Aggregation VOR Pivot/Unpivot?

7. Häufige Performance-Fehler & Lösungen

❓ F: Query lädt stunden! Was tun?
A: Emergency Fixes:
  • Escape drücken um Query zu canceln
  • Last Step removeen (Applied Steps panel)
  • Query Timeout erhöhen (Options)
  • Aber: Applied Steps analysieren um echtes Problem zu finden!
❓ F: "Not Enough Memory" Fehler!
A: Die Lösung:
  • Schnell: Excel neustarten → Memory freigeben
  • Mittelfristig: Weniger Spalten laden, Kleinere Datenmengen
  • Langfristig: Load to Power Pivot statt Worksheet → Komprimierung!
❓ F: Manchmal schnell, manchmal langsam (inkonsistent!)
A: Wahrscheinlich Netzwerk/Server:
  • Server ist belastet? → Zu Spitzenzeiten langsamer
  • Netzwerk-Lag? → Test mit kleinerer Query
  • Connection ist intermittent? → IT-Team kontaktieren!
❓ F: Kann ich Performance messen (nicht raten)?
A: JA! Tools:
  • Power Query profiler: Performance analyzer in Advanced Editor
  • DAX Studio: Kostenlose Tool für Timing
  • SQL Profiler: Wenn DB-Quelle, was wird auf Server ausgeführt?

8. Deine nächsten Schritte

  1. Applied Steps durchgehen: Welcher Step dauert lange?
  2. Query Folding prüfen: "View Native Query" aktiviert?
  3. Top 5 Killer identifizieren: Welche trifft zu?
  4. Restrukturieren: Filter am Anfang? Spalten selekt?
  5. Testen: Ist es schneller?
  6. Query Timeout erhöhen: Wenn nötig
  7. Load to Power Pivot: Für große Datenmodelle

Checkliste für Power Query Performance

  • Ich kenne die Performance-Symptome
  • Ich verstehe die Top 5 Performance-Killer
  • Ich weiß was Query Folding ist
  • Ich kann Query Folding prüfen ("View Native Query")
  • Ich weiß welche M-Code Funktionen Folding brechen
  • Ich platziere Filter am Anfang (nicht am Ende!)
  • Ich selektiere Spalten früh
  • Ich aggregiere VOR Pivot/Unpivot
  • Ich kann Performance-Probleme diagnostizieren
  • Ich optimiere Power Query für Production Use

Mit Performance-Optimierungen wird Power Query zur Turbine! 🚀⚡

Keine Kommentare:

Kommentar veröffentlichen

Power Query Praxisreihe – Von Datenimport bis zu komplexen Transformationen

Power Query: Daten laden, bereinigen, transformieren – alles automatisiert! Das Problem: Datenchaos ohne Power Qu...