Exploración de Datos con Dasel v3
<when_to_use>
Activa esta habilidad cuando:
- Explorando archivos de datos estructurados desconocidos (configuraciones, respuestas de API, datasets)
- Descubriendo el esquema o la forma de un documento antes de modificarlo
- Investigando estructuras de configuración anidadas (manifiestos de Kubernetes, pipelines de CI, archivos de paquetes)
- Mostrando muestras de arreglos grandes u objetos profundamente anidados para entender su contenido
- Identificando tipos de datos antes de transformar o extraer
</when_to_use>
Formatos Soportados
Dasel detecta automáticamente el formato a partir de la extensión del archivo. Se puede sobrescribir con -i <formato> cuando se lee desde stdin o cuando la extensión es ambigua.
Identificadores de formato: json, yaml, toml, xml, csv, hcl, ini
Flujo de Trabajo Universal de Exploración
Sigue esta secuencia al encontrarte con un archivo de datos estructurados desconocido. Cada paso reduce el alcance.
Paso 1 — Detección de Formato
Dasel infiere el formato a partir de la extensión del archivo. Para stdin o extensiones no estándar, especifícalo explícitamente:
cat archivo_desconocido | dasel -i json 'keys($this)'
Paso 2 — Claves de Nivel Superior
cat config.yaml | dasel -i yaml 'keys($this)'
Salida: arreglo de nombres de claves de nivel superior. Este es siempre el primer comando de exploración.
Paso 3 — Vista Previa de la Estructura
Para archivos pequeños (configuraciones, manifiestos), vuelca el documento completo:
cat config.yaml | dasel -i yaml
Para archivos grandes, salta al Paso 4.
Paso 4 — Descubrimiento de Claves Anidadas
Navega nivel por nivel:
cat config.yaml | dasel -i yaml 'server'
cat config.yaml | dasel -i yaml 'keys(server)'
cat config.yaml | dasel -i yaml 'keys(server.logging)'
Descubrimiento recursivo de claves en todas las profundidades:
cat config.yaml | dasel -i yaml '..keys($this)'
Paso 5 — Muestreo de Arreglos
Vista previa de los primeros elementos sin cargar todo el arreglo:
cat data.json | dasel -i json 'items[0:3]'
Inspección de un solo elemento:
cat data.json | dasel -i json 'items[0]'
Paso 6 — Inspección de Tipos
Determina el tipo de cualquier nodo:
cat data.json | dasel -i json 'typeOf(settings)'
cat data.json | dasel -i json 'typeOf(items[0].count)'
Valores devueltos: "string", "array", "bool", "null", "int", "float"
Paso 7 — Extracción de Valores
Una vez que la ruta es conocida, extrae valores específicos:
cat config.yaml | dasel -i yaml 'database.connection.host'
cat data.json | dasel -i json 'users[0].email'
Patrones de Exploración
Exploración en Anchura (Breadth-First)
Comienza en la raíz, enumera claves en cada nivel antes de profundizar:
cat file.json | dasel -i json 'keys($this)' # Nivel 0
cat file.json | dasel -i json 'keys(metadata)' # Nivel 1
cat file.json | dasel -i json 'keys(metadata.labels)' # Nivel 2
Exploración Basada en Búsqueda (Archivos Grandes)
Cuando el archivo es demasiado grande para recorrerlo manualmente, usa search() con predicados:
# Encuentra todos los objetos que contienen una clave específica
cat data.json | dasel -i json 'search(has("email"))'
# Encuentra todos los objetos con las claves "id" y "name"
cat data.json | dasel -i json 'search(has("id") && has("name"))'
# Encuentra nodos donde un valor coincide
cat data.json | dasel -i json 'search($this == 42)'
Contar Elementos
cat data.json | dasel -i json 'len(items)'
cat data.json | dasel -i json 'len(keys($this))'
Descubrimiento de Valores Únicos
Extrae un campo de todos los elementos de un arreglo y luego elimina duplicados en el shell:
cat data.json | dasel -i json 'items.map(category)' | dasel -i json '$this...' | sort -u
Descenso Recursivo
Encuentra todos los valores para un nombre de clave a cualquier profundidad:
cat data.json | dasel -i json '..name'
Obtén el primer elemento de cada arreglo anidado:
cat data.json | dasel -i json '..[0]'
Recetas Específicas por Formato
Para comandos de exploración detallados por formato, consulta Recetas Específicas por Formato.
Referencias
- Documentación de Dasel v3 (obtenida el 2026-02-19)
- Índice de Funciones de Dasel (obtenida el 2026-02-19)
- Repositorio de GitHub de Dasel (obtenida el 2026-02-19)