# Integrointi analyysityökaluihin

> Muunnetun CSV-tiedoston tuominen Exceliin, Power BI:hin, SQL Serveriin, SIEMiin tai Python-muistikirjaan — mukaan lukien erotin- ja päivämääräasetukset, jotka saavat sen toimimaan heti ensimmäisellä yrityksellä.

---

LLMS index: [llms.txt](/llms.txt)

---

DNS-vianmäärityslokin muuntamisen tarkoitus on se, mitä sen jälkeen tapahtuu. CSV valittiin, koska kaikki lukevat sitä — mutta "kaikki lukevat CSV:tä" kätkee kaksi asetusta, jotka ratkaisevat, onko tuonti vaivatonta vai koko iltapäivän säätämistä.

## Kaksi asetusta, jotka ratkaisevat kaiken

**Erotinmerkki.** Oletus on `;`. Pidä se Excelissä maissa, joissa pilkkua käytetään desimaalierottimena. Vaihda `,` useimpiin tietokantoihin ja data-analytiikan työkaluihin. Mikä tahansa valintasi on, kerro sama tuovalle osapuolelle.

**Päivämäärämuoto.** `-OutputCulture` ohjaa, miten aikaleimat kirjoitetaan. Koneen luettavaksi käytä `sv-SE` (tai invarianttikulttuuria), jotta `DateTime` tulee muodossa `2026-01-20 23:00:16`:

```powershell
Convert-DNSDebugLogFile -InputFile "C:\Logs\dns.log" -OutputCulture 'sv-SE'
```

Kaikki alla olevat kuluttajat ymmärtävät tämän muodon ilman vihjettä. Paikalliseen asetukseen perustuva tuloste kuten `20.01.2026` tuodaan tekstinä tai, vielä pahempaa, tulkitaan väärin kuukauden/päivän mukaan.

## Microsoft Excel

Nopein tapa tarkastella yhtä muunnettua lokia.

- Oletuserottimella `;` ja sitä odottavalla paikallisella asetuksella kaksoisklikkaus avaa tiedoston oikeilla sarakkeilla.
- Jos kaikki päätyy sarakkeeseen A, erotin ei vastaa Excelin asetusta. Suorita uudelleen `-Delimiter ","` tai tuo tiedosto **Data → From Text/CSV** -toiminnolla ja valitse erotin siellä.
- Muunna alue taulukoksi (`Ctrl+T`) ja rakenna Pivot-taulukko `ClientIP`, `QuestionName` tai `QuestionType` -kentän perusteella. Suosituimmat asiakkaat ja domainit löytyvät minuutissa.
- Yli muutaman sadantuhannen rivin tiedostoille käytä mieluummin Power Queryä tai muita alla mainittuja vaihtoehtoja.

`*_Statistic.csv` ja `*_PacketStatistic.csv` -tiedostot ovat yleensä parempia Excel-kohteita — ne ovat esikäsiteltyjä ja pysyvät pieninä. Katso [Output Formats](../02-output-formats/).

## Power BI

Tuo CSV-tiedostot ja rakenna kojelaudat DNS-toiminnalle, suosituimmille asiakkaille, kyselytrendeille ja virheiden määrille.

- Kohdista Power Query *kansioon*, jossa muunnetut tiedostot ovat, älä yksittäiseen tiedostoon. Rakenne on sama palvelimilla ja päivillä, joten tiedostot vain lisätään perään.
- `ComputerName`-sarake mahdollistaa monipalvelinraportoinnin — aseta `-ComputerName` muunnon yhteydessä, muuten et voi suodattaa palvelimen mukaan.
- `ResponseCode` ja `QuestionType` ovat luonnollisia suodattimia; `DateTime` toimii aikajanana.
- Syöttämällä Power BI:hin `*_PacketStatistic.csv` täyden datatiedoston sijaan malli pysyy pienenä, kun tarvitset vain päivittäisiä trendejä.

## SQL-tietokannat

Lataa CSV-massa SQL Serveriin, PostgreSQL:ään tai mihin tahansa SQL:ää tukevaan järjestelmään pitkäaikaista säilytystä ja toistettavia kyselyjä varten.

Valmis esimerkki — taulun määrittely, muunnos, `SqlBulkCopy`-tuonti ja epäilyttävän `TXT`-toiminnan havaitsemiskysely — on dokumentoitu kohdassa [Security Analysis Workflow with SQL Server](../examples/security-analysis-sql/).

Suunniteltavia asioita ennen ensimmäistä latausta:

- Käytä `-OutputCulture 'sv-SE'`, jotta aikaleimat menevät `datetime2`-sarakkeeseen ilman muunnosvippaskonsteja.
- `Information` ja `Details` voivat olla pitkiä; anna niille `nvarchar(max)`.
- Indeksoi ne kentät, joita todella kysyt — tyypillisesti `DateTime`, `ClientIP` ja `QuestionName`.
- Pidä `-ComputerName` täytettynä, jotta rivit pysyvät tunnistettavina yhdistämisen jälkeen.

## SIEM-järjestelmät

Splunk, Elastic, Sentinel ja vastaavat alustat ottavat CSV:n vastaan korrelointia varten muiden tietoturvatelemetriikoiden kanssa ja hälytysten luomiseksi.

- Lähetä pakattu tuloste (`-CompressOutput`) — se on noin kymmenesosa koosta ja useimmat kerääjät purkavat sen itse.
- Määrittele kenttien kartoitus kerran; sarakejärjestys ei muutu ajokertojen tai palvelimien välillä, mukaan lukien aina läsnä oleva loppuosa `ComputerName`.
- Anna kerääjän poistaa duplikaatit tai arkistoi käsitellyt `.log`-tiedostot. Muunnostyö, joka käsittelee samoja kiertäviä lokitiedostoja uudelleen, lähettää muuten identtiset rivit uudestaan.
- `-ContextFilter Packet` pitää vastaanottomäärän (ja lisenssikustannukset) kurissa, kun palvelinmuistiinpanoja ei tarvita.

## Python, R ja data-analytiikan työkalut

Rakenteellinen tuloste on valmis poikkeavuuksien havaitsemiseen, perustason luomiseen ja räätälöityyn analytiikkaan.

```python
import pandas as pd

df = pd.read_csv(
    r"C:\Administration\Logs\DNSServer\dns.csv",
    sep=";",
    parse_dates=["DateTime"],
)

# top 20 kysyttyä nimeä, vain kyselyt
top = (
    df[df["Direction"] == "Rcv"]
    .groupby("QuestionName")
    .size()
    .sort_values(ascending=False)
    .head(20)
)
print(top)
```

`parse_dates` toimii suoraan, kun olet vienyt tiedoston `-OutputCulture 'sv-SE'` -asetuksella. Tästä eteenpäin pandas, scikit-learn tai R hoitavat klusteroinnin, kausivaihtelun ja poikkeamien tunnistuksen kuten tavallista.

## PowerShellissä pysyminen

Et tarvitse lähteä PowerShellistä saadaksesi nopean vastauksen:

```powershell
$dns = Import-Csv "C:\Administration\Logs\DNSServer\dns.csv" -Delimiter ';'

# meluisimmat asiakkaat
$dns | Where-Object Direction -eq 'Rcv' |
    Group-Object ClientIP |
    Sort-Object Count -Descending |
    Select-Object -First 10 Count, Name

# epäonnistuneet haut
$dns | Where-Object ResponseCode -eq 'NXDOMAIN' |
    Group-Object QuestionName |
    Sort-Object Count -Descending |
    Select-Object -First 10 Count, Name
```

`Import-Csv` lukee koko tiedoston muistiin, joten tämä sopii pyöräytettyyn osaan, mutta ei monen gigatavun vientiin — siihen on tietokanta- ja SIEM-reitit.
