Operatore lookup
Si applica a: ✅Microsoft Fabric✅Azure Esplora dati✅ Azure Monitor✅Microsoft 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 $right
riferimento ) 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 einner
, conleftouter
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'operatorejoin
. - L'operatore
lookup
trasmette automaticamente la$right
tabella alla$left
tabella (essenzialmente, si comporta come sehint.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
=
(leftouter
inner
|)] (
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 okind=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 |