Parquet Profiler
Eine browserbasierte Anwendung zur strukturellen und statistischen Analyse von
Parquet-Dateien. Die Verarbeitung erfolgt vollständig lokal im Browser
über DuckDB-WASM — es findet keine Datenübertragung an einen Server statt.
Dateien werden standardmäßig referenziert statt komplett geladen:
DuckDB liest nur die tatsächlich benötigten Bytebereiche, sodass auch mehrere große
Dateien speicherschonend bleiben.
Workflow
- Eine oder mehrere Parquet-Dateien per Drag & Drop oder Dateiauswahl laden.
Bei mehreren Dateien wird die markierte Datei profiliert; ein Klick wechselt die aktive Datei.
-
Die Datei-Metadaten (Zeilen, Spalten, Row Groups, Kompression,
Erzeuger) werden sofort aus dem Parquet-Footer ermittelt und angezeigt —
ohne dass die eigentlichen Daten gescannt werden müssen.
-
Drei Tabs bieten unterschiedliche Sichten auf den Datensatz:
Attribute (Profiling der einzelnen Spalten),
Daten-Vorschau (zeilenweise Anzeige mit Filter & Paginierung),
Pivot (Excel-Style Auswertung) und SQL
(freier SQL-Editor mit DuckDB-Backend).
Klick auf einen Tab wechselt instant die Ansicht, der State bleibt erhalten.
Attribute
Die Statistiken pro Attribut beziehen sich immer auf den gesamten Datensatz
— unabhängig von Filtern, die in der Daten-Vorschau gesetzt sind. So bleibt die
Attribut-Übersicht als Profiling-Werkzeug stabil und vergleichbar.
In der Zeile jedes Attributs werden bereits ohne Aufklappen einige Werte
direkt aus dem Parquet-Footer angezeigt — Null-Anteil, Wertebereich
(Min/Max), Anzahl eindeutiger Werte und Speichergröße auf der Platte inkl.
Kompressionsrate. Die meisten dieser Werte sind exakt und kosten keinen
Datenscan; sie sind auch bei mehreren GB großen Dateien in Millisekunden verfügbar.
Falls der Writer keine Statistiken in den Footer geschrieben hat, bleiben die Felder
leer (—).
Die Spalte Eindeutig zeigt die Anzahl verschiedener Werte pro Attribut.
Diese Information steht im Parquet-Footer in der Regel nicht zur Verfügung, daher
wird sie nach dem Laden im Hintergrund über eine einzelne Sammelquery berechnet
(ein gemeinsamer Scan über alle Attribute). Bis die Berechnung abgeschlossen ist,
zeigt die Zelle pulsende Punkte (…).
Die Attribut-Tabelle ist sortierbar (Klick auf den Spaltenkopf, tri-state:
asc → desc → aus) und filterbar via Filter-Icon im Spaltenkopf
(Excel-Style: Werteliste, Bereichs-Filter oder Volltext-Suche, je nach Datenart).
Filter wirken nur auf die Attribut-Tabelle und beeinflussen die Statistiken nicht.
-
Numerisch (
INTEGER, DOUBLE,
DECIMAL …): Min, Max, Mittelwert, Standardabweichung, Median,
Quartile, Histogramm mit ca. 30 Bins.
-
String (
VARCHAR): Anzahl eindeutiger Werte,
Min-/Max-Länge, durchschnittliche Länge, Top-20-Werte als sortierte Liste
(Rang, Wert, relativer Balken, Anzahl, Anteil an Non-NULL).
-
Datum/Zeit (
DATE, TIMESTAMP):
Zeitspanne, Verteilung als Zeitreihen-Histogramm (automatische Granularität:
Stunde/Tag/Monat/Jahr).
-
Boolean: Verteilung über
TRUE / FALSE /
NULL als Doughnut-Chart.
- Für alle Typen: Anzahl Zeilen, Non-Null-Werte und Null-Anteil.
Daten-Vorschau, Filter & Paginierung
Über das Filter-Icon im Spaltenkopf der Vorschau-Tabelle lassen sich
Excel-Style-Filter setzen. Numerische und Datums-Spalten bieten
einen Bereichs-Filter (Min/Max), kategorische Spalten (String,
Boolean) eine durchsuchbare Werteliste mit Checkboxen. Filter sind
kombinierbar (UND-Verknüpfung); aktive Filter erscheinen als Chips oberhalb der
Tabelle und sind einzeln entfernbar.
Die Tabelle wird seitenweise geladen (25, 50, 100 oder 500 Zeilen pro Seite) —
auch bei großen Dateien bleibt das Blättern flüssig, da pro Seite nur ein
LIMIT … OFFSET ausgeführt wird.
Pivot
Excel-Style Pivot-Auswertung. Drei Zonen analog zu Excel:
Zeilen (Gruppierungs-Dimensionen, mehrere möglich),
Spalten (eine Spalten-Dimension, optional, spreizt das Ergebnis in
die Breite) und Werte (eine oder mehrere Aggregationen, z.B.
Anzahl, Summe, Mittelwert, Min, Max,
Anzahl Eindeutig).
Die Aggregation läuft als GROUP BY-Query in DuckDB; bei gesetzter
Spalten-Dimension wird das Ergebnis in JavaScript in die 2D-Matrix-Form gebracht.
Damit lassen sich die Spaltenwerte auf die Top 100
begrenzen, ohne dass eine hohe Kardinalität die Tabelle unbedienbar macht. Bei
Überschreitung wird eine Warnung mit Anzahl der ausgeblendeten Werte angezeigt.
Die Ergebnis-Tabelle ist sortierbar — Klick auf eine Spaltenüberschrift schaltet
durch aufsteigend → absteigend → Original-Reihenfolge.
SQL
Freier SQL-Editor mit der vollen Power von DuckDB. Jede geladene Datei ist als
eigener View verfügbar (Name aus dem Dateinamen abgeleitet); data
verweist immer auf die aktuell aktive Datei. So sind auch Joins über mehrere
Dateien hinweg möglich. Beispiele:
SELECT * FROM data LIMIT 100
DESCRIBE data — Schema der aktiven Datei
SUMMARIZE data — Statistik-Übersicht aller Spalten in einer Query
SELECT a.*, b.* FROM datei_a a JOIN datei_b b ON a.id = b.id — Join über zwei Dateien
PIVOT data ON col USING COUNT(*) GROUP BY row — native DuckDB-Pivot-Syntax
Tastenkürzel: Strg/⌘+Enter führt die Query aus,
Tab fügt zwei Leerzeichen ein. Das Dropdown Beispiel lädt
vorgefertigte Snippets in den Editor.
Die Anzeige ist auf 10.000 Zeilen begrenzt — die Query selbst
läuft komplett, aber das Rendering der Tabelle würde sonst den Browser blockieren.
Bei mehr Treffern erscheint eine Warnung mit der vollen Anzahl. Für ein gefiltertes
Voll-Ergebnis bitte die Query selbst mit LIMIT oder WHERE
einschränken.
Performance-Hinweise
-
Datei-Metadaten kommen aus dem Parquet-Footer und sind in Millisekunden verfügbar
— auch bei Multi-GB-Dateien.
-
Spaltenstatistiken erfordern einen tatsächlichen Scan und können bei großen
Dateien einige Sekunden dauern. Sie werden gecacht und müssen nur einmal pro
Spalte und Datei berechnet werden.
-
Filter wirken nur auf die Daten-Vorschau und werden direkt als
WHERE-Klausel in der SQL-Abfrage umgesetzt. Spaltenstatistiken werden
durch Filter nicht ungültig.
-
Die gesamte Datei wird in den Browser-Speicher geladen. Für Dateien über 2–4
GB empfehlen sich Desktop-Browser mit ausreichend RAM.
Technologie
- DuckDB-WASM
@1.32.0 — In-Browser-SQL-Engine mit nativer Parquet-Unterstützung.
- Chart.js
@4.4.1 — Visualisierungen.
-
Beide Bibliotheken werden via CDN geladen — bei der ersten Nutzung wird daher
eine Internetverbindung benötigt. Anschließend cached der Browser die Bundles.