Was macht Datenexploration mit Dasel v3?
<when_to_use>
Aktiviere diese Fähigkeit bei:
- Erkundung unbekannter strukturierter Datendateien (Konfigurationen, API-Antworten, Datensets)
- Entdeckung des Schemas oder der Struktur eines Dokuments vor der Bearbeitung
- Untersuchung verschachtelter Konfigurationsstrukturen (Kubernetes-Manifeste, CI-Pipelines, Paketdateien)
- Stichprobenartiges Untersuchen großer Arrays oder tief verschachtelter Objekte zum Verständnis des Inhalts
- Identifizierung von Datentypen vor der Transformation oder Extraktion
</when_to_use>
Unterstützte Formate
Dasel erkennt das Format automatisch anhand der Dateierweiterung. Überschreiben mit -i <format>, wenn von stdin gelesen wird oder die Erweiterung mehrdeutig ist.
Formatkennungen: json, yaml, toml, xml, csv, hcl, ini
Universeller Erkundungsablauf
Befolge diese Reihenfolge beim Erkennen einer unbekannten strukturierten Datendatei. Jeder Schritt schränkt den Umfang ein.
Schritt 1 — Formaterkennung
Dasel leitet das Format aus der Dateierweiterung ab. Für stdin oder nicht standardmäßige Erweiterungen explizit angeben:
cat mystery_file | dasel -i json 'keys($this)'
Schritt 2 — Oberste Schlüssel
cat config.yaml | dasel -i yaml 'keys($this)'
Ausgabe: Array mit Namen der obersten Schlüssel. Dies ist immer der erste Erkundungsbefehl.
Schritt 3 — Strukturvorschau
Bei kleinen Dateien (Konfigurationen, Manifeste) das gesamte Dokument ausgeben:
cat config.yaml | dasel -i yaml
Bei großen Dateien zu Schritt 4 springen.
Schritt 4 — Verschachtelte Schlüssel erkennen
Ebene für Ebene navigieren:
cat config.yaml | dasel -i yaml 'server'
cat config.yaml | dasel -i yaml 'keys(server)'
cat config.yaml | dasel -i yaml 'keys(server.logging)'
Rekursive Schlüsselerkennung über alle Tiefen:
cat config.yaml | dasel -i yaml '..keys($this)'
Schritt 5 — Arrays mustern
Vorschau der ersten Elemente, ohne das gesamte Array zu laden:
cat data.json | dasel -i json 'items[0:3]'
Einzelelement untersuchen:
cat data.json | dasel -i json 'items[0]'
Schritt 6 — Typüberprüfung
Typ eines beliebigen Knotens bestimmen:
cat data.json | dasel -i json 'typeOf(settings)'
cat data.json | dasel -i json 'typeOf(items[0].count)'
Rückgabewerte: "string", "array", "bool", "null", "int", "float"
Schritt 7 — Wertextraktion
Sobald der Pfad bekannt ist, bestimmte Werte extrahieren:
cat config.yaml | dasel -i yaml 'database.connection.host'
cat data.json | dasel -i json 'users[0].email'
Erkundungsmuster
Breitensuche-Erkundung
An der Wurzel beginnen, Schlüssel auf jeder Ebene aufzählen, bevor tiefer gegangen wird:
cat file.json | dasel -i json 'keys($this)' # Ebene 0
cat file.json | dasel -i json 'keys(metadata)' # Ebene 1
cat file.json | dasel -i json 'keys(metadata.labels)' # Ebene 2
Suchbasierte Erkundung (große Dateien)
Wenn die Datei für manuelle Traversierung zu groß ist, search() mit Prädikaten verwenden:
# Alle Objekte finden, die einen bestimmten Schlüssel enthalten
cat data.json | dasel -i json 'search(has("email"))'
# Alle Objekte finden, die sowohl "id" als auch "name" Schlüssel enthalten
cat data.json | dasel -i json 'search(has("id") && has("name"))'
# Knoten finden, bei denen ein Wert übereinstimmt
cat data.json | dasel -i json 'search($this == 42)'
Elemente zählen
cat data.json | dasel -i json 'len(items)'
cat data.json | dasel -i json 'len(keys($this))'
Eindeutige Werte entdecken
Ein Feld aus allen Array-Elementen extrahieren, dann in der Shell deduplizieren:
cat data.json | dasel -i json 'items.map(category)' | dasel -i json '$this...' | sort -u
Rekursiver Abstieg
Alle Werte für einen Schlüsselnamen in beliebiger Tiefe finden:
cat data.json | dasel -i json '..name'
Erstes Element jedes verschachtelten Arrays abrufen:
cat data.json | dasel -i json '..[0]'
Formatspezifische Rezepte
Detaillierte formatbezogene Erkundungsbefehle findest du unter Formatspezifische Rezepte.
Referenzen
- Dasel v3 Dokumentation (abgerufen am 19.02.2026)
- Dasel-Funktionsindex (abgerufen am 19.02.2026)
- Dasel GitHub-Repository (abgerufen am 19.02.2026)