Condividi tramite


Operatore lookup

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

Estende le colonne di una tabella dei fatti con valori ricercati in una tabella delle dimensioni.

FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2

In questo caso, il risultato è una tabella che estende (FactTable$left) con i dati da DimensionTable (a cui viene fatto $rightriferimento ) eseguendo una ricerca di ogni coppia (CommonColumn,Col) dalla tabella precedente con ogni coppia (CommonColumn1,Col2) nella seconda tabella. Per le differenze tra tabelle dei fatti e delle dimensioni, vedere tabelle dei fatti e delle dimensioni.

L'operatore lookup esegue un'operazione simile all'operatore join con le differenze seguenti:

  • Il risultato non ripete le colonne della $right tabella che costituiscono la base per l'operazione di join.
  • Sono supportati leftouter solo due tipi di ricerca e inner, con leftouter l'impostazione predefinita.
  • In termini di prestazioni, il sistema presuppone per impostazione predefinita che la $left tabella sia la tabella più grande (fatti) e che la $right tabella sia la tabella più piccola (dimensioni). Questo è esattamente opposto al presupposto usato dall'operatore join .
  • L'operatore lookup trasmette automaticamente la $right tabella alla $left tabella (essenzialmente, si comporta come se hint.broadcast fosse stato specificato). Ciò limita le dimensioni della $right tabella.

Nota

Se il lato destro della ricerca è maggiore di diverse decine di MB, la query avrà esito negativo.

È possibile eseguire la query seguente per stimare le dimensioni del lato destro in byte:

rightSide
| summarize sum(estimate_data_size(*))

Sintassi

LeftTable lookup | [kind = (leftouterinner|)] (Condizioni di RightTable) on

Altre informazioni sulle convenzioni di sintassi.

Parametri

Nome Digita Obbligatorio Descrizione
LeftTable string ✔️ Tabella o espressione tabulare che rappresenta la base per la ricerca. Indicata come $left.
RightTable string ✔️ Tabella o espressione tabulare utilizzata per "popolare" nuove colonne nella tabella dei fatti. Indicata come $right.
Attributi string ✔️ Elenco delimitato da virgole di una o più regole che descrivono il modo in cui le righe di LeftTable corrispondono alle righe di RightTable. Vengono valutate più regole mediante l'operatore logico and. Vedere Regole.
kind string Determina come trattare le righe in LeftTable che non hanno corrispondenze in RightTable. Per impostazione predefinita, leftouter viene usato , il che significa che tutte le righe verranno visualizzate nell'output con valori Null usati per i valori mancanti delle colonne RightTable aggiunte dall'operatore. Se inner viene usato, tali righe vengono omesse dall'output. Altri tipi di join non sono supportati dall'operatore lookup .

Regole

Tipo di regola Sintassi Predicate
Uguaglianza in base al nome ColumnName where LeftTable.ColumnName == RightTable.ColumnName
Uguaglianza in base al valore $left.LeftColumn == $right.RightColumn where$left.LeftColumn == $right.*RightColumn

Nota

In caso di "uguaglianza per valore", i nomi delle colonne devono essere qualificati con la tabella proprietaria applicabile indicata dalle $left notazioni e $right .

Valori restituiti

Una tabella con:

  • Una colonna per ogni colonna in ognuna delle due tabelle, incluse le chiavi corrispondenti. Le colonne del lato destro verranno rinominate automaticamente in caso di conflitti di nomi.
  • Una riga per ogni corrispondenza tra le tabelle di input. Una corrispondenza è una riga selezionata da una tabella che ha lo stesso valore per tutti i campi on di una riga nell'altra tabella.
  • Gli attributi (chiavi di ricerca) verranno visualizzati una sola volta nella tabella di output.
  • Se kind non è specificato o kind=leftouter, oltre alle corrispondenze interne, è presente una riga per ogni riga a sinistra (e/o destra), anche se non ha corrispondenze. In tal caso, le celle di output senza corrispondenza contengono valori Null.
  • Se kind=inner, nell'output è presente una riga per ogni combinazione di righe corrispondenti da sinistra e destra.

Esempi

let FactTable=datatable(Row:string,Personal:string,Family:string) [
  "1", "Bill",   "Gates",
  "2", "Bill",   "Clinton",
  "3", "Bill",   "Clinton",
  "4", "Steve",  "Ballmer",
  "5", "Tim",    "Cook"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
  "Bill",  "Gates",   "billg",
  "Bill",  "Clinton", "billc",
  "Steve", "Ballmer", "steveb",
  "Tim",   "Cook",    "timc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
Riga Personal Famiglia Alias
1 Bill Attività di controllo billg
2 Bill Clinton billc
3 Bill Clinton billc
4 Steve Ballmer steveb
5 Tim Cuoco timc