Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Si applica a: ✅Microsoft Fabric✅
Estende le colonne di una tabella dei fatti con valori ricercati in una tabella delle dimensioni.
Ad esempio, la query seguente restituisce una tabella che estende il FactTable ($left) con i dati del DimensionTable ($right) eseguendo una ricerca. La ricerca corrisponde a ogni coppia (CommonColumn, Col1) da FactTable con ogni coppia (CommonColumn, Col2) nel DimensionTable. Per le differenze tra tabelle dei fatti e delle dimensioni, vedere tabelle dei fatti e delle dimensioni.
FactTable | lookup kind=leftouter (DimensionTable) on CommonColumn, $left.Col1 == $right.Col2
L'operatore lookup esegue un'operazione simile all'operatore join con le differenze seguenti:
- Il risultato non ripete le colonne della
$righttabella che costituiscono la base per l'operazione di join. - Sono supportati
leftoutersolo due tipi di ricerca einner, conleftouterl'impostazione predefinita. - In termini di prestazioni, il sistema presuppone per impostazione predefinita che la
$lefttabella sia la tabella più grande (fatti) e che la$righttabella sia la tabella più piccola (dimensioni). Questo è esattamente opposto al presupposto usato dall'operatorejoin. - L'operatore
lookuptrasmette automaticamente la$righttabella alla$lefttabella (essenzialmente, si comporta come sehint.broadcastfosse stato specificato). Ciò limita le dimensioni della$righttabella.
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
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, viene usato leftouter, ovvero tutte le righe vengono visualizzate nell'output con valori Null usati per i valori mancanti di RightTable colonne 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 vengono 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
ondi una riga nell'altra tabella. - I attributi (chiavi di ricerca) vengono visualizzati una sola volta nella tabella di output.
- Se
kindnon è 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.
Esempio
Nell'esempio seguente viene illustrato come eseguire un left outer join tra il FactTable e DimTable, in base ai valori corrispondenti nelle colonne Personal e Family.
let FactTable=datatable(Row:string,Personal:string,Family:string) [
"1", "Rowan", "Murphy",
"2", "Ellis", "Turner",
"3", "Ellis", "Turner",
"4", "Maya", "Robinson",
"5", "Quinn", "Campbell"
];
let DimTable=datatable(Personal:string,Family:string,Alias:string) [
"Rowan", "Murphy", "rowanm",
"Ellis", "Turner", "ellist",
"Maya", "Robinson", "mayar",
"Quinn", "Campbell", "quinnc"
];
FactTable
| lookup kind=leftouter DimTable on Personal, Family
output
| Riga | Personal | Famiglia | Alias |
|---|---|---|---|
| 1 | Sorba | Murphy | rowanm |
| 2 | Ellis | Tornitore | ellist |
| 3 | Ellis | Tornitore | ellist |
| 4 | Maya | Robinson | mayar |
| 5 | Quinn | Campbell | quinnc |
Contenuto correlato
- join broadcast
- leftouter join
- inner join
- operatore join