KQL pro powershell vývojáře – 1. díl: filtrování

KQL pro powershell vývojáře – 1. díl: filtrování

KQL (Kusto) se dnes využívá ve stále více a více Microsoft produktech a službách. V rámci této sérii bych rád s KQL seznámil ty z vás, kteří již máte zkušenosti s psaním PowerShell skriptů. Jak sami uvidíte, KQL a PowerShell se v mnohém podobají. Není tedy rozhodně na místě se KQL nějak zásadně bát.

Předpokládejme, že naše vstupní data vypadají stejně jak pro KQL tak pro PowerShell (typy objektů, vlastnosti apod.)

Dnes začneme s filtrováním. Následující příklad filtruje pouze výsledky přijaté za poslední 1 den.

Heartbeat
| where TimeGenerated >= ago(1d)
$Heartbeat | `
Where-Object {$_.TimeGenerated -ge $(Get-Date).AddDays(-1)}

Filtry můžeme také kombinovat. Například zde ještě omezujeme výstup jen na specifický counter dle jeho názvu.

Perf
| where TimeGenerated >= ago(1d) and CounterName == "Bytes Received/sec"
$Perf | `
Where-Object {
$_.TimeGenerated -ge $(Get-Date).AddDays(-1) -and $_.CounterName -eq 'Bytes Received/sec'
}

Můžeme také jeden filtr rozdělit do samostatných příkazů v rámci pipeline.

Perf
| where TimeGenerated >= ago(1d)
| where CounterName == "Bytes Received/sec"
$Perf | `
Where-Object {$_.TimeGenerated -ge $(Get-Date).AddDays(-1)} | `
Where-Object {$_.CounterName -eq 'Bytes Received/sec'}

Jak vidíte, skutečně je PowerShell a KQL v mnohém podobné! To je pro dnešek vše.