Scrivere query con KQL
Per eseguire query sui dati da una tabella in un database KQL, è possibile usare il Linguaggio di query Kusto (KQL), usato per scrivere query in Esplora dati di Azure, Log Analytics di Monitoraggio di Azure, Azure Sentinel e Microsoft Fabric. KQL è una richiesta di sola lettura per l'elaborazione di dati e la restituzione di risultati. Le query KQL vengono eseguite da una o più istruzioni di query.
Un'istruzione query è costituita da un nome di tabella seguito da uno o più operatori che take
, filter
, transform
, aggregate
o join
i dati. Ad esempio:
Le query KQL vengono create usando operatori relazionali per filtrare e trasformare i dati usando una sintassi simile a SQL. Tuttavia, la sintassi KQL include estensioni che consentono la corrispondenza avanzata del testo e dei modelli, l'analisi statistica, le proiezioni di serie temporali e gli algoritmi geo-spaziali e di Machine Learning.
Creare e caricare tabelle in KQL
Nella maggior parte dei casi si creano tabelle e si definisce l'origine usando gli strumenti grafici in Microsoft Fabric. È tuttavia possibile usare istruzioni KQL per creare e caricare tabelle.
Per creare una tabella e inserire dati in essa, è possibile usare il comando .create table
, che crea una nuova tabella vuota con uno schema specificato. È necessario specificare il nome della tabella, i nomi di colonna e i relativi tipi di dati e, facoltativamente, alcune proprietà, ad esempio docstring o folder. Ad esempio:
.create table sales (
SalesOrderNumber: string,
SalesOrderLineItem: int,
OrderDate: datetime,
CustomerName: string,
EmailAddress: string,
Item: string,
Quantity: int,
UnitPrice: real,
TaxAmount: real)
Questo comando crea una tabella denominata sales con 9 colonne di tipi di dati diversi.
È possibile inserire dati in una tabella in più modi, incluso il comando ingest into
, come illustrato in questo esempio:
.ingest into table sales 'https://<StorageAccountName>.blob.core.windows.net/container/<TableName>.csv'
with (ignoreFirstRecord = true)
Recuperare dati da una tabella
Una query KQL di base è costituita dalla selezione dei dati da una tabella e dall'applicazione di filtri e trasformazioni ai dati. Nell'esempio seguente verrà eseguita una query su tutti i dati della tabella sales
.
sales
L'output di questa query è simile all'esempio seguente:
SalesOrderNumber | SalesOrderLineItem | DataOrdine | CustomerName | EmailAddress | Articolo | Quantità | UnitPrice | TaxAmount |
---|---|---|---|---|---|---|---|---|
SO43701 | 1 | 2019-07-01T00:00:00Z | Christy Zhu | christy12@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
SO43704 | 1 | 2019-07-01T00:00:00Z | Julio Ruiz | julio1@adventure-works.com | Mountain-100 Black 48 | 1 | 3374.99 | 269.9992 |
SO43705 | 1 | 2019-07-01T00:00:00Z | Curtis Lu | curtis9@adventure-works.com | Mountain-100 Silver 38 | 1 | 3399.99 | 271.9992 |
SO43700 | 1 | 2019-07-01T00:00:00Z | Ruben Prasad | ruben10@adventure-works.com | Road-650 Black 62 | 1 | 699,0982 | 55.9279 |
SO43703 | 1 | 2019-07-01T00:00:00Z | Albert Alvarez | albert7@adventure-works.com | Road-150 Red 62 | 1 | 3578.27 | 286.2616 |
SO43697 | 1 | 2019-07-01T00:00:00Z | Cole Watson | cole1@adventure-works.com | Road-150 Red 62 | 1 | 3578.27 | 286.2616 |
SO43699 | 1 | 2019-07-01T00:00:00Z | Sydney Wright | sydney61@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
L'output della query può quindi essere ulteriormente analizzato tramite strumenti di visualizzazione oppure integrato con altri programmi per creare dashboard personalizzati e flussi di lavoro automatizzati.
Nell'esempio successivo vengono restituite cinque righe dalla tabella vendite nel database KQL usando l'istruzione take
, che rappresenta un modo semplice e rapido per visualizzare un piccolo esempio di record durante l'esplorazione dei dati.
sales
| take 5
Questa volta, i risultati includono cinque righe:
SalesOrderNumber | SalesOrderLineItem | DataOrdine | CustomerName | EmailAddress | Articolo | Quantità | UnitPrice | TaxAmount |
---|---|---|---|---|---|---|---|---|
SO43701 | 1 | 2019-07-01T00:00:00Z | Christy Zhu | christy12@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
SO43704 | 1 | 2019-07-01T00:00:00Z | Julio Ruiz | julio1@adventure-works.com | Mountain-100 Black 48 | 1 | 3374.99 | 269.9992 |
SO43705 | 1 | 2019-07-01T00:00:00Z | Curtis Lu | curtis9@adventure-works.com | Mountain-100 Silver 38 | 1 | 3399.99 | 271.9992 |
SO43700 | 1 | 2019-07-01T00:00:00Z | Ruben Prasad | ruben10@adventure-works.com | Road-650 Black 62 | 1 | 699,0982 | 55.9279 |
SO43703 | 1 | 2019-07-01T00:00:00Z | Albert Alvarez | albert7@adventure-works.com | Road-150 Red 62 | 1 | 3578.27 | 286.2616 |
Filtrare con la clausola where
In KQL where
è una clausola utilizzata per filtrare le righe di una tabella in base a una condizione specificata. La clausola where
è seguita da un'espressione booleana che restituisce true
o false
per ogni riga della tabella. Le righe per cui l'espressione restituisce true
vengono incluse nel risultato, mentre le righe per cui l'espressione restituisce false
vengono escluse.
L'operatore contains
viene usato nella clausola where
della query per filtrare le righe della tabella sales in base al fatto che la colonna Item contenga o meno la stringa "Mountain-100".
sales
| where Item contains 'Mountain-100'
I risultati includono solo le vendite per gli articoli contenenti "Mountain-100":
SalesOrderNumber | SalesOrderLineItem | DataOrdine | CustomerName | EmailAddress | Articolo | Quantità | UnitPrice | TaxAmount |
---|---|---|---|---|---|---|---|---|
SO43701 | 1 | 2019-07-01T00:00:00Z | Christy Zhu | christy12@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
SO43704 | 1 | 2019-07-01T00:00:00Z | Julio Ruiz | julio1@adventure-works.com | Mountain-100 Black 48 | 1 | 3374.99 | 269.9992 |
SO43705 | 1 | 2019-07-01T00:00:00Z | Curtis Lu | curtis9@adventure-works.com | Mountain-100 Silver 38 | 1 | 3399.99 | 271.9992 |
SO43699 | 1 | 2019-07-01T00:00:00Z | Sydney Wright | sydney61@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
KQL funziona in modo ottimale quando si vogliono usare i dati delle serie temporali. Ad esempio, per filtrare i dati delle vendite per visualizzare gli ordini che si sono verificati tra due valori datetime. È possibile sfruttare molte funzioni di serie temporali, tra cui now()
, che restituisce l'ora corrente. In questo esempio vengono restituiti tutti gli ordini che si sono verificati nell'ultimo giorno (24 ore).
sales
| where OrderDate between (now(-1d) .. now())
I risultati vengono filtrati in modo da includere solo gli ordini entro il periodo di tempo specificato.
SalesOrderNumber | SalesOrderLineItem | DataOrdine | CustomerName | EmailAddress | Articolo | Quantità | UnitPrice | TaxAmount |
---|---|---|---|---|---|---|---|---|
SO49171 | 1 | 2023-05-01T22:01:00Z | Mariah Foster | mariah21@adventure-works.com | Road-250 Black 48 | 1 | 2181.5625 | 174.525 |
SO49172 | 1 | 2021-05-01T23:55:00Z | Brian Howard | brian23@adventure-works.com | Road-250 Red 44 | 1 | 2443,35 | 195.468 |
SO49173 | 1 | 2021-05-02T01:10:00Z | Linda Alvarez | linda19@adventure-works.com | Mountain-200 Silver 38 | 1 | 2071.4196 | 165.7136 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
Ordinare i risultati di query
Questa query usa l'operatore sort
per recuperare le vendite degli elementi "Mountain-100" ordinati in modo da visualizzare prima le vendite più recenti:
sales
| where Item contains 'Mountain-100'
| sort by OrderDate desc
I risultati saranno simili all'esempio seguente:
SalesOrderNumber | SalesOrderLineItem | DataOrdine | CustomerName | EmailAddress | Articolo | Quantità | UnitPrice | TaxAmount |
---|---|---|---|---|---|---|---|---|
SO43699 | 1 | 2023-05-01T00:00:00Z | Sydney Wright | sydney61@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
SO43705 | 1 | 2023-04-20T00:00:00Z | Curtis Lu | curtis9@adventure-works.com | Mountain-100 Silver 38 | 1 | 3399.99 | 271.9992 |
SO43704 | 1 | 2023-04-12T00:00:00Z | Julio Ruiz | julio1@adventure-works.com | Mountain-100 Black 48 | 1 | 3374.99 | 269.9992 |
SO43701 | 1 | 2023-03-27T00:00:00Z | Christy Zhu | christy12@adventure-works.com | Mountain-100 Silver 44 | 1 | 3399.99 | 271.9992 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
Riepilogare e aggregare
È possibile usare l'operatore summarize
per raggruppare i dati in base a una colonna e creare una nuova colonna con un'aggregazione per il gruppo. Ad esempio, la query seguente restituisce la quantità totale di ogni articolo venduto.
sales
| summarize ItemsSold= sum(Quantity) by Item
I risultati includono una colonna basata sulla funzione di aggregazione usata (in questo caso sum()
)
Articolo | ItemsSold |
---|---|
Water Bottle - 30 oz. | 2.097 |
Patch Kit/8 patch | 1.621 |
Mountain Tire Tube | 1.581 |
Road Tire Tube | 1.212 |
... | ... |
Uso di Copilot per facilitare le query del set di query
Una nuova funzionalità all'interno degli strumenti di intelligence in tempo reale Microsoft è la possibilità di usare Copilot per l'intelligence in tempo reale. Copilot offre la possibilità di scrivere richieste in linguaggio naturale invece di scrivere o dover imparare rapidamente a creare le query KQL.
Quando l'amministratore abilita Copilot, l'opzione corrispondente viene visualizzata nella barra dei menu superiore dei set di query. Quando si pone una domanda sui dati, Copilot genererà il codice KQL per rispondere alla domanda. È possibile creare diverse query all'interno del set di query usando questo approccio senza codice per raccogliere informazioni utili per l'utilizzo da parte degli utenti.
Quando sono disponibili query all'interno del set di query, è possibile aggiungerle a un dashboard esistente o creare un nuovo dashboard. A tale scopo, selezionare le query da aggiungere e quindi selezionare Aggiungi al dashboard. In questo modo si ottiene una finestra per eseguire altre azioni.
È anche possibile aggiungere una query del set di query a un report di Power BI evidenziando la query preferita e quindi selezionando Crea report di PowerBI.
Nota
È possibile selezionare una sola query alla volta usando Aggiungi al dashboard o Crea report di PowerBI, ma è possibile aggiungere elementi del dashboard ai dashboard esistenti.