# Integración con Herramientas de Análisis

> Llevar el CSV convertido a Excel, Power BI, SQL Server, un SIEM o un cuaderno de Python — incluyendo la configuración del delimitador y la fecha que hacen que funcione a la primera.

---

LLMS index: [llms.txt](/llms.txt)

---

El objetivo de convertir un registro de depuración DNS es lo que sucede después. Se eligió CSV porque todo lo lee — pero "todo lee CSV" oculta dos configuraciones que deciden si una importación es sencilla o una tarde de ajustes.

## Dos configuraciones que lo deciden todo

**Delimitador.** El valor predeterminado es `;`. Mantenlo para Excel en configuraciones regionales que usan la coma como separador decimal. Cambia a `,` para la mayoría de bases de datos y herramientas de ciencia de datos. Sea cual sea tu elección, informa lo mismo al lado que importa.

**Formato de fecha.** `-OutputCulture` controla cómo se escriben las marcas de tiempo. Para cualquier cosa leída por una máquina, usa `sv-SE` (o cultura invariable) para que `DateTime` salga como `2026-01-20 23:00:16`:

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
```

Todos los consumidores a continuación entienden ese formato sin necesidad de indicaciones. La salida específica de la configuración regional como `20.01.2026` se importará como texto o, peor aún, se interpretará mal como mes/día.

## Microsoft Excel

La forma más rápida de ver un registro convertido individual.

- Con el delimitador predeterminado `;` y una configuración regional que lo espera, un doble clic abre el archivo con columnas correctas.
- Si todo cae en la columna A, el delimitador no coincide con la configuración de tu Excel. Vuelve a ejecutar con `-Delimiter ","` o importa vía **Datos → Desde texto/CSV** y elige el delimitador ahí.
- Convierte el rango en una tabla (`Ctrl+T`) y crea una tabla dinámica con `ClientIP`, `QuestionName` o `QuestionType`. Los principales clientes y dominios se obtienen en un minuto.
- Para cualquier cosa con más de unos cientos de miles de filas, usa Power Query o alguna de las otras opciones abajo.

Los archivos `*_Statistic.csv` y `*_PacketStatistic.csv` suelen ser mejores para Excel — están preagregados y se mantienen pequeños. Consulta [Formatos de Salida](../02-output-formats/).

## Power BI

Importa los archivos CSV y crea paneles para actividad DNS, principales clientes, tendencias de consultas y tasas de error.

- Apunta Power Query a la *carpeta* que contiene tus archivos convertidos en lugar de a un solo archivo. El formato es idéntico entre servidores y días, así que los archivos simplemente se agregan.
- La columna `ComputerName` es lo que hace posible un informe multi-servidor — configura `-ComputerName` durante la conversión o no podrás filtrar por servidor.
- `ResponseCode` y `QuestionType` son filtros naturales; `DateTime` se convierte en tu eje temporal.
- Alimentar Power BI con `*_PacketStatistic.csv` en lugar del archivo completo mantiene el modelo pequeño cuando solo necesitas tendencias diarias.

## Bases de datos SQL

Carga masiva del CSV en SQL Server, PostgreSQL o cualquier otro que hable SQL, para retención a largo plazo y consultas repetibles.

Un recorrido listo para ejecutar — definición de tabla, conversión, importación con `SqlBulkCopy` y una consulta para detectar actividad sospechosa `TXT` — está documentado en [Flujo de Trabajo de Análisis de Seguridad con SQL Server](../examples/security-analysis-sql/).

Puntos a planificar antes de la primera carga:

- Usa `-OutputCulture 'sv-SE'` para que las marcas de tiempo caigan en una columna `datetime2` sin trucos de conversión.
- `Information` y `Details` pueden ser largos; asígnales `nvarchar(max)`.
- Indexa lo que realmente consultas — típicamente `DateTime`, `ClientIP` y `QuestionName`.
- Mantén `-ComputerName` poblado para que las filas sigan siendo atribuibles después de fusionarlas.

## Sistemas SIEM

Splunk, Elastic, Sentinel y plataformas similares ingieren el CSV para correlacionar con otra telemetría de seguridad y para alertas.

- Envía la salida comprimida (`-CompressOutput`) — es aproximadamente una décima parte del tamaño y la mayoría de los recolectores la descomprimen solos.
- Define el mapeo de campos una vez; el formato de columnas nunca cambia entre ejecuciones o servidores, incluyendo la columna `ComputerName` siempre presente al final.
- Haz que tu recolector deduplique o archive los archivos `.log` procesados. Un trabajo de conversión que reprocesa los mismos logs rotados volverá a enviar filas idénticas.
- `-ContextFilter Packet` mantiene bajo el volumen de ingestión (y el costo de licencia) cuando las notas del servidor no forman parte de tus casos de uso.

## Python, R y herramientas de ciencia de datos

La salida estructurada está lista para detección de anomalías, establecimiento de líneas base y análisis personalizados.

```python
import pandas as pd

df = pd.read_csv(
    r"C:\Administration\Logs\DNSServer\dns.csv",
    sep=";",
    parse_dates=["DateTime"],
)

# top 20 nombres consultados, solo consultas
top = (
    df[df["Direction"] == "Rcv"]
    .groupby("QuestionName")
    .size()
    .sort_values(ascending=False)
    .head(20)
)
print(top)
```

`parse_dates` funciona directamente cuando exportas con `-OutputCulture 'sv-SE'`. Desde aquí, pandas, scikit-learn o R manejan clustering, estacionalidad y detección de valores atípicos como de costumbre.

## Quedarse en PowerShell

No tienes que salir de PowerShell para una respuesta rápida:

```powershell
$dns = Import-Csv "C:\Administration\Logs\DNSServer\dns.csv" -Delimiter ';'

# clientes más ruidosos
$dns | Where-Object Direction -eq 'Rcv' |
    Group-Object ClientIP |
    Sort-Object Count -Descending |
    Select-Object -First 10 Count, Name

# búsquedas fallidas
$dns | Where-Object ResponseCode -eq 'NXDOMAIN' |
    Group-Object QuestionName |
    Sort-Object Count -Descending |
    Select-Object -First 10 Count, Name
```

`Import-Csv` lee todo el archivo en memoria, así que esto está bien para un fragmento rotado y no es adecuado para una exportación de varios gigabytes — para eso están las rutas de base de datos y SIEM.
