Condividi tramite


Esercitazione: Unire dati da più tabelle

Si applica a: ✅Microsoft Fabric✅Azure Esplora dati Azure MonitorMicrosoft Sentinel

L'unione di dati da più tabelle consente un'analisi più completa combinando informazioni provenienti da origini diverse e creando nuove relazioni tra punti dati. Nell'Linguaggio di query Kusto (KQL) gli operatori di join e ricerca vengono usati per combinare i dati tra tabelle.

Questa esercitazione illustra come:

Gli esempi in questa esercitazione usano la StormEvents tabella, disponibile pubblicamente nel cluster della Guida. Per esplorare con i propri dati, creare un cluster gratuito.

Gli esempi in questa esercitazione usano la StormEvents tabella, disponibile pubblicamente nei dati di esempio di Analisi meteo.

Prerequisiti

Per eseguire le query seguenti, è necessario un ambiente di query con accesso ai dati di esempio. È possibile usare uno dei seguenti elementi:

  • Un account Microsoft o un'identità utente di Microsoft Entra per accedere al cluster della Guida
  • Un account Microsoft o un'identità utente di Microsoft Entra
  • Un'area di lavoro infrastruttura con capacità abilitata per Microsoft Fabric

Usare l'operatore di join

Nel database Samples sono presenti due tabelle correlate agli eventi storm. Uno viene chiamato e l'altro viene chiamato StormEvents PopulationData. In questa sezione si aggiungeranno le tabelle per eseguire l'analisi dei dati che non sarebbero possibili con una sola tabella.

Informazioni sui dati

Usare l'operatore take per visualizzare i dati contenuti in ogni tabella.

StormEvents 
| take 5

La tabella seguente mostra solo 6 delle 22 colonne restituite.

StartTime EndTime EpisodeId EventId Provincia EventType ...
2007-09-20T21:57:00Z 2007-09-20T22:05:00Z 11078 60913 FLORIDA Tornado ...
2007-12-20T07:50:00Z 2007-12-20T07:53:00Z 12554 68796 MISSISSIPPI Vento di tempesta ...
2007-12-30T16:00:00Z 2007-12-30T16:05:00Z 11749 64588 GEORGIA Vento di tempesta ...
2007-09-29T08:11:00Z 2007-09-29T08:11:00Z 11091 61032 SUD ATLANTICO Tromba marina ...
2007-09-18T20:00:00Z 2007-09-19T18:00:00Z 11074 60904 FLORIDA Pioggia intensa ...
PopulationData 
| take 5

Output

Provincia Popolazione
ALABAMA 4918690
ALASKA 727951
ARIZONA 7399410
ARKANSAS 3025880
CALIFORNIA 39562900

Entrambe le tabelle contengono una State colonna. La StormEvents tabella contiene molte altre colonne e contiene solo un'altra PopulationData colonna che contiene la popolazione dello stato specificato.

Unire le tabelle

Unire la PopulationData tabella con StormEvents nella colonna comune State per trovare il danno totale della proprietà causato da tempeste per stato.

StormEvents
| summarize PropertyDamage = sum(DamageProperty) by State
| join kind=innerunique PopulationData on State
| project State, PropertyDamagePerCapita = PropertyDamage / Population
| sort by PropertyDamagePerCapita

Aggiungere | render columnchart alla query per visualizzare il risultato.

Screenshot dell'istogramma che mostra i danni alle proprietà per stato pro capite.

Suggerimento

Esistono molti tipi di join che è possibile eseguire con l'operatore join . Vedere un elenco di versioni di join.

Usare l'operatore lookup

L'operatore di ricerca ottimizza le prestazioni delle query in cui una tabella dei fatti è arricchita con i dati di una tabella delle dimensioni. Estende la tabella dei fatti con valori ricercati in una tabella delle dimensioni. Per ottenere prestazioni ottimali, il sistema presuppone per impostazione predefinita che la tabella dei fatti sinistra sia la tabella dei fatti più grande e che la tabella destra sia la tabella delle dimensioni più piccola. Questo è esattamente opposto al presupposto usato dall'operatore join.

Nel cluster della Guida è presente un altro database denominato ContosoSales che contiene i dati di vendita. La query seguente usa lookup per unire le SalesFact tabelle e Products di questo database per ottenere le vendite totali per categoria di prodotti.

SalesFact
| lookup Products on ProductKey
| summarize TotalSales = count() by ProductCategoryName
| order by TotalSales desc

Output

ProductCategoryName TotalSales
Giochi e giocattoli 966782
TV e video 715024
Fotocamere e videocamere 323003
Computer 313487
Elettrodomestici 237508
Audio 192671
Telefoni cellulari 50342
Musica, film e audiobook 33376

Nota

L'operatore lookup supporta solo due versioni di join: leftouter e inner.

Unire tabelle generate da query

I join possono essere eseguiti anche in base ai risultati della query della stessa tabella.

Si supponga di voler creare un elenco di stati in cui si sono verificati sia eventi di fulmine che di valanga. Usare l'operatore join per unire le righe di due tabelle, una contenente i dati sugli eventi fulmine e l'altra contenente dati su eventi di valanga, in base alla State colonna.

StormEvents
| where EventType == "Lightning"
| distinct State
| join kind=inner (
    StormEvents 
    | where EventType == "Avalanche"
    | distinct State
    )
    on State
| project State

Output

Provincia
OREGON
UTAH
WYOMING
WASHINGTON
COLORADO
IDAHO
NEVADA