# Intégration avec les outils d’analyse

> Importer le CSV converti dans Excel, Power BI, SQL Server, un SIEM ou un notebook Python — y compris les paramètres de délimiteur et de date qui font que ça marche du premier coup.

---

LLMS index: [llms.txt](/llms.txt)

---

Le but de la conversion d’un journal de débogage DNS est ce qui se passe ensuite. Le CSV a été choisi parce que tout le monde le lit — mais « tout le monde lit le CSV » cache deux réglages qui décident si l’import est simple ou une après-midi de bidouillage.

## Deux réglages qui décident de tout

**Délimiteur.** Par défaut `;`. Gardez-le pour Excel dans les locales qui utilisent la virgule comme séparateur décimal. Passez à `,` pour la plupart des bases de données et outils de data science. Quel que soit votre choix, indiquez-le à la partie qui importe.

**Format de date.** `-OutputCulture` contrôle la façon dont les horodatages sont écrits. Pour tout ce qui est lu par une machine, utilisez `sv-SE` (ou culture invariante) pour que `DateTime` sorte sous la forme `2026-01-20 23:00:16` :

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
```

Tous les consommateurs ci-dessous comprennent ce format sans indice. Une sortie spécifique à une locale comme `20.01.2026` sera importée en texte ou, pire, mal interprétée comme mois/jour.

## Microsoft Excel

Le moyen le plus rapide pour consulter un journal converti unique.

- Avec le délimiteur par défaut `;` et une locale qui l’attend, un double-clic ouvre le fichier avec les colonnes correctement séparées.
- Si tout atterrit dans la colonne A, le délimiteur ne correspond pas à votre réglage Excel. Relancez avec `-Delimiter ","` ou importez via **Données → À partir du texte/CSV** et choisissez le délimiteur là.
- Transformez la plage en tableau (`Ctrl+T`) et créez un tableau croisé dynamique sur `ClientIP`, `QuestionName` ou `QuestionType`. Les principaux clients et domaines prennent environ une minute.
- Pour plus de quelques centaines de milliers de lignes, utilisez plutôt Power Query ou une des autres options ci-dessous.

Les fichiers `*_Statistic.csv` et `*_PacketStatistic.csv` sont généralement de meilleures cibles pour Excel — ils sont pré-agrégés et restent petits. Voir [Formats de sortie](../02-output-formats/).

## Power BI

Importez les fichiers CSV et créez des tableaux de bord pour l’activité DNS, les principaux clients, les tendances des requêtes et les taux d’erreur.

- Pointez Power Query vers le *dossier* contenant vos fichiers convertis plutôt qu’un seul fichier. La structure est identique entre serveurs et jours, donc les fichiers s’additionnent simplement.
- La colonne `ComputerName` permet de faire un rapport multi-serveurs — définissez `-ComputerName` lors de la conversion sinon vous ne pourrez pas filtrer par serveur.
- `ResponseCode` et `QuestionType` sont des filtres naturels ; `DateTime` devient votre axe temporel.
- Alimenter Power BI avec `*_PacketStatistic.csv` au lieu du fichier complet garde le modèle léger quand vous avez seulement besoin des tendances journalières.

## Bases de données SQL

Chargez en masse le CSV dans SQL Server, PostgreSQL ou tout autre système SQL, pour une conservation à long terme et des requêtes répétables.

Un tutoriel prêt à l’emploi — définition de table, conversion, import `SqlBulkCopy` et requête de détection d’activité `TXT` suspecte — est documenté dans [Workflow d’analyse de sécurité avec SQL Server](../examples/security-analysis-sql/).

Points à planifier avant la première charge :

- Utilisez `-OutputCulture 'sv-SE'` pour que les horodatages arrivent dans une colonne `datetime2` sans astuces de conversion.
- `Information` et `Details` peuvent être longs ; donnez-leur `nvarchar(max)`.
- Indexez ce que vous interrogez réellement — typiquement `DateTime`, `ClientIP` et `QuestionName`.
- Gardez `-ComputerName` renseigné pour que les lignes restent attribuables après fusion.

## Systèmes SIEM

Splunk, Elastic, Sentinel et plateformes similaires ingèrent le CSV pour corrélation avec d’autres télémétries de sécurité et pour les alertes.

- Envoyez la sortie compressée (`-CompressOutput`) — elle fait environ un dixième de la taille et la plupart des collecteurs la décompressent eux-mêmes.
- Définissez le mapping des champs une fois ; la disposition des colonnes ne change jamais entre les exécutions ou serveurs, y compris la colonne `ComputerName` toujours présente à la fin.
- Faites dédupliquer votre collecteur, ou archivez les fichiers `.log` traités. Un job de conversion qui retraiterait les mêmes logs tournés renverrait sinon des lignes identiques.
- `-ContextFilter Packet` limite le volume d’ingestion (et le coût de licence) quand les notes serveur ne font pas partie de vos cas d’usage.

## Python, R et outils de data science

La sortie structurée est prête pour la détection d’anomalies, la mise en référence et les analyses personnalisées.

```python
import pandas as pd

df = pd.read_csv(
    r"C:\Administration\Logs\DNSServer\dns.csv",
    sep=";",
    parse_dates=["DateTime"],
)

# top 20 des noms interrogés, uniquement les requêtes
top = (
    df[df["Direction"] == "Rcv"]
    .groupby("QuestionName")
    .size()
    .sort_values(ascending=False)
    .head(20)
)
print(top)
```

`parse_dates` fonctionne directement quand vous avez exporté avec `-OutputCulture 'sv-SE'`. À partir de là, pandas, scikit-learn ou R gèrent le clustering, la saisonnalité et la détection d’anomalies comme d’habitude.

## Rester dans PowerShell

Pas besoin de quitter PowerShell pour une réponse rapide :

```powershell
$dns = Import-Csv "C:\Administration\Logs\DNSServer\dns.csv" -Delimiter ';'

# clients les plus bruyants
$dns | Where-Object Direction -eq 'Rcv' |
    Group-Object ClientIP |
    Sort-Object Count -Descending |
    Select-Object -First 10 Count, Name

# recherches échouées
$dns | Where-Object ResponseCode -eq 'NXDOMAIN' |
    Group-Object QuestionName |
    Sort-Object Count -Descending |
    Select-Object -First 10 Count, Name
```

`Import-Csv` lit tout le fichier en mémoire, donc c’est bien pour un fichier tourné mais pas adapté à un export de plusieurs gigaoctets — c’est là que les bases de données et SIEM entrent en jeu.
