Usare l'operatore di join
L'operatore di join esegue il merge delle righe di due tabelle per formare una nuova tabella, facendo corrispondere i valori delle colonne specificate di ogni tabella.
Sintassi
LeftTable | join [JoinParameters] ( RightTable ) on Attributes
SecurityEvent
| where EventID == "4624"
| summarize LogOnCount=count() by EventID, Account
| project LogOnCount, Account
| join kind = inner (
SecurityEvent
| where EventID == "4634"
| summarize LogOffCount=count() by EventID, Account
| project LogOffCount, Account
) on Account
La prima tabella specificata nel join è considerata la tabella di sinistra. La tabella dopo la parola chiave join è la tabella di destra. Le colonne delle tabelle sono designate $left.Column
e $right.Column
per distinguere le colonne delle tabelle a cui si fa riferimento.
Quando si crea un join delle tabelle, si usano diverse versioni di join per determinare il comportamento del join. È essenziale comprendere l'impatto dei record a sinistra e a destra in base alla versione di join. Il grafico seguente mostra quali record verranno conservati se è presente o manca un record corrispondente nell'altro set di dati. L'inner join visualizzerà solo i record sul lato sinistro se è presente un record corrispondente sul lato destro. Anche sul lato destro sarà richiesto un record sul lato sinistro.
Versione di join | Record di output |
---|---|
kind=leftanti, kind=leftantisemi | Restituisce tutti i record del lato sinistro che non hanno corrispondenze a destra. |
kind=rightanti, kind=rightantisemi | Restituisce tutti i record del lato destro che non hanno corrispondenze a sinistra. |
kind unspecified, kind=innerunique | Per ogni valore della chiave viene trovata una corrispondenza solo con una riga a sinistra. L'output contiene una riga per ogni corrispondenza di questa riga con le righe a destra. |
kind=leftsemi | Restituisce tutti i record del lato sinistro che hanno corrispondenze a destra. |
kind=rightsemi | Restituisce tutti i record del lato destro che hanno corrispondenze a sinistra. |
kind=inner | Contiene una riga per ogni combinazione di righe corrispondenti a sinistra e a destra. |
kind=leftouter (o kind=rightouter o kind=fullouter) | Contiene una riga per ogni riga a sinistra e a destra, anche in caso di assenza di corrispondenze. Le celle di output senza corrispondenza contengono valori Null. |