Operatore lookup
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 i FactTable
$left
dati DimensionTable
() da (a cui fa riferimento $right
) eseguendo una ricerca di ogni coppia (,Col
) dalla tabella precedente con ogni coppia (CommonColumn
CommonColumn1
,Col2
) nella seconda tabella.
Per le differenze tra le 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 colonne dalla
$right
tabella che sono 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 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
)] (
Condizionidi rightTable)
on
Altre informazioni sulle convenzioni di sintassi.
Parametri
Nome | Tipo | Obbligatoria | Descrizione |
---|---|---|---|
LeftTable | string |
✔️ | Espressione tabella o tabulare che rappresenta la base per la ricerca. Indicata come $left . |
RightTable | string |
✔️ | Espressione tabella o tabulare usata per "popolare" nuove colonne nella tabella dei fatti. Indicata come $right . |
Attributes (Attributi) | string |
✔️ | Elenco delimitato da virgole di una o più regole che descrivono la corrispondenza delle righe da LeftTable alle righe da RightTable. Vengono valutate più regole mediante l'operatore logico and . Vedere Regole. |
kind |
string |
Determina come trattare le righe in LeftTable senza corrispondenza 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
Nel caso di "uguaglianza per valore", i nomi di colonna devono essere qualificati con la tabella proprietario applicabile denotata da $left
e $right
notazioni.
Restituisce
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 se sono presenti conflitti di nome.
- 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 corrispondenza. In tal caso, le celle di output senza corrispondenza contengono valori Null. - Se
kind=inner
, è presente una riga nell'output per ogni combinazione di righe corrispondenti da sinistra e destra.
Esempio
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 | fatturag |
2 | Bill | Clinton | fattura |
3 | Bill | Clinton | fattura |
4 | Steve | Ballmer | Steveb |
5 | Tm | Cucinare | timc |
Contenuti correlati
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per