Tipi di query KQL

Completato

Si è appresa la struttura di una query KQL nell'unità precedente. Verranno ora approfondite le diverse parti e i 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 dagli operatori semplici (ad countesempio , sorte where) a quelli più complessi ( ad esempio parse, joine 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'associazione 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, le let istruzioni nella query seguente vengono usate 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. Le funzioni definite dall'utente possono essere suddivise 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, ad esempio 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")