Tipi di query KQL
Sono state fornite informazioni sulla struttura di una query KQL nell'unità precedente. Verranno ora approfondite le diverse parti e i diversi tipi di query KQL.
Questa unità offre una panoramica delle istruzioni e delle funzioni di query. In KQL tutte le query sono costituite da una o più istruzioni di query. Queste istruzioni influiscono solo sulla query specifica in cui vengono usate, a meno che non vengano archiviate in modo esplicito per un uso futuro. I tipi più comuni di istruzioni di query sono le istruzioni di espressione tabulare e le istruzioni let. Oltre alla libreria completa di funzioni predefinite, KQL consente di usare funzioni definite dall'utente che possono essere archiviate o definite per l'uso in una singola query.
Istruzioni di espressione tabulare
Nella maggior parte delle query si usa almeno un'istruzione di espressione tabulare, il che significa che input e output della query sono costituiti da tabelle o set di dati tabulari. Queste istruzioni contengono in genere operatori, ognuno dei quali inizia con un input tabulare e restituisce un output tabulare.
È disponibile un'ampia gamma di operatori forniti da KQL, che vanno da operatori semplici (ad esempio count
, sort
e where
) a quelli più complessi (ad esempio parse
, join
e render
).
Ad esempio, la query seguente contiene quattro istruzioni di espressione tabulare:
StormEvents // tabular expression statement 1
| where EventType == "Flood" // tabular expression statement 2
| sort by DamageProperty asc // tabular expression statement 3
| take 10 // tabular expression statement 4
Istruzioni "let"
Un'istruzione let
definisce un binding tra un nome e un'espressione. Le istruzioni let possono essere usate per suddividere una query lunga in piccole parti denominate che sono più facili da comprendere.
Ad esempio, nella query seguente sono state usate istruzioni let
per definire valori scalari:
let n = 10; // number
let place = "VIRGINIA"; // string
let cutoff = ago(12345d); // datetime
StormEvents
| where StartTime > cutoff and State == place
| take n
Funzioni predefinite
Le funzioni predefinite sono funzioni hardcoded definite da KQL che non possono essere modificate. KQL include una vasta libreria di funzioni disponibili per l'uso, reperibile nella documentazione ufficiale di KQL. Le funzioni spaziano da quelle semplici di ordinamento e abbinamento a quelle statistiche e geospaziali complesse.
Ad esempio, la funzione strcat()
seguente consente di concatenare gli argomenti della stringa:
print str = strcat("hello", " ", "world")
Funzioni definite dall'utente
Le funzioni definite dall'utente sono, come suggerisce il nome, definite dall'utente. È possibile dividere le funzioni definite dall'utente in due tipi:
Funzioni archiviate: funzioni definite dall'utente che sono entità dello schema del database archiviate e gestite, simili alle tabelle. Le soluzioni usate per archiviare le funzioni cambiano a seconda del prodotto.
Ad esempio, la query seguente in Esplora dati di Azure consente di archiviare una funzione che accetta un parametro:
.create function with (docstring = 'Demo function with parameter', folder='Demo') MyFunction2(myLimit: long) {StormEvents | take myLimit}
In altri ambienti, come Monitoraggio di Azure e Microsoft Sentinel, le query possono essere salvate tramite l'interfaccia utente.
Funzioni definite da query: funzioni definite dall'utente che vengono definite e usate nell'ambito di una singola query. La definizione di queste funzioni viene fatta tramite un'istruzione let.
Ad esempio, la query seguente consente di definire e quindi usare la funzione f:
let f=(a: string, b: string) { strcat(a, " (la la la) ", b) }; print f("hello", "world")